2017-07-03 61 views
0

我創建了一個使用POST方法的表單登錄系統。這個POST發送信息到index.php,它包含在index php中。在login.php中,如果用戶名和密碼正確,幾個jQuery代碼會改變index.php中的一些內容(添加菜單項)。我的問題是,當我想刷新頁面時,Firefox總是發送確認消息()要顯示此頁面,Firefox必須發送信息,以便重複以前執行的任何操作(例如搜索或訂單確認)) 。我有紅色的,我知道這個問題是關於我使用POST方法發送數據。有些人建議使用GET方法,雖然消息不會出現,但數據也不會發送。你能建議一個解決方案嗎(如果它存在的話)?預先感謝您的幫助。如何避免Firefox確認信息?

我的PHP代碼:

$query1 = pg_query($conn, "SELECT * from users WHERE password = '$pswd' and name='$username' "); 


$arr_1 = pg_fetch_all($query1); 


$name_lenght= strlen($arr_1[0][name]); 
$pswd_lenght= strlen($arr_1[0][password]); 

if ($name_lenght > 0 && $pswd_lenght > 0){ 


$_SESSION ['user'] = $_POST['user']; 
$_SESSION ['password'] = $_POST['password']; 


echo "<script> 
$('#manu1').removeClass('hide').addClass('show'); 
$('#manu2').removeClass('hide').addClass('show'); 
$('#manu3').removeClass('hide').addClass('show'); 
</script>"; 
+0

一個簡單的解決方案就是使用轉換頁面和重定向。假設頁面「login」是你表單的目標。 'login'處理表單數據,設置用戶會話(cookie等)並重定向到你的頁面,我們稱之爲'user'。這樣做完成後,當刷新時,刷新'user'而不是'login',而不是綁定到表單數據。所以瀏覽器不要求你再次提交 – Kaddath

+0

https://en.wikipedia.org/wiki/Post/Redirect/Get – CBroe

回答

0

處理表單應該重定向發送到你登錄之後應該顯示的頁面,而不是顯示輸出本身的腳本。這會將新頁面從表單提交中斷開,因此它不會詢問您是否要重新提交表單數據。

$query1 = pg_query($conn, "SELECT * from users WHERE password = '$pswd' and name='$username' "); 
$arr_1 = pg_fetch_all($query1); 
if (!empty($arr_1)) { 
    $_SESSION ['user'] = $_POST['user']; 
    $_SESSION ['password'] = $_POST['password']; 
    header("Location: welcome.php"); 
    exit(); 
} 
+0

我把這段代碼放到了我的If語句中,儘管消息沒有出現,但是在聲明命令點不運行。我編輯我的帖子與PHP。我應該在哪裏放這個代碼? – bummm26

+0

它在我登錄之前有效,但是我登錄了我的if語句('if($ name_lenght> 0 && $ pswd_lenght> 0)')不想執行,所以fr例如註銷按鈕不會通過我的jQuery的。 – bummm26

+0

你爲什麼要測試長度?只要測試查詢是否返回任何行,就像我的答案一樣。 – Barmar