различий между trim и substr(в том виде как я его писал)-нет?
есть. не факт, что отрезать надо именно два символа - а не три или один.
поэтому надо делать трим.
не смог его вывести
естественно.
Не одна хрестоматийная ошибка - так другая :-)
наверно там должно быть пусто,т.к. табличка выскакивает после того,как rez!=0,наверное
Должно быть, но совсем не поэтому.
В этой переменной вообще ничего не должно быть - ни до выскакивания таблички, ни после.
Тем более, что после "выскакивания" и ввода пароля твой скрипт начинает работу заново, уже с переданным ему паролем.
Вот только лежит он в совсем другой пременной.
$PHP_AUTH_USER - это устаревшее и не работающее написание.
правильно писать
$_SERVER[\'PHP_AUTH_USER\']
и точно так же - вторую, с паролем.
Дополнение: а как его вывести?
А очень просто -
Berkut:
Header("WWW-Authenticate: Basic realm=\\"Закрытая зона\\"");
Header("HTTP/1.0 401 Unauthorized");
exit;
Только тебе этого делать, естественно, не надо, поскольку ты и так уже выводишь.
Вот. как это должно выглядеть:
$file="data.txt";
$fp=fopen($file, "r");
$auth_file=fread($fp, filesize($file));
fclose($fp);
if (!strstr($auth_file,"\\n".$_SERVER[\'PHP_AUTH_USER\'].":".$_SERVER[\'PHP_AUTH_PW\'])) {
header(\'WWW-Authenticate: Basic realm="Realm"\');
header("HTTP/1.0 401 Unauthorized");
echo "Bad password";
exit;
}
Никаких циклов, переменных, которые можно подделать - и так далее.
Этот код лучше всего вынести в отдельный файл и поддключать через require в самом начале защищаемых файлов.
файл с паролями ОБЯЗАТЕЛЬНО должен быть недоступен для скачивания через браузер. Либо лежать в каталоге, недоступном пользователю веб-сервера, либо закрыт средстваи сервера, либо еще как-то.
А еще для надежности желательно кодировать в этом файле пароли в md5, и сверять с MD5($_SERVER[\'PHP_AUTH_PW\'])
Вопросы есть? :-)