Cookie потерян между страницами

1

Я столкнулся с проблемой, когда cookie устанавливается в одном методе класса, а другим способом тот же файл cookie не определен. Чтобы сделать это более понятным, вот код первого метода:

public function checklogpass($name,$psw) 
{

    try {
        $pdo = new PDO('mysql:host=localhost;dbname=informal','vad','6989');

        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

        $pdo->exec('SET NAMES "utf8"');
    }
    catch(PDOException $e) {

        echo $e->getMessage();
    }

    $sql = 'SELECT login,password FROM users WHERE login = :name AND password = :psw';

    $stmt = $pdo->prepare($sql);

    $stmt->bindValue(':name',$name);
    $stmt->bindValue(':psw',$psw);
    $stmt->execute();

    $row = $stmt->fetch();

    if (isset($name) && isset($psw)) {

        if($name == $row['login'] && $psw == $row['password']) {

            setcookie("log",$name,time()+3600);
            header('Location: /OpenS/app/auth/checkin.php');

        } else {

            $_SESSION['errors'] = 'Failed login or password';
            header('Location: /OpenS/app/views/form.php');
        }
    }

} 

И этот другой метод другого класса:

public function getUser()
{
    if (isset($_COOKIE["log"])){

        return $_COOKIE["log"];

        header('Location: /OpenS/app/views/home.php');

    } else {

         $_SESSION['notify'] = 'You are not logged in';

         header('Location: /OpenS/app/views/home.php');
    }
}

Когда я ввожу неправильное имя пользователя или пароль, скрипт корректно сообщает мне "Ошибка входа или пароль". Однако, когда я ввожу правильное имя пользователя и пароль, cookie настроен, происходит перенаправление на главную страницу, но на главной странице он скажет: "Вы не вошли в систему".

Я решил эту проблему, поставив информацию на сессии, но я не думаю, что это правильное решение. Как я могу сделать это лучше?

  • 1
    Некоторые интеллектуальные / последовательные отступы кода сделают ваш код легче для чтения и, следовательно, легче для отладки
Теги:
cookies

1 ответ

0

Ваш нынешний подход в корне неверен. Установив файл cookie "cookie" со значением, равным имени пользователя, вы открываете себя для всех, кто регистрируется, как кому угодно... без каких-либо учетных данных для входа...

Файл cookie - это часть данных, которая хранится на клиентском компьютере. Все данные, которые находятся на клиентском компьютере, могут быть изменены по своему усмотрению. Они могут, среди прочего, просто изменить значение файла cookie и войти в систему как администратор, например.

Итак, как вы решаете эту проблему? Вы помещаете информацию в сеанс, как и вы. Файл cookie сеанса достаточно безопасен, так как трудно найти значение cookie, которое сталкивается с сеансом другого пользователя. Переменные сеанса никогда не отправляются пользователю и вместо этого сохраняются на сервере. Только cookie сеанса отправляется туда и обратно между браузером и клиентом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню