Почему cookie не работает при регистрации?

310
20 марта 2017, 10:52

Здравствуйте, я новичок в программировании. Весь вечер не могу решить проблему. В файле login.php имеется следующий код(срабатывает при входе, работает с таблицей: username, password, login):

<?php
error_reporting(E_ALL & ~E_DEPRECATED);

$connect=mysql_connect('localhost', 'root', '') or die (mysql_error());
mysql_select_db('rash');
if (isset($_POST['enter'])) {
$e_login=$_POST['e_login'];
$e_password=$_POST['e_password'];
$query=mysql_query("SELECT * FROM WIreg WHERE login='$e_login'");
$user_data=mysql_fetch_array($query);
if ($user_data['password']==$e_password) {
$re=mysql_query("SELECT * FROM WIreg WHERE 'login'='$user'"); 
  $name=mysql_fetch_array($re);
setcookie('cookie_name', $name['username']);
  $_SESSION['cookie_name'] = $name['username'];
header("location: user/auth.html");
}
else {
echo "wrong password or login";
}
}
?>

Выводит всю страницу auth.html кроме имени username. Далее в файле auth.html (находится в директориии user)имеется следующий код:

<?  session_start(); echo $_SESSION['cookie_name']; ?>

Вопрос: почему не отображается username?

Answer 1

После проверки пароля вы делаете повторный запрос:

$re=mysql_query("SELECT * FROM WIreg WHERE 'login'='$user'");

Но переменная $user у вас ранее не определяется, поэтому данный запрос выдаёт пустой результат, соответственно и куки далее определяются пустые.

Учитывая, что вы ранее уже получили необходимые вам данные из базы (они у вас в переменной $user_data), предлагаю переписать последний if так:

if ($user_data['password']==$e_password) {
  setcookie('cookie_name', $user_data['username']);
  $_SESSION['cookie_name'] = $user_data['username'];
header("location: user/auth.html");
}
else {
echo "wrong password or login";
}

Но вообще хранить пароли в явном виде неправильно.

READ ALSO
Redirect Laravel

Redirect Laravel

Прописываю в роутах такой код для 'middleware' => ['web'], не работаетЕсть ли еще варианты запрета доступа к странице для гостей?

356
Выборка из базы по значению [дубликат]

Выборка из базы по значению [дубликат]

На данный вопрос уже ответили:

288