我正在使用GUMP https://github.com/Wixel/GUMP進行服務器端表單驗證,並在重定向後顯示消息時有疑問。使用GUMP進行PHP表單驗證
我想在提交後驗證表單數據,然後在出現錯誤時重定向到表單,但我不知道在重定向之後將錯誤傳遞到表單的最佳方法。
我讀過這個問題Header Redirect after form Validation in PHP這表明這樣做的方法有兩種:
1.
$message="Some message for the next page.";
$message=urlencode($message);
header("Location:page.php?message=".$message);
2.
$_SESSION['message']='some other message';
答案筆者認爲方法1更安全,但你能告訴我爲什麼會這樣嗎?
我也看了一下它是如何通過PHP的形式,器類https://github.com/lkorth/php-form-builder-class做,他們似乎使用方法2:
/*Valldation errors are saved in the session after the form submission, and will be displayed to the user
when redirected back to the form.*/
public static function setError($id, $errors, $element = "") {
if(!is_array($errors))
$errors = array($errors);
if(empty($_SESSION["pfbc"][$id]["errors"][$element]))
$_SESSION["pfbc"][$id]["errors"][$element] = array();
foreach($errors as $error)
$_SESSION["pfbc"][$id]["errors"][$element][] = $error;
}
所以,我的問題是,這是最好的方法去解決這個問題?通過$_GET
或在會話變量中傳遞錯誤?
p.s.如果我錯過了某些東西,並且有一種方法可以更容易地將其嵌入到GUMP中,請指出它!