2012-08-15 54 views
0

有哪些選項可用於將錯誤消息發送回表單頁面?將錯誤消息傳遞到其他頁面

我有一個表格login.php它提交到process.phpprocess.php處理數據庫連接,驗證等。如果出現錯誤,我想將其傳遞迴index.php

即:

} else { 
    session_destroy(); 
    header("Location: /login"); 
    $error = "Sorry, that user name or password is incorrect. Please try again."; 
} 

因爲這是兩個不同的文件,有什麼可用於設置和檢索錯誤的最佳選擇? $_POST$_GET$_SESSION

+0

會議可能是一個不錯的選擇,它不會弄亂你的URL。只要確保在讀出後將其刪除即可。 – kapa 2012-08-15 23:57:58

+0

會話是一個可怕的解決方案 - 爲什麼不在腳本中顯示消息,該消息一直在處理數據? – zerkms 2012-08-15 23:59:30

+0

@zerkms這將在很大程度上取決於他的架構。根據給出的數據和問題,會話是合乎邏輯的選擇 – orourkek 2012-08-16 00:00:42

回答

1

對於您的具體情況,並給出的代碼,$_SESSION是你最好的選擇。即:

$_SESSION['login_error_msg'] = "Sorry, that user name or password is incorrect. Please try again."; 

然後回來的index.php你必須以某種方式檢查會話變量,e.g:

if(! empty($_SESSION['login_error_msg'])) 
{ 
    //display the message however you want 
    unset($_SESSION['login_error_msg']; 
} 
1

我在想,$ _SESSION將是您的最佳選擇,而不會向用戶暴露太多信息。

2

我建議使用$ _SESSION。首先,你不必擔心刷新問題,如果你使用$ _GET,並且宇宙的渣滓可以共享一個頁面,並且改變查詢字符串與頁面上顯示的內容混淆。

如果有$ _SESSION和如果創建一個唯一的標識符的每個形成你有,可以顯示一個警告,然後警告後,被輸出時,未設置該$ _SESSION數組中值

例如它設置

$_SESSION['uniq_form']['warning'] = 'You got this wrong'; 

下一頁:

echo $_SESSION['uniq_form']['warning']; 
unset($_SESSION['uniq_form']['warning']); 
2

一個簡單的解決方法就是使用$ _SESSION。

process.php:

<?php 
else { 
//session_destroy(); 

$_SESSION['error'] = "Sorry, that user name or password is incorrect. Please try again."; 
header("Location: /login"); 
exit(): 
} 

的login.php:

<?php if(isset($_SESSION['error'])){ 
    echo $_SESSION['error']; 
    unset($_SESSION['error']; 
} 
相關問題