Всё работает. Правильно ли я, использовал способ токен?
Правильно ли использовал функцию
ini_set('session.use_only_cookies', true);
и
output_add_rewrite_var('token', $token);
А вот это нормальный способ,на 136 строке?
$tokenstr = strval(date('s')) . $salt;
А саму регистрацию нормально сделал?
А что мне дают эти токены?
А как сделать, что бы после закрытия браузера, сессия сохранялась?
<?php
ini_set('session.use_only_cookies', true);
session_start();
error_reporting(-1);
$host = 'localhost';
$db = 'token';
$user = 'root';
$pass = '';
$charset = 'utf8';
$dsn = "mysql:host=$host; dbname=$db;charset=$charset";
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
?>
<!DOCTYPE html>
<html>
<head>
<title>Токен</title>
<meta charset="utf-8">
<style>
.mudak {
color: red;
font-weight: bold;
}
</style>
</head>
<body>
<?php
if(!empty($_GET['action'])) {
if($_GET['action'] == 'exit') {
unset($_SESSION['token']);
session_destroy();
header('Location: ./index.php');
}
}
if(!empty($_SESSION['token'])) {
echo '<p>Теперь у вас есть полный доступ к сайту <a href="?action=exit">Выход</a></p>';
echo $_SESSION['token'];
die();
}
else {
echo '<p>Авторизируйтесь, что бы увидеть содержимое сайта</p>';
require_once 'auth.php';
echo '<p><strong>Или зарегистрируйтесь</strong></p>';
require_once 'registr.php';
/*
*
*
*******Начало регистрации*********
*
*
*/
if(!empty($_POST['reg'])) {
if(!empty($_POST['login']) && !empty($_POST['password'])) {
$login = $_POST['login'];
$secret = 'hhJNE63';
$password = md5($_POST['password'].$secret);
$userExists = "SELECT login FROM users WHERE login = '".$login."'";
$queryUser = $pdo->query($userExists);
$queryUser->setFetchMode(PDO::FETCH_ASSOC);
if((count($queryUser->fetchAll()) > 0)) {
echo '<p>Такой пользователь уже существует<p>';
die();
}
else {
$newUser = "INSERT INTO users(login, password) VALUES(:login, :password)";
$newUserPrepare = $pdo->prepare($newUser);
$newUserPrepare->bindValue(':login', trim($login), PDO::PARAM_STR);
$newUserPrepare->bindValue(':password', trim($password), PDO::PARAM_STR);
$newUserPrepare->execute();
echo '<p>Регистрация завершена</p>';
}
}
else {
echo '<p class="mudak">Заполните все поля</p>';
}
}
/*
*
*
*******Конец регистрации*********
*
*
*/
/*
*
*
*******Начало авторизации*********
*
*
*/
if(!empty($_POST['auth'])) {
if(!empty($_POST['login']) && !empty($_POST['password'])) {
$login = $_POST['login'];
$secret = 'hhJNE63';
$password = md5($_POST['password'].$secret);
$user = "SELECT `login`, `password` FROM users WHERE login = :login AND password = :password";
$resUser = $pdo->prepare($user);
$resUser->bindValue(':login', trim($login), PDO::PARAM_STR);
$resUser->bindValue(':password', trim($password), PDO::PARAM_STR);
$resUser->execute();
$resUser2 = $resUser->fetchAll();
if(count($resUser2) === 0){
die('Неверный логин или пароль');
}
else {
$salt = $login;
$tokenstr = strval(date('s')) . $salt;
$token = md5($tokenstr);
$_SESSION['token'] = $token;
$_SESSION['user'] = $login;
output_add_rewrite_var('token', $token);
header('Location: ./index.php');
}
}
else {
echo '<p class="mudak">Заполните все поля</p>';
}
}
/*
*
*
*******Конец авторизации*********
*
*
*/
}
?>
</body>
</html>
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть категории меню , в этих категориях должны быть привязанные к категориям товарыТовары представлены в таблице Не могу реализовать...
Работает, правильно ли сделал удаление статьи, с помощью токена?
Если сообщение текстовое, то всё нормально, а вот если HTML-сообщение, то сообщение пустое и появляется "Показать цитируемый текст" и после нажатия...