2016-04-29 71 views
4
<?php 
    if (!isset($_SERVER['PHP_AUTH_USER'])) { 
     header('WWW-Authenticate: Basic realm="My Realm"'); 
     header('HTTP/1.0 401 Unauthorized'); 
     echo 'Text to send if user hits Cancel button'; 
     exit; 
    } else { 
     echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; 
     echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; 
    } 
?> 

我使用这个代码简单地询问验证用户名和密码,但问题是当取消按钮用户点击它应该是一次又一次地给认证提示,直到正确的用户名和不提供密码。HTTP认证,取消循环

+1

打在HTTP基本提示ESC趋于抵消导致该提示的要求,这意味着有您无法在客户端触发某些内容,因为它现在与您断开了连接。 –

+0

我明白马克,但我担心的是,如果esc被按下或取消打在那种情况下,我也希望提示重新出现哪些地方我已经看到,这是可能的,但我不知道那家伙是如何实现它的。 –

回答

3

一个简单的修复可以实现,假设你的客户端都有JavaScript。

而不是echo 'Text to send if user hits Cancel button';

echo '<script>window.location.reload();</script>'; 
+0

你能否提供我这样的小代码。我试过这个,它给了页面不能重定向到自己 –

+0

已更新为工作解决方案。我测试了它,它的工作原理:https://pgmann.cf/test –

+0

(注意测试链接已移至https://pgmann.cf/so/36946358/。) –

0

我觉得

header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']); 
exit(); 

将在PHP工作