使用session返回消息只返回一条消息

时间:2014-06-26 18:07:43

标签: php html mysql forms validation

所以我有一个注册表格。一个是register.php,这是实际的形式。另一个是r.php,它处理它。所以我使用会话,然后我将错误消息从r.php发送到register.php。问题是由于某种原因我只能弄清楚如何显示一个

if($name === ''){
    $_SESSION['name_req'] = 'Make sure to enter a name';
    header('Location: register.php');
    exit();
}
elseif($name > 255){
    $_SESSION['name_len'] = 'Enter a shorter name';
    header('Location: register.php');
    exit()
}

此代码基本上将消息发送到register.php然后我用

显示错误
<?php echo isset($_SESSION['name_req']) ? $_SESSION['name_req'] : '';?>

问题是,如果我一次只显示一个错误,我想一次显示所有错误。有任何想法吗?

2 个答案:

答案 0 :(得分:2)

只使用您提供的代码,如果只找到一个错误,页面就会重定向,请尝试这样做:

if(isset($_POST['submitbuttonname']) && $_POST['submitbuttonname'] == "submitbuttonvalue") {
    if($name === ''){
        $_SESSION['name_req'] = 'Make sure to enter a name';
    }
    if($name > 255){
        $_SESSION['name_len'] = 'Enter a shorter name';
    }

    header('Location: register.php');
    exit();
}

但如果您使用javascript提交表单,则提交按钮无法正常工作,您可以使用隐藏的输入,无论您想要什么名称和值。

答案 1 :(得分:0)

$sessionValue   = array();
$redirectTo     = "register.php";
if($name === '')
{
    $sessionValue[]       = 'Make sure to enter a name';
}
if($name > 255)
{
    $sessionValue[]       = 'Enter a shorter name';
}
$impSessionVal            = implode("|",$sessionValue);
if($impSessionVal!="")
{
    $_SESSION["errormsg"] = $impSessionVal;
    header("Location: $redirectTo");
    exit();
}

在显示错误时,使用|分解会话消息并获得个人信息。