Php 使用会话返回消息只返回一条消息

Php 使用会话返回消息只返回一条消息,php,html,mysql,forms,validation,Php,Html,Mysql,Forms,Validation,所以我有一张报名表。一个是register.php,它是实际的形式。另一个是处理它的r.php。因此,我使用会话将错误消息从r.php发送到register.php。问题是出于某种原因,我只能知道如何显示一个 这段代码基本上将消息发送到register.php,然后我用 <?php echo isset($_SESSION['name_req']) ? $_SESSION['name_req'] : '';?> 问题是,如果一次只显示一个错误,我想一次显示所有错误。有什么想法吗

所以我有一张报名表。一个是
register.php
,它是实际的形式。另一个是处理它的
r.php
。因此,我使用会话将错误消息从
r.php
发送到
register.php
。问题是出于某种原因,我只能知道如何显示一个

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

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


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

仅使用您提供的代码,页面将重定向。如果只发现一个错误,请尝试以下操作:

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提交表单,submit按钮将不起作用,相反,您可以使用一个隐藏的输入,输入您想要的任何名称和值

$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();
}

显示错误时,使用|分解会话消息并获取单个消息。

退出()后的所有代码都不会执行。!所以如果我摆脱它,它应该是好的@BellashSession变量在浏览器窗口打开时(如果未手动编辑)保持不变。请确保在代码中的某个位置取消设置会话,否则如果没有错误,甚至可能会显示消息。可能是输入错误,但您缺少
strlen()
在您的$name长度检查中。我知道我正在使用
将其取消设置@MarkNijboerHow您建议我检查表单是否已提交?如果提交按钮有名称,只需根据表单的方法检查$u POST['name']或$u GET['name']。我会更新答案。或者他可以使用
if(!empty($\u POST)){
这意味着已经提交了任何表单。注意:不适合多表单页面…所以类似这样的内容?
if(isset($\u POST['name']))
ya如果可以的话,还要确保表单设置为post而不是get。您可以使用$\u request以任何方式获取表单,但最好至少在初始检查时使用post或get。
$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();
}