Нашел в сети код для запроса пароля в админку, переделал под себя, но при вводе логина и пароля ничего не происходит просто просит ввести заново логин и пароль, данные о пользователях записаны в базе: baza в табличке: reg поля в таблице id nik login password acces а вот и сам код требующий пароль Код (Text): <?php include("connect.php"); if (!isset($_SERVER['PHP_AUTH_USER'])) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } else { if (!get_magic_quotes_gpc()) { $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']); $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']); } $query = "SELECT password FROM reg WHERE login='".$_SERVER['PHP_AUTH_USER']."'"; $lst = @mysql_query($query); if (!$lst) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } if (mysql_num_rows($lst) == 0) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } $pass = @mysql_fetch_array($lst); if ($_SERVER['PHP_AUTH_PW']!= $pass['password']) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } } ?> вот код файла connect.php Код (Text): <?php $connect = mysql_connect("localhost","root","") or die(mysql_error()); mysql_select_db("baza"); ?>
Версия php случаем не 5.4 или выше? Т.к. в этих версия get_magic_quotes_gpc всегда возвращает false (функция удалена)
а дебаг-то включен или ты уже считаешь себя окрепшим крепышом и подавляешь вывод ошибок? ошибки и предупреждения всегда должны выводиться. потому что ты обязан писать код который не бросается ни ошибками ни предупреждениями. так вот. ты проверь что у тебя всё включено и проверь не получается ли каких ошибочек. ну и вообще ты отладку какую-нибудь проведи. зренки раскрой - у тебя 4 стейта в коде которые выводят статус 401 и как следствие заново просят пароль. ТЫ ВОТ ЗНАЕШЬ КАКОЙ ИЗ ЧЕТЫРЕХ ТЕБЕ ПРИХОДИТ??? я вот нет например. это же твой код. ты обязан знать какой кусок кода работает неожиданно.
я так просто понял что дебаг репорт показывает в каком месте ошибка? или я не так понял? и как включить этот дебаг репорт
как включить отображение ошибок https://php.net/manual/ru/function.error-reporting.php https://php.net/manual/ru/errorfunc.configuration.php#ini.display-errors И собак из кода убери, они отключают ошибки. Ещё есть очень удобный инструмент отладки кода https://netbeans.org/kb/docs/php/debugging_ru.html Можешь на youtube поискать видео по словам: php xdebug
знак собака: @ Добавлено спустя 42 секунды: Это всё есть в книгах, а ты мучаешь себя, заставляешь их не читать.
Блин ввожу вначале error_reporting(0); захожу в баузере на адрес, и все тоже самое просит постоянно пароль и логин больше нечего ... Добавлено спустя 2 минуты 33 секунды: не могу въехать что куда, даже видео урока не нашол
Ввел строки и вот что выдало: Notice: Undefined index: pass in Z:\home\MyBlog.ua\www\admin\prov.php on line 35 [Денвер: показать возможную причину ошибки] Warning: Cannot modify header information - headers already sent by (output started at Z:\home\MyBlog.ua\www\admin\prov.php:35) in Z:\home\MyBlog.ua\www\admin\prov.php on line 37 Warning: Cannot modify header information - headers already sent by (output started at Z:\home\MyBlog.ua\www\admin\prov.php:35) in Z:\home\MyBlog.ua\www\admin\prov.php on line 38 А вот эти строки начиная с 23 по 43 строку Код (Text): if (!$lst) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } if (mysql_num_rows($lst) == 0) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); } $pass = mysql_fetch_array($lst); if ($_SERVER['PHP_AUTH_PW']!= $pass['pass']) { Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); Header ("HTTP/1.0 401 Unauthorized"); exit(); }
Угу он тебе пишет на 35 (output started at Z:\home\MyBlog.ua\www\admin\prov.php:35) строке ты начал отдавать контент
вот номерация Код (Text): 23 if (!$lst) 24 { 25 Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); 26 Header ("HTTP/1.0 401 Unauthorized"); 27 exit(); 28 } 29 30 if (mysql_num_rows($lst) == 0) 31 { 32 Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); 33 Header ("HTTP/1.0 401 Unauthorized"); 34 exit(); 35 } 36 37 $pass = mysql_fetch_array($lst); 38 if ($_SERVER['PHP_AUTH_PW']!= $pass['pass']) 39 { 40 Header ("WWW-Authenticate: Basic realm=\"Admin Page\""); 41 Header ("HTTP/1.0 401 Unauthorized"); 42 exit(); 43 }
Что то нумерация не сходится, ну да ладно. На 35 строке как сообшает php ты обратился к ключу массива по имени pass , но его нету, и тут php тебе об этом говорит, после чего ты отправляешь заголовки, но контент уже пошел в виде предыдушей ошибки. Так что исправляй обращение к массиву.
Собаки советовали убрать. Ты понимаешь что такое массив и почему php ругается на запрос не существующего ключа массива?