Forum Webscript.Ru
Программирование => PHP => Тема начата: agressor от 08 Февраля 2003, 17:26:27
-
Вот при освоении пхп у меня возникла проблема - не могу написать скрипт, чтоб пользователи могли авторизоваться... Вот, допустим у меня есть некий файл с именами и паролями ( в соотношении ИМЯ:::ПАРОЛЬ)... Сколько я не бьюся с этим сценарием, все равно он не хочет меня авторизовывать хоть ты тресни... Не могли бы вы, опытные скриптовальщики, написать пару строк, помочь мне (лишь авторизация, написать скрипт, чтоб файл писались эти логины и пароли я сам смогу)
Заранее благодарю...:beer:
-
$file = file("auth.dat");
for ($i = 0; $i < sizeof($file); $i++) {
$line = explode("::", trim($file[$i]));
if ($login == $line[0] && $password == $line[1]) {
$is_authorized = 1;
break;
}
}
if (!$is_authorized) exit("Login or password is incorrect");
-
GotZfild
ты забыл (имхо) в самом начале написать:
$is_authorized = 0;
(для защитыы от register_globals = on)
-
Согласен.
-
Спасибо
-
Но мой сценарий (который я писал сам) отличался от этого только тем, что в нем отсутствовала функция trim (), из-за которой он по сути дела и не работал... Вообще характеристика ее такова: "удаление концевых пробелов в строке". Но причем она здесь? Не могли бы объяснить?..
-
Ты наверняка тестировал скрипт на Windows. В отличие от Unix, там перевод строки осуществляется двумя символами: переводом каретки и переводом строки ("\\r\\n"), тогда как в Unix только символом новой строки (только "\\n").
Поэтому после explode у тебя строки по сути выглядят так:
login::password\\r
-
GotZfild перестань.
перечитай документацию перед тем, как отвечать :-)
и вопрос заодно :-)
agressor
где ты вычитал такое объяснение? Эта функция удаляет все пробельные символы, в том числе и символ перевода строки, с которым у тебя как раз и не работало.