Как сделать файл со скриптом, подключение которого ведет к появлению окна с вводом логина и пароля, причем, пользователю дается три попытки ввести данные, после чего надо вывести страницу 403. При нажатии кнопки ОТмена - тоже можно вывести страницу 403. Пробую так: PHP: <? function authenticate() { Header("WWW-Authenticate: Basic realm=\"Admin center\""); Header("HTTP/1.0 401 Unauthorized"); exit("Авторизация отменена!"); } session_start(); session_register("attempt"); session_register("auth"); $auth = $attempt = 0; do { if(!isset($PHP_AUTH_USER)) authenticate(); else { foreach(file($_SERVER["DOCUMENT_ROOT"]."/admin/passw/passw") as $k) { if(trim($k) == "$PHP_AUTH_USER $PHP_AUTH_PW") { $auth = 1; break; } } if(!$auth) { $attempt++; authenticate(); } } } while($attempt < 3 && !$auth); session_unregister("attempt"); session_unregister("auth"); unset($attempt); unset($auth); ?>
session_register устарел. Вместо него используйте глобальный массив $_SESSION Попробуйте: PHP: <? function authenticate() { Header("WWW-Authenticate: Basic realm=\"Admin center\""); Header("HTTP/1.0 401 Unauthorized"); exit("Авторизация отменена!"); } session_start(); $_SESSION['auth'] = 0; $_SESSION['attempt'] = 0; do { if(!isset($PHP_AUTH_USER)) authenticate(); else { foreach(file($_SERVER["DOCUMENT_ROOT"]."/admin/passw/passw") as $k) { if(trim($k) == "$PHP_AUTH_USER $PHP_AUTH_PW") { $_SESSION['auth'] = 1; break; } } if(!$_SESSION['auth']) { $_SESSION['attempt']++; authenticate(); } } } while($attempt < 3 && !$auth); $_SESSION['attemt'] = ''; $_SESSION['auth'] = ''; ?>
1) Почему устарел? 2) А как все-таки ограничить ввод, задав число попыток? А то в моем примере можно вводить неверный логин/пароль до бесконечности! 3) Как вместо exit("Авторизация отменена!"); выдать страницу 403? Простая замена этой строки на Header("HTTP/1.0 403 Forbidden"); не помогает.
Ну а если я напишу бота, который не будет поддерживать сессии или разрывать коннект после каждой попытки?
скажите плиз есть имя пользователя и пароль если они верны то при нажатии на login отправить его на другую страницу если нет то через echo вывести сообщение об ошибке
в чем вопрос? Код (Text): if($name == $correct_name && $pass == $correct_pass) // условие конечно сами напишите { header('Location: другая_страница'); } else { echo 'сообщение об ошибке'; }