четверг, 28 сентября 2017 г.

Соцсеть. Обновлние фотографий в профили пользователей. Урок 21.

Обновление фото профиля.


В БД в таблице users добавим поле profileimg varchar 255 allow null

Идем в файл create-account.php и меняем добавляемые данные.
Вносим пустую строку.

<?php
include('classes/DB.php');

if(isset($_POST['createaccount'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
if(!DB::query('SELECT username FROM users WHERE username=:username', array(':username'=>$username))) {
if(strlen($username) >= 3 && strlen($username) <= 32) {
if(preg_match('/[a-zA-Z0-9_]+/', $username)) {
if(strlen($password) >= 6 && strlen($password) <= 60) {
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
if(!DB::query('SELECT email FROM users WHERE email=:email', array(':email'=>$email))) {
DB::query('INSERT INTO users VALUES (:id, :username, :password, :email, \'0\', \'\')', array(':id'=>null, ':username'=>$username, ':password'=>password_hash($password, PASSWORD_BCRYPT), ':email'=>$email));
echo "Success!";
} else {
echo 'Email in use!';
}
} else {
echo 'Invalid email!';
}
} else {
echo 'Invalid password!';
}
} else {
echo 'Invalid username!';
}
} else {
echo 'Invalid username!';
}
} else {
echo 'User already exists!';
}
}
?>

<h1>Register</h1>
<form action="create-account.php" method="post">
<p><input type="text" name="username" placeholder="Username"/></p>
<p><input type="password" name="password" placeholder="Password"/></p>
<p><input type="email" name="email" placeholder="someone@somesite.com"/></p>
<input type="submit" name="createaccount" value="Create Account"/>
</form>

Регистрируем нового пользователя для проверки по адресу: http://newsocial.loc/create-account.php
В поле картинка записывается пустая строка.

В файле 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 = 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("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>

Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html