![]() |
не работает система авторизации на php mysql и cookie
не работает система авторизации на php mysql и cookie, наделал ошибок, не пойму как исправить :(
Код:
CREATE TABLE `members` (Код HTML:
<form action='aut.php' method='POST'>aut.php PHP код:
PHP код:
|
INSERT INTO `members` VALUES (1, 'demo', 'pass','информация');
Зачем вписывать значение ID если оно у тебя АВТОМАТИЧЕСКИ инкримируется? Когда случается "тупиковое условие", по типу: Код:
if( mysql_num_rows( $result ) == 0 ) { А вообще разбираться трудно, потому что дикая расцветка у синтаксиса. |
пасибо, подсветка действительно отвлекает, может сцилка на примерчик ись?
|
а вообще, покури про массивы $_COOKIE (это чтобы setcookie не дергать) и $_SESSION, чтобы не мучиться с передачей данных.
Кроме того, вкури пару статей про SQL-инъекции и методам защиты от оных. |
спасибо за совет, буду читать, может примером поможете а то очень и очень нужно, а времени все понять не хватит :(
|
Лучше день потерять, потом за пять минут долететь (с)
|
верно, спасибо, просто щас на работе а вечером боюсь не успею :(
|
Во-первых: вспомните про область видимости переменных! У вас функция auth() никгда не найдет пользователя, так как не знает что искать (к слову интересных уход от SQL-инъекций). Вот пример из которого все будет ясно:
PHP код:
В-трерьих: функции setcookie() и header() должны указываться ДО любого вывода в браузер, иначе будет выведено сообщение о том что нельзя отправить заголовки, и соответственно ни куки не будут установлены, ни перехода не будет. |
что - то ничего не понятно :(
|
Хорошо, покажу на вашем примере: попровуйте вывести из функции auth() значения переменных $name и $pass, бьюсь об заклад, что они окажутся пустыми. Для того, чтобы функция auth() работала так, как вы хотите необходимо написать так:
PHP код:
PHP код:
Код:
Warning: Cannot modify header information - headers already sentДальше - больше: зачем нужна фукнция auth() если она вызывается только раз, в одном месте и содержит 5 строчек кода, которые нельзя отнести к решению какой-то отдельной логической операции приложения? Ещё дальше - ещё больше: если $_POST['name'] и $_POST['pass'] пусты, то Вы выводите об этом сообщение. Это хорошо, но зачем в этом случае пытаться проверять если такой пользователь в БД. Понят какие мысли приходят при виде сообщения "не авторизовался, введите данные" и при "не верные данные, пользователь не найден!". Но какие чувства будет испытавать бедный пользователь, когда увидит оба эти сообщения сразу?! |
| Часовой пояс GMT +4, время: 21:24. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.