Разработка веб-приложения отложенного постинга в социальные сети

Создание веб-приложения, в котором можно создавать пост, добавлять изображение, выбирать дату и время публикации, сохранять, редактировать уже созданную публикацию и отправлять ее в социальную сеть. Разработка структуры и обобщенного алгоритма приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 14.12.2019
Размер файла 3,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

}

.inputfile + label {

display: inline-block;

}

.inputfile + label {

cursor: pointer; /* "hand" cursor */

}

.message:focus,

.textbox:focus{

outline:none;

border:rgba(24,149,215,1) 2px solid;

color:rgba(24,149,215,1);

}

/* Стили текстового поля */

.message{

background: rgba(255, 255, 255, 0.4);

width:100%;

height: 120px;

border:rgba(0,0,0,.3) 2px solid;

box-sizing:border-box;

-moz-border-radius: 3px;

font-size:18px;

font-family: 'Open Sans', sans-serif;

-webkit-border-radius: 3px;

border-radius: 3px;

display:block;

padding:10px;

overflow:hidden;

}

/* Базовые стили кнопки */

.button{

height:50px;

width:100%;

border-radius:3px;

border:rgba(0,0,0,.3) 0px solid;

box-sizing:border-box;

padding:10px;

background:#90c843;

color:#FFF;

font-family: 'Open Sans', sans-serif;

font-weight:400;

font-size: 16pt;

transition:background.4s;

cursor:pointer;

}

/* Изменение фона кнопки при наведении */

.button:hover{

background:#80b438;

}

th {

max-width: 25em;

font-weight: normal;

font-size: 14px;

color: white;

padding: 10px 12px;

background: rgba(44, 204, 76,.8);

}

td {

font-size: 0.7em;

max-width: 1em;

color: #0079f2;

border-top: 1px solid white;

padding: 10px 12px;

background: rgba(44, 204, 76,.4);

transition:.3s;

}

tr:hover td {

background: rgba(44, 204, 76,.2);

}

h4 {

display: block;

margin-block-start: 0.5em;

margin-block-end: 0.5em;

margin-inline-start: 0px;

margin-inline-end: 0px;

font-weight: bold;

}

}

ПРИЛОЖЕНИЕ 3

Листинг scrypt.js

var inputs = document.querySelectorAll('.inputfile');

Array.prototype.forEach.call(inputs, function(input)

{

var label = input.nextElementSibling,

labelVal = label.innerHTML;

input.addEventListener('change', function(e)

{

var fileName = '';

if(this.files && this.files.length > 1)

fileName = (this.getAttribute('data-multiple-caption') || '').replace('{count}', this.files.length);

else

fileName = e.target.value.split('\\').pop();

if(fileName)

label.querySelector('span').innerHTML = fileName;

else

label.innerHTML = labelVal;

});

});

// get the iso time string formatted for usage in an input['type="datetime-local"']

var tzoffset = (new Date()).getTimezoneOffset() * 60000;

var localISOTime = (new Date(Date.now() - tzoffset)).toISOString().slice(0,-1);

var localISOTimeWithoutSeconds = localISOTime.slice(0,16);

var dtlInput = document.querySelector('input[type="datetime-local"]');

dtlInput.value = localISOTime.slice(0,16);

ПРИЛОЖЕНИЕ 4

Листинг index.php

<?php

//phpinfo();

//require("top.html");

Error_Reporting(1+2+4);

$uploaddir = "/home/u/ustuggazru/vkupload/public_html/files/";

$dbconn = mysqli_connect("localhost", "ustuggazru_objec", "mykuku", "ustuggazru_objec") or die("Could not connect: ". mysql_error());

//$dbobject = mysqli_select_db('ustuggazru_objec', $dbconn) or die ('Не удалось выбрать базу ustuggazru_objec: '. mysql_error());

$NowDate=mktime();

if(isset($_GET['deletepost'])){

$deletepost=htmlspecialchars(stripslashes($_GET['deletepost']));

if(!is_numeric($deletepost)){

$deletepost=0;

}else{

$query = "DELETE FROM otlozhpost WHERE idpost=".$deletepost;

$resultQuery = mysqli_query($dbconn, $query);

}

}

if($_POST['sub']&&$_POST['textmessage']){

// проведем проверку данных и сохраним в базу.

if(isset($_POST['textmessage'])){$textmessage=htmlspecialchars(stripslashes($_POST['textmessage']));}

if(isset($_POST['timepost'])){$timepost=htmlspecialchars(stripslashes($_POST['timepost']));}

$file_url="";

if(isset($_FILES['filejpg'])){

$uploadfile = $uploaddir. basename($_FILES['filejpg']['name']);

if (move_uploaded_file($_FILES['filejpg']['tmp_name'], $uploadfile)) {

//echo "Файл корректен и был успешно загружен.\n";

$file_url=$_FILES['filejpg']['name'];

}

else {

//echo "Возможная атака с помощью файловой загрузки!\n";

}

//print_r($_FILES);

}

// если пост редактируется, то обновляем, если нет - вставляем новую запись

if(isset($_POST['editpostid'])){

$editpostid=htmlspecialchars(stripslashes($_POST['editpostid']));

$query = "UPDATE otlozhpost SET post='".$textmessage."', img='".$file_url."', timepost='".$timepost."' WHERE idpost=".$editpostid;

$resultQuery = mysqli_query($dbconn, $query);

}else{

$query = "INSERT INTO otlozhpost(post, img, timepost) VALUES ('".$textmessage."', '".$file_url."', '".$timepost."')";

$resultQuery = mysqli_query($dbconn, $query);

}

}

echo "

<div>";

$editpost=0;

if(isset($_GET['editpost'])){$editpost=htmlspecialchars(stripslashes($_GET['editpost']));}

echo "

<form enctype='multipart/form-data' method='post'>

";

if(isset($_POST['editpost'])){$tPost=$_POST['editpost'];}

if(isset($_POST['timepost'])){$tTimePost=$_POST['timepost'];}

if(isset($_POST['filejpg'])){$tImg=$_POST['filejpg'];}

if($editpost!= 0){

echo "<input type='hidden' name='editpostid' value='".$editpost."'>";

$query = "select post, img, DATE_FORMAT(timepost, '%Y-%m-%dT%H:%i') from otlozhpost WHERE idpost=".$editpost;

$resultQuery = mysqli_query($dbconn, $query);

if($temp = mysqli_fetch_array($resultQuery)){

list($tPost, $tImg,$tTimePost)=$temp;

}

}

echo "

<link rel='stylesheet' href='style.css'>

<meta name='viewport' content='width=device-width, initial-scale=1.0'>

<div class='container'>

<h4>Введите текст</h4>

<textarea rows='10' cols='45' class='message' name='textmessage'>".$tPost."</textarea>

<h4>Изображение для поста</h4>

<input type='file' value='".$tImg."' class='inputfile' id='file' name='filejpg' data-multiple-caption='{count} files selected' multiple />

<label for='file'><span>Выберите файл&hellip;</span></label>

<h4>Установите дату и время публикации</h4>

<input type='datetime-local' class='textbox' name='timepost' value='".$tTimePost."' max='9999-12-31'>

<input type='submit' class='button' name='sub' value='Отправить'>

</div>

<h4>Имеющиеся посты</h4>

<table>

<tr><th>Текст поста</th><th>Ссылка на картинку</th><th>Время поста</th><th>DEL</th></tr>

";

$query = "select idpost, post, img, DATE_FORMAT(timepost, '%d.%m.%Y %H:%i') from otlozhpost ORDER BY timepost";

$resultQuery = mysqli_query($dbconn, $query);

while($temp = mysqli_fetch_array($resultQuery)){

list($tIdPost, $tPost, $tImg,$tTimePost)=$temp;

echo "<tr><td><a href='?editpost=".$tIdPost."'>".$tPost."</a></td><td><a href='/files/".$tImg."'>".$tImg."</a></td><td>".$tTimePost."</td><td><a href='?deletepost=".$tIdPost."'><img class='del' src='img/cancel.png'></a></td></tr>";

}

echo "</table></div>

<script type='text/javascript' src='js/script.js'></script>";

mysqli_close($dbconn);

ПРИЛОЖЕНИЕ 5

Листинг cronpost.php

<?php

//phpinfo();

//require("top.html");

Error_Reporting(1+2+4);

$uploaddir = "/home/u/ustuggazru/vkupload/public_html/files/";

$token = "558331d85bd2c20c54bc2d483c8c78db26b2d60d22be9fa477b6e334e136e39f9c24110b9768c889c818e"; //наш токен вставить из полученного запроса

$owner_id = "45289115"; // указываем id пользователя, к которому есть доступ - свой ID!

//Нужно зайти https://vk.com/editapp?act=create

//Под собой соотвественно. Выбрать Standalone-приложение и нажать Подключить

//Далее в настройки и там посмотреть ID приложения

//строка для получения кода доступа - где client_id=<CLIENTID> - ID созданного приложения

//https://oauth.vk.com/authorize?client_id=<CLIENTID>&scope=photos,friends,wall,groups,offline&redirect_uri=https://oauth.vk.com/blank.html&response_type=token

//вставляем в браузер и запускаем, получаем строку ниже

//отсюда копируем access_token и вставляем в переменную $token

//https://oauth.vk.com/blank.html#access_token=<ТУТ ТОКЕН БУДЕТ>&expires_in=0&user_id=3560536

$dbconn = mysqli_connect("localhost", "ustuggazru_objec", "mykuku", "ustuggazru_objec") or die("Could not connect: ". mysql_error());

//$dbobject = mysqli_select_db('ustuggazru_objec', $dbconn) or die ('Не удалось выбрать базу ustuggazru_objec: '. mysql_error());

// возьмем пост в интервале, в котором будет запускаться скрипт cron - учитывается то, что пост будет размещен ПОЗЖЕ! ровно во время, указанное в посту.

$minutes=5;

$query = "select idpost, post, img, UNIX_TIMESTAMP(timepost) from otlozhpost WHERE timepost < DATE_ADD(NOW(), INTERVAL ".$minutes." MINUTE) and timepost > NOW() and info is null ORDER BY timepost";

$resultQuery = mysqli_query($dbconn, $query);

while($temp = mysqli_fetch_array($resultQuery)){

list($tIdPost, $tPost, $tImg, $tTimePost)=$temp;

// теперь выкладываем пост.

///Получаем разрешение на загрузку картинки Вконтакте

$getwall = 'https://api.vk.com/method/photos.getWallUploadServer?group_id='.$owner_id.'&access_token='.$token."&v=5.95";

$dl = file_get_contents($getwall);

$dl = json_decode($dl); ///Декодируем json

$dl = $dl->response->upload_url; ///Получаем ссылку загрузки от Вконтакте

$file = new CURLFile(realpath("/home/u/ustuggazru/vkupload/public_html/files/".$tImg)); ///Загружаем картинку

$ch = curl_init($dl);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => $file));

$data = curl_exec($ch);

curl_close($ch);

///Получаем данные для сохранения картинки

$fot = $data; ///Получаем данные из массива

$fot = json_decode($data); ///Декодируем json

$fot = $fot->photo; ///Получаем данные из массива

$hash = json_decode($data); ///Декодируем json

$hash = $hash->hash; ///Получаем данные из массива

$serv = json_decode($data); ///Декодируем json

$serv = $serv->server; ///Получаем данные из массива

///Сохраняем фото на сервер Вконтакте

$savephoto = 'https://api.vk.com/method/photos.saveWallPhoto?group_id='.$owner_id.'&hash='.$hash.'&server='.$serv.'&photo='.$fot.'&access_token='.$token."&v=5.95";

$result = file_get_contents($savephoto);

$fok = json_decode($result); ///Декодируем json

$fok = $fok->response[0]->id; ///Получаем данные из массива

$VKquery = file_get_contents("https://api.vk.com/method/wall.post?owner_id=".$owner_id."&message=".urlencode($tPost)."&attachments=photo".$owner_id."_".$fok."&publish_date=".$tTimePost."&from_group=0&v=5.69&access_token=".$token);

@$VKquery['response']; //выдераем только response из ответа АПИ

$VKquery = str_replace(array('{"response":', '}'),'',$VKquery); // Вырезаем всё не нужное, оставляем только ИД сообщения

$VKquery = "ALL_OK, comment_id=".$VKquery;

echo "$VKquery"; // эту информацию при запуске в кроне никто не увидит, НО ее можно кидать в какой-то текст или размещать в базу. В общем это уже на откуп фантазии дальнейшей разработки.

// добавил внесение в базу информации о посте

$query1 = "UPDATE otlozhpost SET info='".$VKquery."'' WHERE idpost=".$tIdPosts;

$resultQuery1 = mysqli_query($dbconn, $query1);

}

mysqli_close($dbconn);

Размещено на Allbest.ru


Подобные документы

  • Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.

    курсовая работа [949,7 K], добавлен 22.02.2015

  • Разработка приложения, которое будет выполнять функции показа точного времени и точной даты. Определение дополнительных функций разработанного приложения. Рассмотрение основных этапов создания программного продукта. Результаты тестирования приложения.

    курсовая работа [2,2 M], добавлен 14.04.2019

  • Разработка приложений для смартфонов на ОС Android для сети аптек "Фармация". Архитектура операционной системы Android. Архитектура и реализация приложения. Его функциональность. Описание работы мобильного приложения. Расчет затрат на создание продукта.

    дипломная работа [1,6 M], добавлен 17.06.2017

  • Характеристика объекта автоматизации. Создание многоуровневой архитектуры приложения, отладка метода безошибочной идентификации пользователей системы. Разработка нестандартного метода преобразования объектов базы данных в объекты классов приложения.

    курсовая работа [395,4 K], добавлен 28.04.2015

  • Основные инструменты построения Web-приложения. Язык сценариев PHP. Системный анализ предметной области базы данных. Коды SQL запросов на создание таблиц. Разработка Web-приложения. Описание функциональности модулей. Система управления содержимым статей.

    курсовая работа [4,8 M], добавлен 28.04.2014

  • Технология создания многопоточных приложений в современных системах программирования с использованием языка C# в Visual Studio.NET. Разработка алгоритма и структуры программы. Описание и особенности тестирования приложения с разным количеством потоков.

    курсовая работа [773,0 K], добавлен 14.03.2013

  • Область применения и требования создаваемого Web-приложения. Требования к техническому и программному обеспечению. Разработка структуры Web-приложения и выбор средств программной реализации. Программная реализация Web-приложения. Структура базы данных.

    дипломная работа [1,4 M], добавлен 03.06.2014

  • Особенности настройки корпоративной сети предприятия. Разработка приложения, обеспечивающего эффективную работу клиент-серверной сети железнодорожной кассы. Защита от несанкционированного доступа, специфика шифрования паролей и ряд других средств защиты.

    курсовая работа [5,9 M], добавлен 30.01.2014

  • Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.

    курсовая работа [1,6 M], добавлен 19.04.2017

  • Мультимедийное представление информации. Разработка структуры сайта, макетов страниц, серверной логики и компьютерного кода, интерфейса. Описание шагов для размещения презентации в сети интернет. Затраты на разработку приложения и экономический эффект.

    дипломная работа [539,0 K], добавлен 18.10.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.