Авторизация на токенах и регистрация

297
15 июня 2017, 07:29

Всё работает. Правильно ли я, использовал способ токен?

Правильно ли использовал функцию

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> 
READ ALSO
Помогите привязать товары к категориям Codeigniter

Помогите привязать товары к категориям Codeigniter

У меня есть категории меню , в этих категориях должны быть привязанные к категориям товарыТовары представлены в таблице Не могу реализовать...

294
$_POST запрос, суперглобальная перменная

$_POST запрос, суперглобальная перменная

Есть форма, которая отправляет данные , в экшен:

212
Удаление статьи с помощью токена

Удаление статьи с помощью токена

Работает, правильно ли сделал удаление статьи, с помощью токена?

198
Сообщения с цитатой

Сообщения с цитатой

Если сообщение текстовое, то всё нормально, а вот если HTML-сообщение, то сообщение пустое и появляется "Показать цитируемый текст" и после нажатия...

216