Xwab
Форумыnavigate_nextПрограммирование на PHP

Авторизация не пашет
Сообщения
MaikL

COOLBOY007, А собственно в чём у них у всех разница? Одна же вроде суть, фильтровать.
Может кто конкретно тогда объяснить что фльтрует каждая функция и от чего?
добавлено спустя:
Вроде всё, норм работает. Теперь можете комментировать недостатки:

$cookie_log='';
$cookie_pass='';
if (isset($_COOKIE['nickname']) && isset($_COOKIE['password'])){
$cookie_log=htmlspecialchars(mysql_escape_string($_COOKIE['nickname']));
$cookie_pass=md5(mysql_escape_string($_COOKIE['password'])+buka);
}else{
if (isset($_COOKIE['sess']) && !empty($_COOKIE['sess'])){
$sess = htmlspecialchars($_COOKIE['sess']);
}else{
$sess = sess();
setcookie("sess", $sess);
}}
$q = mysql_query("SELECT * FROM `$mysql[pref]users` WHERE (`time` >= '".$livetime."' AND `sess` = '".$sess."') OR (`nickname` = '".$cookie_log."' AND `password` = '".$cookie_pass."');");
if(mysql_num_rows($q)!= 0){
$user = mysql_fetch_array($q, 1);
if ($user['nickname'] == $cookie_log && $user['password'] == $cookie_pass && $user['time'] < $livetime){
$sess = sess();
setcookie("sess", '');
}else{
$sess=$user['sess'];
setcookie("sess", '');
}}else{
if (isset($_COOKIE['sess']) && !empty($_COOKIE['sess'])){
$sess = htmlspecialchars($_COOKIE['sess']);
}else{
$sess = sess();
setcookie("sess", '');
setcookie("sess", $sess);
}}

04 Янв 2012, 0:59
Istsam

при занесении в базу - mysql real escape string.
При выводе - хтмлспециалшарс

04 Янв 2012, 20:25
SL_NeKrOmAnT

Istsam, htmlspecialchars()

 а то еще напишет по-русски

05 Янв 2012, 0:14
JoiNeD

if(isset($_COOKIE['sess']) && !empty($_COOKIE['sess']))
Два раза то зачем проверять?
З.Ы не по русски как то ты кодиш)

05 Янв 2012, 1:25
MaikL

JoiNeD, а где дважды? Объясни!
добавлено спустя 2 минуты:
Istsam, это я понял, а что конкретно каждая из них отфильтровывает?

05 Янв 2012, 3:12
AntoXa

!!del!!


__________
посл.ред. 05 Янв 2012, 12:02; всего 1 раз 05 Янв 2012, 7:55
nitron

JoiNeD, а что тебя не устраивает? Первая проверка чтобы узнать задана ли данная переменная. Вторая что бы узнать содержит ли она какие либо данные.
Если вызвать сразу empty(), а куки еще не задавались, то это может привести к NOTICE сообщению
А если проверять только isset(), то можно пустую переменную пропустить, что тоже не желательно
На счет фильтрации лучше все таки использовать mysql_real_escape_string() при запросе к базе. У них с htmlspecialchars() разные таблицы символов для фильтрации на сколько я понимаю.

05 Янв 2012, 8:25
G.N.C.

Жесть… Вот это авторизация…

06 Янв 2012, 1:10
MaikL

G.N.C., чем сложней тем интерестней. =)

06 Янв 2012, 2:39
JoiNeD

nitron, с чего это вдруг она выдаст сообщение об ошибке? И ты хоть в одном нормальном скрипте видел подобное?

06 Янв 2012, 3:54
Ответить на тему