我正在使用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中,请指出它!