![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 127
|
не работает система авторизации на php mysql и cookie, наделал ошибок, не пойму как исправить
CREATE TABLE `members` ( `id` SMALLINT NOT NULL AUTO_INCREMENT , `name` TINYTEXT NOT NULL , `password` TINYTEXT NOT NULL , `info` TEXT, PRIMARY KEY ( `id` ) ); INSERT INTO `members` VALUES (1, 'demo', 'pass','информация'); <form action='aut.php' method='POST'> Логин: <input type='text' name='name'><br> Пароль: <input type='text' name='pass'><br> <input type='Submit' name='logs' value='Вход'><br> </form> aut.php
|
|
|||||
|
INSERT INTO `members` VALUES (1, 'demo', 'pass','информация');
Зачем вписывать значение ID если оно у тебя АВТОМАТИЧЕСКИ инкримируется? Когда случается "тупиковое условие", по типу: то в твоём варианте лучше останавливать выполнение скрипта, а то дерьмо выйдет. А вообще разбираться трудно, потому что дикая расцветка у синтаксиса. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 127
|
пасибо, подсветка действительно отвлекает, может сцилка на примерчик ись?
|
|
|||||
|
а вообще, покури про массивы $_COOKIE (это чтобы setcookie не дергать) и $_SESSION, чтобы не мучиться с передачей данных.
Кроме того, вкури пару статей про SQL-инъекции и методам защиты от оных.
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 127
|
спасибо за совет, буду читать, может примером поможете а то очень и очень нужно, а времени все понять не хватит
![]() |
|
|||||
|
Лучше день потерять, потом за пять минут долететь (с)
__________________
Тут вы найдете ответы на почти все вопросы: А можно ли сделать так ? - Можно. Почему не работает ? - Неправильно сделано. Где ошибка ? - В ДНК. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 127
|
верно, спасибо, просто щас на работе а вечером боюсь не успею
![]() |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 39
|
Во-первых: вспомните про область видимости переменных! У вас функция auth() никгда не найдет пользователя, так как не знает что искать (к слову интересных уход от SQL-инъекций). Вот пример из которого все будет ясно:
В-трерьих: функции setcookie() и header() должны указываться ДО любого вывода в браузер, иначе будет выведено сообщение о том что нельзя отправить заголовки, и соответственно ни куки не будут установлены, ни перехода не будет. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 127
|
что - то ничего не понятно
![]() |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 39
|
Хорошо, покажу на вашем примере: попровуйте вывести из функции auth() значения переменных $name и $pass, бьюсь об заклад, что они окажутся пустыми. Для того, чтобы функция auth() работала так, как вы хотите необходимо написать так:
Дальше, про setcookie() и header():
и никакие куки установлены не будут и перехода не будет. Согласен, может быть и не нужно в этом случае устанавливать куки и делать переход, но, Вы меня извините, строить логику приложения исходя из того, как будет реагировать интерпретатор на логические ошибки в приложении, по крайней мере кощунственно. Дальше - больше: зачем нужна фукнция auth() если она вызывается только раз, в одном месте и содержит 5 строчек кода, которые нельзя отнести к решению какой-то отдельной логической операции приложения? Ещё дальше - ещё больше: если $_POST['name'] и $_POST['pass'] пусты, то Вы выводите об этом сообщение. Это хорошо, но зачем в этом случае пытаться проверять если такой пользователь в БД. Понят какие мысли приходят при виде сообщения "не авторизовался, введите данные" и при "не верные данные, пользователь не найден!". Но какие чувства будет испытавать бедный пользователь, когда увидит оба эти сообщения сразу?! |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|