我正在尝试使用php验证我的表单。验证后,它将发出欢迎消息。否则它将重定向到索引页面。我用session来保存变量。但是当我提交表单时,问题就不会发生了,这是我的脚本
<?php session_start();
$_SESSION['reg'] = array();
$name = $_POST['name'];
$email = $_POST['email'];
$passwd = $_POST['passwd'];
$repasswd = $_POST['repasswd'];
if(empty($_POST)){
header("location:register.php");
}
else
{
if(empty($name)){
$_SESSION['reg']['name'] = "Please enter name";
}
if(empty($email)){
$_SESSION['reg']['email'] = "Please enter email";
}
if (empty($passwd)) {
$_SESSION['reg']['passwd'] = "please enter a password";
}
elseif (strlen(passwd)>16) {
$_SESSION['reg']['passwd'] = "At most 16 chars";
# code...
}
if ($passwd != $repasswd) {
$_SESSION['reg']['repasswd'] = "Passwords don't match";
}
if (empty($_SESSION['reg'])) {
header("location:welcome.php");
}
else
{
$_SESSION['data'] = array();
foreach($_POST as $id=>$val)
{
$_SESSION['data'][$id] = $val;
}
header("location:register.php");
}
?>
当我提交表单时,它会显示一个空白页面。
答案 0 :(得分:1)
问题是如果在检查
之前它们不是空的,那么你不会将你的帖子变量存储到会话中if (empty($_SESSION['reg'])) {
我强烈建议在将post变量放入会话范围之前进行一些sql注入预防。
更新:所以如果你想在会话范围内使用变量,而不是检查if(empty($name)){
并在会话中设置错误消息,我会这样做:
if( !empty($name) ){
$_SESSION['reg']['name'] = $name;
} else {
// error handling
}
如果发布的值不为空,这将设置会话变量。现在,当您稍后检查会话变量时,它将具有名称值,并且不会为空。