Форма мне совершенно безразлична.
Ладно, намёки остаются непонятыми:
0) где mysql_real_escape_string? (вопрос использования устаревшего mysql_* на сегодня оставлю в стороне)
1) Prizma пишет:if((strlen($_POST['login'])>0)and(strlen($_POST['password'])>0))
При заходе методом GET как минимум 1 нотайс будет всегда за обращение к неинициализированному члену массива
2) Prizma пишет:preg_match('#^[0-9a-zA-Z]{3,25}$#', $_POST['password'])
С чего вы решили себя вправе как-то ограничивать максимальную сложность пароля?
2.5) почему пароли хранятся открытым текстом?
3) Prizma пишет:if(mysql_num_rows($zapros)>0){ # проверяем выдал ли нам что нибудь запрос
Где ветка else?
4) Prizma пишет:# если пост данных не поступило значит проверяем есть ли у пользователя куки-данные
И чуть ниже
Prizma пишет:$zapros = 'SELECT sess FROM `users` WHERE login =\''.$_POST['login'].'\' and password=\''.$_POST['password'].'\';'
Взаимоисключающие параграфы, не находите?
5) Про SQL-инъекции уже говорил неоднократно
6) Prizma пишет:if(($date)<(time()+$life)){ # проверяем не устарела ли кука
Условие будет исполнено всегда. Время последнего запроса не может быть больше текущего времени + некоторое число (кроме 0 и отрицательного, что не подходит по смыслу всего кода).
7) очередной цикл над результатом, который должен-то 1 строку возвращать.
Общий уровень кода тоже не блещет, но сияет копипастом - но это придёт с опытом, смею надеяться.
Prizma пишет:Напомню что я конкретно этот код не тестил
Укажу, что я ни этот, ни тем более его прообраз и не пытался запускать даже.
(Добавление)
Prizma пишет:а без цикла будет работать функция mysql_fetch_array?
А куда она денется? Она не является частью цикла. Это просто функция.
|