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>Выберите файл…</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);