PHP

Пишу авторизацию (php). Куки не работают

Здравствуйте! Помогите пожалуйста решить проблему с программой. Я тут занялся созданием авторизации, все сделал, но только нельзя задать значение куки переменными. Может я как-то криво делаю, что не получается или есть какой-либо другой способ ?
файл login.php
<?php
header('Content-Type: text/html; charset=utf-8');
$login = trim($_POST['login']);
$password = trim($_POST['password']);
$db = @mysql_connect("mysql.hostinger.ru","u530094385_dc", "FktrctqPetd");
mysql_select_db("u530094385_sqldc", $db);
$query = mysql_query("SELECT * FROM `tab` WHERE login='$login'");
$query2 = mysql_query("SELECT * FROM `tab` WHERE login='$password'");
while($row = mysql_fetch_array($query)){
$arr[0] = trim($row['login']);
$arr[1] = trim($row['password']);
}
if($arr[1] == $password) {
echo "Вы успешно авторизовались!";
setcookie('auth', 'login', time() + 60);
echo " - " . $_COOKIE['auth'] . " - ";
} else {
echo "Неверный логин или пароль!";
}
mysql_close($db);
?>

главный файл









Справочник по программированию
171120


C |
C# |
C++ |
PHP |
SQL |
CSS |
Java |
Perl |
Ruby |
HTML |
AJAX |
jQuery |
Pascal |
Delphi |
Python |
JavaScript


<?php
$cookie = $_COOKIE["auth"];
if(!$cookie){
echo '
Вход


Логин:

Пароль:





Регистрация


Логин:

Пароль:



';
} else {
echo "Вы авторизованы как $cookie ";
}
echo "$cookie";
?>
слушайте, а кто вас в 2017-ом году все еще учит работать с функциями mysql? Отказывайтесь немедленно. Они устарели, они будут удалены. Переходите на mysqlI или PDO

и логика немного другая.

Словами примерно так
обрабатываем запросы по GET - из $_SERVER['REQUEST_METHOD']
то бишь,
if ($_SERVER['REQUEST_METHOD']=='GET') ...
1. если установлена кука - показываем главную страницу. конечно, здесь, имеет смысл сделать дополнительную проверку: есть ли такой пользователь, имеет ли он право просматривать контент в соответствии со своими правами. но в учебном примере, можно и без этого.
2. если куки нет - показываем форму логина
обрабатываем запросы по POST
if ($_SERVER['REQUEST_METHOD']=='POST') .
1. считываем $_POST
2. проверяем есть ли в базе логин, пароль
запрос тоже неправильный, кстати SELECT * FROM `tab` WHERE login='$login' AND password='$password'; - сразу два условия: совпадать должны и пароль, и логин.
Кстати, хранение в базе паролей в виде текста, дурной тон. лучше использовать простейшую шифрацию по md5() - это php-функция.
3. если есть в базе - выставляем куку и переадресуем на главную
4. если нет в базе - просто переадресуем на главную

Вместо куки можно использовать и сессии. Сессионная переменная активна до закрытия браузера, куки - можно сделать вечными.
EG
Eduardo Gutmann
57 782
Лучший ответ
СНАЧАЛА делаешь всю работу с куками, а только ПОТОМ отправляешь контент браузеру. Как только ты передал бразузеру хотя бы один байт - всё, об установке кук (и передаче прочих заголовков) можешь забыть.
Алексей Репин
Алексей Репин
92 859
Александр Кравченко Например, мне нужна проверка на уже авторизованного пользователя на главной странице у меня там написано $cookie = $_COOKIE['auth'];....
вот это мне возвращает либо 0, если значение куки 'auth' передано через переменную setcookie('auth', '$login', time() + 60) либо ничего, но работает, если я создам куки без присваивания значения 'auth' переменной: setcookie('auth', 'login', time() + 60), то все работает замечательно, при чтении этих куки, все выдает верно, пишет 'login'
1) пароли звёздочками религия не позволяет зацензурить ?
2) Сей код есть древний древний говнркод ну тоесть так писали но в 2007 а когда пхп только очухивался Тако лучше не надо учится писать так
3) mysql_connect - будет ругаться на новых пхп из за того что эта функция объявлена устаревшей
4) ты упорно записываешь в куку строчку login несмотря на то что авторизоваться мог конкретный юзернейм
5)писать в куки без секрет кея не круто
6 ) а лазить в базу без презерватива вообще нельзя поэтому либо делай подготовленный запрос либо фигач mysql_real_escape_string()
7) setcookie создаёт заголовок а делать это после любого вывода на страницу нельзя т к запись заголовков заканчивается когда начинается тело страницы
И это я только по диагонали посмотрел код ))
Александр Кравченко Пароль от phpMyAdmin локального хоста, чего его цензурить, ты локалхост не взломаешь