2016-04-29 82 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工作