2013-07-05 51 views
0

我有一個簡單的登錄頁面,顯示用戶名和密碼登錄部分,當登錄按鈕被按下時,表單數據被髮送回頁面進行處理。如果數據是有效的並且他們已經成功登錄,則將它們引導到主頁,如果不是,則它再次向他們顯示登錄屏幕,並告訴他們他們做錯了什麼(不正確的密碼,空字段等)。HTML表單僅在某些瀏覽器的第二次提交時提交數據*已解決*

我的問題是,對於某些瀏覽器(Chrome和Opera),表單需要提交兩次才能設置數據(字面上設置,我用isset檢查過,空& is_null檢查)。

我讀過之前在某些瀏覽器(Chrome瀏覽器& IE)中存在的問題,但唯一的解決方法是使用javascript來傳遞信息。有什麼我可以做的,使形式更「瀏覽器友好」?

更新1

這裏的形式,其基本就能搞定,沒有什麼特別的地方。

<form action="loginpage.php" method="POST"> 
Username: <input type="text" name="Username" autofocus="autofocus" /> 
<br/> 
Password: <input type="password" name="Password" /> 
<br/> 
<input type="submit" name="submit" /> 
</form> 

更新2

PHP代碼

if (isset($_POST['submit'])) 
{ 
    if ($_POST['Username']=="" || $_POST['Password']=="") 
    { 
     echo '<script type="text/javascript">'; 
     echo "window.alert('You did not fill in a required field.')"; 
     echo "</script>"; 
    } 
    else 
    { 
     $username = $_POST['Username']; 
     $password = $_POST['Password']; 

     $sql = "SELECT * FROM Logins WHERE `Username` = '$username'"; 
     $validate = mysql_query($sql); 

     while ($check = mysql_fetch_array($validate)) 
     { 
      if ($password != $check['Password']) 
      { 
       echo "<script type='text/javascript'>"; 
       echo "window.alert('password was incorrect.')"; 
       echo "</script>"; 
      } 
      else 
      { 
       header("Location: streaming/videosearch.php?order=dated&q=*"); 
      } 
     } 
    } 
} 

解決方案表單元素的名稱

不要把大寫字母。

+4

'有什麼我可以做的,使形式更「瀏覽器友好」?'不知道 - 沒有看到代碼... –

+0

你能告訴我們的表單代碼? – wgcrouch

+0

正如我所說,它儘可能簡單,但我發佈了它。 – Mason

回答

1

嘗試添加一個value屬性到提交按鈕。它發生,我認爲,甚至沒有一個空白value,一些瀏覽器可能不發送提交按鈕回到POST:

<input type="submit" value="login" name="submit" /> 

此外,嘗試打印出$_POST超全局中的內容來幫助調試:

print_r($_POST); 
+0

謝謝,值不是問題,但print_r($ _ POST)顯示儘管是Propercase,變量仍以小寫形式發送。從來沒有遇到過,但現在我知道了。 – Mason

相關問題