2013-02-02 37 views
0

我沒有太多的PHP實例對我進行渲染。但這肯定是其中之一,我已經檢查了整整一天,並認爲它可能來自第三方。但是,一個告訴我這個錯誤的症狀是隨機的,我甚至無法設置一個字符串變量從提交回發。 issetempty都不適用於捕獲事件。當我按下提交時,我看到的唯一情況是我的txtbox變量出現在URL中。但沒有驗證發生。提交按鈕沒有監聽isset處理程序

所以現在現在我有一個用於登錄頁面提交按鈕如下:

<form action='Login.php' method='post'> 
    <table align="center"> 
     <tr><td>Username</td></tr><tr> 
     <td><input type="text" name="txtUsername"/></td></tr> 
     <tr><td>Password</td></tr><tr> 
     <td><input type="text" name="txtPass"/></td></tr> 
     <td colspan="2"><input type="submit" name="btnLogin" ID="btnBlueTemp" value="Sign in!" /></td></tr> 
     <tr><td class="errorLogin"><?php echo $Error;?></td></tr> 
    </table> 
</form> 

我調用了必要的職位,這裏是事件。

$txtUsername = $_POST["txtUsername"]; 
$txtPass = $_POST["txtPass"]; 
$btnLogin = $_POST["btnLogin"]; 
if(isset($btnLogin)){ 
$Error = "ok"; 
} 

什麼可能導致一個問題,不讓我的按鈕處理程序被捕獲?我正在使用Internet Explorer 9.

回答

1

不要使用提交按鈕來檢查表單是否已被引用。要麼添加一個隱藏的表單字段,並檢查它是否設置,或使用其他機制。你不會在Firefox中遇到這個問題,但在IE中你會。

+0

這是一個已知的問題?你給我一個如何做隱藏領域的例子? – GivenPie

+0

那麼第一次當我遇到這個我被告知,根據rfc你不應該依靠提交按鈕來檢查表單已提交,我沒有進一步研究irt只是解決這個問題。 在您的表單中添加隱藏字段,如下所示:

0

你做錯了。當您使用$btnLogin = $_POST["btnLogin"];時,您實際上正在設置變量。所以即使你點擊地址欄中的網址,你的腳本也會被執行,而無需點擊提交按鈕。

而是使用 -

if(isset($_POST['btnLogin']){ 
     // do stuff 
}else{ 
     // do other stuff 
} 
+0

我之前使用過提取($ _ POST),如果使用了'$ btnLogin = $ _POST [「btnLogin」];'我正在設置變量。然後當提交按鈕被點擊時,頁面回發與我的'$ btnLogin'設置爲真第二次。這不會發生什麼? – GivenPie

+0

夠公平的。 :d – SachinGutte