в файле mysql.php проверок на подключения пока нету, поставлю позже, так же нету проверок или файл вызивается с index.php, прошу по этим вопросам замечания не писать.
Скрипт работает так:
Если человек авторизирован, при генерации страници будет проверятся его куки с логином и паролем, если же не совпадают то переменая $enter = 0, если совпадают то $enter =1
Дальше уже так:
echo"текст для не зарегестрированого пользивателя";
}
Дамп базы думаю не нужен так как там всего три столбца, id | user | psw
Спасибо!
Sajaxt
Отправлено: 30 Октября, 2009 - 11:48:55
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
Я конечно программист не опытный и начинающий, но кажется что зря Вы функцию filtr() писали. Есть такая функция mysql_real_escape_string(), она как раз занимается экранированием спецсимволов и т.д.
И надеюсь никто не обидится, я тоже хотел кинуть на обсуждение скрипт авторизации но тему уже открыли, поэтому выложу сюда свой скрипт:
Работает всё так, в начале каждого скрипта вставляется authorazation.php если во время исполнения срипта авторизации ошибок нет, то код доходит до непосредственого исполнения скрипта страницы.
Принцип работы: Сначала смотрим, перешелли пользователь на страницу с формы, если да то сравниваем адрес эл. почты и пассворт, и заносим в базу ip пользователя, время авторизации и уникальный хэш, также записываем эти данные в переменный сессии. При последующем вызове скрипта, проверяем естьли переменные сессии и сверяем их, в скрипте всё прокомментировано.
Пожалуйста кто поопытней, проверьте скрипт на вшивость, дайте пару советов. Просто хочется написать авторизацию и просто использовать её в дальнейшем.
Зарание примного благодарен!
OverNik
Отправлено: 30 Октября, 2009 - 15:37:22
Частый гость
Покинул форум
Сообщений всего: 182
Дата рег-ции: Янв. 2008
Помог: 0 раз(а)
в будущем функция фильтр очень пригодится, от инъекций и XSS
lolo
Отправлено: 30 Октября, 2009 - 16:34:21
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2009 Откуда: Москва
Помог: 0 раз(а)
OverNik, извините, но уже с самого начала код не гуд.
if(isset($_COOKIE['user']) or isset($_COOKIE['psw']) or $enter==1)// Такс, проверяете, установлено ли в куку 'user' ИЛИ 'psw' - то есть вам все равно, что из этого установлено? И зачем проверка $enter ==1, если вы строкой выше установили эту переменную равной нулю?
{
//Фильтрация логина
$login=$_COOKIE['login'];// А установлено ли в куку 'login' вам, судя по условию выше, наплевать? ;)
filtr($login, 0);
$login=$filtr;// не разбиралась в вашем "фильтре", пока ничего по его поводу не скажу, кроме того, что не правильнее было бы сделать, чтобы функция возвращала значение, а не объявляла какую-то переменную $filtr глобальной? Тогда бы выражение выглядело бы проще: $login = filtr($login, 0);
//фильтрация пароля
$psw=$_COOKIE['psw'];
filtr($psw, 0);
$psw=$filtr;// Три строчки можно записать в одну: $psw = filtr($_COOKIE['psw'], 0);
Дальше не хватило моих слабых сил разбираться, да и времени в конце рабочего дня в пятницу - тоже
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2009 Откуда: Москва
Помог: 0 раз(а)
OverNik пишет:
не совсем понял с функцией filtr, можна пожалуйста подробней
Во-первых, убрать global $filtr из функции. Во-вторых, почитать про функции побольше
Правильнее сделать, чтобы функция возвращала некий результат, который получается после обработки получаемых значений, а не устанавливала какие-то глобальные переменные.
returnpreg_replace($pattern,"",$text);// возвращение результата, значение которого примет переменная, если написать напрмер: $var = filtr($x, $y);
}
Глобальные переменные вообще желательно избегать, дабы исключить возможность создания трудновыявлеямых багов (особенно в больших проектах).
А вообще ваша функция filtr искажает данные, тупо выкидывая все нужное и ненужное, например, если у меня логин окажется o'nill, то она будет искать onill или alloy, а будет искать oy. Но это же неверно. Так что правильнее будет просто экранировать спецсимволы функциями addslashes() или mysql_real_escape_string(). И незачем изобретать велосипед, тем более кривой.
Sajaxt
Отправлено: 04 Ноября, 2009 - 23:49:15
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
Люди добрые а по поводу моего скрипта, ктонить чтонить скажет?
JROUD
Отправлено: 05 Ноября, 2009 - 10:03:56
Гость
Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
Sajaxt, большого смысла в функциях DBconnect, DBresult не вижу, но в функции DBdisconnect его вообще нет. Зачем создавать функцию которая передаёт получиное значение другой функции? Да, и я не уверен, но разве не нужно в php указывать void если функция ничего не возвращает?
Мелкий
Отправлено: 05 Ноября, 2009 - 15:13:55
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
JROUD пишет:
Да, и я не уверен, но разве не нужно в php указывать void если функция ничего не возвращает?
Нет, не надо. Это вы C/C++ перечитали
JROUD пишет:
большого смысла в функциях DBconnect, DBresult не вижу
А если подумать? Это общение с СУБД.
JROUD пишет:
но в функции DBdisconnect его вообще нет
Просто правило хорошего тона, сказать СУБД, что это соединение завершено.
----- PostgreSQL DBA
Champion
Отправлено: 05 Ноября, 2009 - 15:26:30
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Мелкий пишет:
А если подумать? Это общение с СУБД.
JROUD прав.
Мелкий пишет:
Просто правило хорошего тона, сказать СУБД, что это соединение завершено.
И тут тоже.
Вопрос в том, зачем оформлять это в отдельную функцию?
JROUD
Отправлено: 05 Ноября, 2009 - 15:36:03
Гость
Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009
Помог: 0 раз(а)
Мелкий пишет:
JROUD пишет:
но в функции DBdisconnect его вообще нет
Просто правило хорошего тона, сказать СУБД, что это соединение завершено.
Я не против того что нужно закрыть соединение с СУБД, я говорю о том что задача функции DBdisconnect вызвать функцию mysql_close, а зачем если можно вызвать сразу mysql_close?
Sajaxt
Отправлено: 05 Ноября, 2009 - 15:47:02
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
Хорошо спасибо, буду испровлять.
А что на счет authorization.php?
Sajaxt
Отправлено: 14 Ноября, 2009 - 13:49:56
Новичок
Покинул форум
Сообщений всего: 12
Дата рег-ции: Окт. 2009
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.