Добавление картинки
к постам.
В ДБ в таблицу
добавляем колонку для картинки postimg
Создаем новый файл
Image.php в папке
classes.
<?php
class Image {
public static
function uploadImage($query, $params) {
$image =
base64_encode(file_get_contents($_FILES['profileimg']['tmp_name']));
$options =
array('http'=>array(
'method'=>"POST",
'header'=>"Authorization:
Bearer cf181ec3d2fb5d75ceb796032e65368406362c79\n".
"Content-Type:
application/x-www-form-urlencoded",
'content'=>$image
));
$context =
stream_context_create($options); // stream_context_create — Создаёт
контекст потока
$imgurURL =
"https://api.imgur.com/3/image";
// проверяем
размер загужаемго изображения > 10MB
if
($_FILES['profileimg']['size'] > 10240000) {
die('Image
too big, must be 10MB or less!');
}
//print_r($_FILES);
// загрузка
имеджера
$response =
file_get_contents($imgurURL, false, $context);
$response =
json_decode($response);
echo
"<pre>";
print_r($response);
echo
"</pre>";
echo
$response->data->link;
DB::query($query,
$params);
}
}
?>
Изменяем файл
myaccount.php
<?php
include('./classes/DB.php');
include('./classes/Login.php');
if(Login::isLoggedIn())
{
$userid
= Login::isLoggedIn();
} else
{
die('Not
logged in');
}
if
(isset($_POST['uploadprofileimg'])) {
Image::uploadImage("UPDATE users SET
profileimg =:profileimg WHERE id=:userid",
array(':profileimg'=>$response->data->link,
':userid'=>$userid));
}
?>
<h1>My
account</h1>
<form
action="my-account.php" method="post"
enctype="multipart/form-data">
Upload
a profile image:
<input
type="file" name="profileimg"/>
<input
type="submit" name="uploadprofileimg"
value="Upload Image"/>
</form>
Открываем
profile.php
<?php
include('./classes/DB.php');
include('./classes/Login.php');
include('./classes/Post.php');
$username
= '';
$isFollowing
= False;
$verified
= False; // верифицирован ли пользователь
if
(isset($_GET['username'])) {
if
(DB::query('SELECT username FROM users WHERE username=:username',
array(':username'=>$_GET['username']))) {
$username
= DB::query('SELECT username FROM users WHERE username=:username',
array(':username'=>$_GET['username']))[0]['username'];
$userid
= DB::query('SELECT id FROM users WHERE username=:username',
array('username'=>$_GET['username']))[0]['id']; // id
залогиненного
$verified
= DB::query('SELECT verified FROM users WHERE username=:username',
array(':username'=>$_GET['username']))[0]['verified'];
$followerid
= Login::isLoggedin(); // Получаем id фолловера. Это
id залогиненного
//
проверяем была ли нажата кнопка follow
if
(isset($_POST['follow'])) {
//
когда не можешь быть фолловером самого
себя
if
($userid != $followerid) {
if
(!DB::query('SELECT follower_id FROM followers WHERE user_id=:userid
AND follower_id=:followerid', array(':userid'=>$userid,
':followerid'=>$followerid))) {
//
пользователь с id=6 нажимает follow и
пользователь становится верефицированным
if
($followerid == 6) {
DB::query('UPDATE users SET verified=1 WHERE
id=:userid', array(':userid'=>$userid));
}
DB::query('INSERT INTO followers VALUES (:id,
:userid, :followerid)', array(':id'=>null,':userid'=>$userid,
':followerid'=>$followerid));
//DB::query('INSERT INTO followers VALUES (\'\',
:userid, :followerid)', array(':userid'=>$userid,
':followerid'=>$followerid));
}
else {
echo 'Already following!';
}
$isFollowing = True;
}
}
//
проверяем была ли нажата кнопка unfollow
if
(isset($_POST['unfollow'])) {
//
когда не можешь быть фолловером самого
себя
if
($userid != $followerid) {
if
(DB::query('SELECT follower_id FROM followers WHERE user_id=:userid
AND follower_id=:followerid', array(':userid'=>$userid,
':followerid'=>$followerid))) {
//
пользователь с id=6 нажимает unfollow и
пользователь становится неверефицированным
if
($followerid == 6) {
DB::query('UPDATE users SET verified=0 WHERE
id=:userid', array(':userid'=>$userid));
}
DB::query('DELETE FROM followers WHERE
user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid));
}
$isFollowing = False;
}
}
if
(DB::query('SELECT follower_id FROM followers WHERE user_id=:userid
AND follower_id=:followerid', array(':userid'=>$userid,
':followerid'=>$followerid))) {
$isFollowing = True;
}
//
Отправка формы
if
(isset($_POST['post'])) {
if
($_FILES['postimg']['size'] == 0) {
Post::createPost($_POST['postbody'],
Login::isLoggedIn(), $userid);
}
else {
Post::createImgPost($_POST['postbody'],
Login::isLoggedIn(), $userid);
}
}
//
лайки
if
(isset($_GET['postid'])) {
Post::likePost($_GET['postid'], $followerid);
}
$posts
= Post::displayPosts($userid, $username, $followerid);
}
else {
die('User
not found!');
}
}
?>
<h1><?php
echo $username; ?>'s' Profile<?php if ($verified) { echo ' -
Verified'; } ?> </h1>
<form
action="profile.php?username=<?php echo $username; ?>"
method="post">
<?php
//
кнопка follow не будет отображаться для
своего собственного профайла
if
($userid != $followerid) {
if
($isFollowing) {
echo
'<input type="submit" name="unfollow"
value="Unfollow"/>';
}
else {
echo
'<input type="submit" name="follow"
value="Follow"/>';
}
}
?>
</form>
<form
action="profile.php?username=<?php echo $username; ?>"
method="post" enctype="multipart/form-data">
<textarea
name="postbody" cols="80" rows="8"></textarea>
<br />
Upload
an image:
<input
type="file" name="postimg"/>
<input
type="submit" name="post" value="Post"/>
</form>
<div
class="posts">
<?php
echo $posts; ?>
</div>
Идем в
classes/Post.php
<?php
class
Post {
public
static function createPost($postbody, $loggedInUserId,
$profileUserId) {
//
валидация формы
if
(strlen($postbody) > 160 || strlen($postbody) < 1) {
die('Incorrect
length!');
}
//
чтобы ты мог отправлять посты только
от своего имени!
if
($loggedInUserId == $profileUserId) {
//
0 - кол-во лайков по умолчанию
DB::query('INSERT INTO posts VALUES (:id,
:postbody, NOW(), :userid, 0, \'\')', array(':id'=>null,
':postbody'=>$postbody, ':userid'=>$profileUserId));
}
else {
die('Incorrect
user!');
}
}
public
static function createImgPost($postbody, $loggedInUserId,
$profileUserId) {
//
валидация формы
if
(strlen($postbody) > 160) {
die('Incorrect
length!');
}
//
чтобы ты мог отправлять посты только
от своего имени!
if
($loggedInUserId == $profileUserId) {
//
0 - кол-во лайков по умолчанию
DB::query('INSERT INTO posts VALUES (:id,
:postbody, NOW(), :userid, 0, \'\')', array(':id'=>null,
':postbody'=>$postbody, ':userid'=>$profileUserId));
$postid
= DB::query('SELECT id FROM posts WHERE user_id=:user_id ORDER BY id
DESC LIMIT 1', array(':user_id'=>$loggedInUserId))[0]['id'];
return
$postid;
}
else {
die('Incorrect
user!');
}
}
public
static function likePost($postId, $likerId) {
if
(!DB::query('SELECT user_id FROM post_likes WHERE post_id=:postid AND
user_id=:userid', array(':postid'=>$postId, ':userid'=>$likerId)))
{
DB::query('UPDATE posts SET likes=likes+1 WHERE
id=:postid', array(':postid'=>$postId));
DB::query('INSERT INTO post_likes VALUES (:id,
:postid, :userid)', array(':id'=>null, ':postid'=>$postId,
':userid'=>$likerId));
}
else {
DB::query('UPDATE posts SET likes=likes-1 WHERE
id=:postid', array(':postid'=>$postId));
DB::query('DELETE FROM post_likes WHERE
post_id=:postid AND user_id=:userid', array(':postid'=>$postId,
':userid'=>$likerId));
}
}
public
static function displayPosts($userid, $username, $loggedInUserId) {
//
посты
$dbposts
= DB::query('SELECT * FROM posts WHERE user_id=:userid ORDER BY id
DESC', array(':userid'=>$userid));
$posts
= "";
foreach($dbposts
as $p) {
if
(!DB::query('SELECT post_id FROM post_likes WHERE post_id=:postid AND
user_id=:userid', array(':postid'=>$p['id'],
':userid'=>$loggedInUserId))) {
//print_r($p);
$posts
.= htmlspecialchars($p['body'])."
<form
action='profile.php?username=$username&postid=".$p['id']."'
method='post'>
<input
type='submit' name='like' value='Like'/>
<span>".$p['likes']." likes</span>
</form>
<hr
/><br />";
}
else {
$posts
.= htmlspecialchars($p['body'])."
<form
action='profile.php?username=$username&postid=".$p['id']."'
method='post'>
<input
type='submit' name='unlike' value='Unlike'/>
<span>".$p['likes']." likes</span>
</form>
<hr
/><br />";
}
}
return
$posts;
}
}
?>
В profile.php
пишем.
<?php
include('./classes/DB.php');
include('./classes/Login.php');
include('./classes/Post.php');
$username = '';
$isFollowing = False;
$verified = False; // верифицирован ли пользователь
if (isset($_GET['username'])) {
if (DB::query('SELECT username FROM users WHERE
username=:username', array(':username'=>$_GET['username']))) {
$username = DB::query('SELECT username FROM users WHERE
username=:username',
array(':username'=>$_GET['username']))[0]['username'];
$userid = DB::query('SELECT id FROM users WHERE
username=:username', array('username'=>$_GET['username']))[0]['id'];
// id залогиненного
$verified = DB::query('SELECT verified FROM users WHERE
username=:username',
array(':username'=>$_GET['username']))[0]['verified'];
$followerid = Login::isLoggedin(); // Получаем id
фолловера. Это id залогиненного
// проверяем была ли нажата кнопка
follow
if (isset($_POST['follow'])) {
// когда не можешь быть фолловером
самого себя
if ($userid != $followerid) {
if (!DB::query('SELECT follower_id FROM followers WHERE
user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid))) {
// пользователь с id=6 нажимает
follow и пользователь становится
верефицированным
if ($followerid == 6) {
DB::query('UPDATE users SET verified=1 WHERE
id=:userid', array(':userid'=>$userid));
}
DB::query('INSERT INTO followers VALUES (:id,
:userid, :followerid)', array(':id'=>null,':userid'=>$userid,
':followerid'=>$followerid));
//DB::query('INSERT INTO followers VALUES (\'\',
:userid, :followerid)', array(':userid'=>$userid,
':followerid'=>$followerid));
} else {
echo 'Already following!';
}
$isFollowing = True;
}
}
// проверяем была ли нажата кнопка
unfollow
if (isset($_POST['unfollow'])) {
// когда не можешь быть фолловером
самого себя
if ($userid != $followerid) {
if (DB::query('SELECT follower_id FROM followers WHERE
user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid))) {
// пользователь с id=6 нажимает
unfollow и пользователь становится
неверефицированным
if ($followerid == 6) {
DB::query('UPDATE users SET verified=0 WHERE
id=:userid', array(':userid'=>$userid));
}
DB::query('DELETE FROM followers WHERE
user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid));
}
$isFollowing = False;
}
}
if (DB::query('SELECT follower_id FROM followers WHERE
user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid))) {
$isFollowing = True;
}
// Отправка формы
if (isset($_POST['post'])) {
if ($_FILES['postimg']['size'] == 0) {
Post::createPost($_POST['postbody'],
Login::isLoggedIn(), $userid);
} else {
$postid = Post::createImgPost($_POST['postbody'],
Login::isLoggedIn(), $userid);
Image::uploadImg("UPDATE posts SET
postimg=:postimg WHERE id=:postid", array(':postimg'=>$postimg,
':postid'=>$postid));
}
}
// лайки
if (isset($_GET['postid'])) {
Post::likePost($_GET['postid'], $followerid);
}
$posts = Post::displayPosts($userid, $username, $followerid);
} else {
die('User not found!');
}
}
?>
<h1><?php
echo $username; ?>'s' Profile<?php if ($verified) { echo ' -
Verified'; } ?> </h1>
<form
action="profile.php?username=<?php echo $username; ?>"
method="post">
<?php
// кнопка follow не будет отображаться для
своего собственного профайла
if ($userid != $followerid) {
if ($isFollowing) {
echo '<input type="submit" name="unfollow"
value="Unfollow"/>';
} else {
echo '<input type="submit" name="follow"
value="Follow"/>';
}
}
?>
</form>
<form
action="profile.php?username=<?php echo $username; ?>"
method="post" enctype="multipart/form-data">
<textarea name="postbody" cols="80"
rows="8"></textarea> <br />
Upload an image:
<input type="file" name="postimg"/>
<input type="submit" name="post"
value="Post"/>
</form>
<div
class="posts">
<?php echo $posts; ?>
</div>
classes/Image.php
делаем имя поля изображения
динамической переменной
<?php
class
Image {
public static function uploadImage($formname,
$query, $params) {
$image =
base64_encode(file_get_contents($_FILES[$formname]['tmp_name']));
$options = array('http'=>array(
'method'=>"POST",
'header'=>"Authorization: Bearer
cf181ec3d2fb5d75ceb796032e65368406362c79\n".
"Content-Type:
application/x-www-form-urlencoded",
'content'=>$image
));
$context = stream_context_create($options); //
stream_context_create — Создаёт контекст потока
$imgurURL = "https://api.imgur.com/3/image";
// проверяем размер загужаемго
изображения > 10MB
if ($_FILES[$formname]['size'] > 10240000) {
die('Image too big, must be 10MB or less!');
}
//print_r($_FILES);
// загрузка имеджера
$response = file_get_contents($imgurURL, false,
$context);
$response = json_decode($response);
echo "<pre>";
print_r($response);
echo "</pre>";
echo $response->data->link;
DB::query($query, $params);
}
}
?>
Идем
в my-account.php
<?php
include('./classes/DB.php');
include('./classes/Login.php');
if(Login::isLoggedIn())
{
$userid = Login::isLoggedIn();
}
else {
die('Not logged in');
}
if
(isset($_POST['uploadprofileimg'])) {
Image::uploadImage('profileimg', "UPDATE users SET
profileimg =:profileimg WHERE id=:userid",
array(':profileimg'=>$response->data->link,
':userid'=>$userid));
}
?>
<h1>My
account</h1>
<form
action="my-account.php" method="post"
enctype="multipart/form-data">
Upload a profile image:
<input type="file" name="profileimg"/>
<input type="submit" name="uploadprofileimg"
value="Upload Image"/>
</form>
В profile.php
<?php
include('./classes/DB.php');
include('./classes/Login.php');
include('./classes/Post.php');
include('./classes/Image.php');
$username = '';
$isFollowing = False;
$verified = False; // верифицирован ли пользователь
if (isset($_GET['username'])) {
if (DB::query('SELECT username FROM users WHERE
username=:username', array(':username'=>$_GET['username']))) {
$username = DB::query('SELECT username FROM users WHERE
username=:username',
array(':username'=>$_GET['username']))[0]['username'];
$userid = DB::query('SELECT id FROM users WHERE
username=:username', array('username'=>$_GET['username']))[0]['id'];
// id залогиненного
$verified = DB::query('SELECT verified FROM users WHERE
username=:username',
array(':username'=>$_GET['username']))[0]['verified'];
$followerid = Login::isLoggedin(); // Получаем id
фолловера. Это id залогиненного
// проверяем была ли нажата кнопка
follow
if (isset($_POST['follow'])) {
// когда не можешь быть фолловером
самого себя
if ($userid != $followerid) {
if (!DB::query('SELECT follower_id FROM followers WHERE
user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid))) {
// пользователь с id=6 нажимает
follow и пользователь становится
верефицированным
if ($followerid == 6) {
DB::query('UPDATE users SET verified=1 WHERE
id=:userid', array(':userid'=>$userid));
}
DB::query('INSERT INTO followers VALUES (:id,
:userid, :followerid)', array(':id'=>null,':userid'=>$userid,
':followerid'=>$followerid));
//DB::query('INSERT INTO followers VALUES (\'\',
:userid, :followerid)', array(':userid'=>$userid,
':followerid'=>$followerid));
} else {
echo 'Already following!';
}
$isFollowing = True;
}
}
// проверяем была ли нажата кнопка
unfollow
if (isset($_POST['unfollow'])) {
// когда не можешь быть фолловером
самого себя
if ($userid != $followerid) {
if (DB::query('SELECT follower_id FROM followers WHERE
user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid))) {
// пользователь с id=6 нажимает
unfollow и пользователь становится
неверефицированным
if ($followerid == 6) {
DB::query('UPDATE users SET verified=0 WHERE
id=:userid', array(':userid'=>$userid));
}
DB::query('DELETE FROM followers WHERE
user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid));
}
$isFollowing = False;
}
}
if (DB::query('SELECT follower_id FROM followers WHERE
user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid))) {
$isFollowing = True;
}
// Отправка формы
if (isset($_POST['post'])) {
if ($_FILES['postimg']['size'] == 0) {
Post::createPost($_POST['postbody'],
Login::isLoggedIn(), $userid);
} else {
$postid = Post::createImgPost($_POST['postbody'],
Login::isLoggedIn(), $userid);
Image::uploadImage('postimg',
"UPDATE posts SET postimg=:postimg WHERE id=:postid",
array(':postid'=>$postid));
}
}
// лайки
if (isset($_GET['postid'])) {
Post::likePost($_GET['postid'], $followerid);
}
$posts = Post::displayPosts($userid, $username, $followerid);
} else {
die('User not found!');
}
}
?>
<h1><?php
echo $username; ?>'s' Profile<?php if ($verified) { echo ' -
Verified'; } ?> </h1>
<form
action="profile.php?username=<?php echo $username; ?>"
method="post">
<?php
// кнопка follow не будет отображаться для
своего собственного профайла
if ($userid != $followerid) {
if ($isFollowing) {
echo '<input type="submit" name="unfollow"
value="Unfollow"/>';
} else {
echo '<input type="submit" name="follow"
value="Follow"/>';
}
}
?>
</form>
<form
action="profile.php?username=<?php echo $username; ?>"
method="post" enctype="multipart/form-data">
<textarea name="postbody" cols="80"
rows="8"></textarea> <br />
Upload an image:
<input type="file" name="postimg"/>
<input type="submit" name="post"
value="Post"/>
</form>
<div
class="posts">
<?php echo $posts; ?>
</div>
Файл my-account.php
<?php
include('./classes/DB.php');
include('./classes/Login.php');
if(Login::isLoggedIn())
{
$userid = Login::isLoggedIn();
}
else {
die('Not logged in');
}
if
(isset($_POST['uploadprofileimg'])) {
Image::uploadImage('profileimg', "UPDATE
users SET profileimg =:profileimg WHERE id=:userid",
array(':userid'=>$userid));
}
?>
<h1>My
account</h1>
<form
action="my-account.php" method="post"
enctype="multipart/form-data">
Upload a profile image:
<input type="file"
name="profileimg"/>
<input type="submit"
name="uploadprofileimg" value="Upload Image"/>
</form>
В classes/Image.php
<?php
class
Image {
public static function uploadImage($formname,
$query, $params) {
$image =
base64_encode(file_get_contents($_FILES[$formname]['tmp_name']));
$options = array('http'=>array(
'method'=>"POST",
'header'=>"Authorization: Bearer
cf181ec3d2fb5d75ceb796032e65368406362c79\n".
"Content-Type:
application/x-www-form-urlencoded",
'content'=>$image
));
$context = stream_context_create($options); //
stream_context_create — Создаёт контекст потока
$imgurURL = "https://api.imgur.com/3/image";
// проверяем размер загужаемго
изображения > 10MB
if ($_FILES[$formname]['size'] > 10240000) {
die('Image too big, must be 10MB or less!');
}
//print_r($_FILES);
// загрузка имеджера
$response = file_get_contents($imgurURL, false,
$context);
$response = json_decode($response);
$preparams
= array($formname=>$response->data->link);
$params
= $preparams + $params;
DB::query($query, $params);
}
}
?>
Отобразим
картинку в посте. Идем в classes/Post.php
<?php
class
Post {
public static function createPost($postbody,
$loggedInUserId, $profileUserId) {
// валидация формы
if (strlen($postbody) > 160 ||
strlen($postbody) < 1) {
die('Incorrect length!');
}
// чтобы ты мог отправлять
посты только от своего имени!
if ($loggedInUserId == $profileUserId) {
// 0 - кол-во лайков по
умолчанию
DB::query('INSERT INTO posts VALUES (:id,
:postbody, NOW(), :userid, 0, \'\')', array(':id'=>null,
':postbody'=>$postbody, ':userid'=>$profileUserId));
} else {
die('Incorrect user!');
}
}
public static function createImgPost($postbody,
$loggedInUserId, $profileUserId) {
// валидация формы
if (strlen($postbody) > 160) {
die('Incorrect length!');
}
// чтобы ты мог отправлять
посты только от своего имени!
if ($loggedInUserId == $profileUserId) {
// 0 - кол-во лайков по
умолчанию
DB::query('INSERT INTO posts VALUES (:id,
:postbody, NOW(), :userid, 0, \'\')', array(':id'=>null,
':postbody'=>$postbody, ':userid'=>$profileUserId));
$postid = DB::query('SELECT id FROM posts
WHERE user_id=:user_id ORDER BY id DESC LIMIT 1',
array(':user_id'=>$loggedInUserId))[0]['id'];
return $postid;
} else {
die('Incorrect user!');
}
}
public static function likePost($postId, $likerId)
{
if (!DB::query('SELECT user_id FROM post_likes
WHERE post_id=:postid AND user_id=:userid', array(':postid'=>$postId,
':userid'=>$likerId))) {
DB::query('UPDATE posts SET likes=likes+1
WHERE id=:postid', array(':postid'=>$postId));
DB::query('INSERT INTO post_likes VALUES
(:id, :postid, :userid)', array(':id'=>null, ':postid'=>$postId,
':userid'=>$likerId));
} else {
DB::query('UPDATE posts SET likes=likes-1
WHERE id=:postid', array(':postid'=>$postId));
DB::query('DELETE FROM post_likes WHERE
post_id=:postid AND user_id=:userid', array(':postid'=>$postId,
':userid'=>$likerId));
}
}
public static function displayPosts($userid,
$username, $loggedInUserId) {
// посты
$dbposts = DB::query('SELECT * FROM posts WHERE
user_id=:userid ORDER BY id DESC', array(':userid'=>$userid));
$posts = "";
foreach($dbposts as $p) {
if (!DB::query('SELECT post_id FROM
post_likes WHERE post_id=:postid AND user_id=:userid',
array(':postid'=>$p['id'], ':userid'=>$loggedInUserId))) {
//print_r($p);
$posts .= "<img
src='".$p['postimg']."'>".htmlspecialchars($p['body'])."
<form
action='profile.php?username=$username&postid=".$p['id']."'
method='post'>
<input type='submit' name='like'
value='Like'/>
<span>".$p['likes']."
likes</span>
</form>
<hr /><br />";
} else {
$posts .= "<img
src='".$p['postimg']."'>".htmlspecialchars($p['body'])."
<form
action='profile.php?username=$username&postid=".$p['id']."'
method='post'>
<input type='submit'
name='unlike' value='Unlike'/>
<span>".$p['likes']."
likes</span>
</form>
<hr /><br />";
}
}
return $posts;
}
}
?>
Комментариев нет:
Отправить комментарий