在PHP中的同一页面上打印验证消息


Printing validation message on the same page in PHP

嗨,我有这个处理上传错误的功能。

function error($error, $location, $seconds = 5)
{
    header("Refresh: $seconds; URL='"$location'"");
    echo 'Error :' . $error . ' Please correct before proceeding.';
    exit;
} 

由于这是echo的消息,您知道该消息不在同一页面中显示,您需要点击浏览器返回到原始内容页面。

我想要的是验证消息显示在同一页面上,所以我尝试将代码更改为如下。

function error($error)
{
    $ErrMsg = 'Error :' . $error . ' Please correct before proceeding.';
} 

稍后在表格中的一张桌子上,我有一些类似下面的东西叫按摩。

<td><?php if(!empty($ErrMsg)) echo $ErrMsg; ?></td>

然而,这种方法似乎没有给我所需的解决方案,即在同一页上打印验证消息。

有人能帮忙吗?

谢谢。

您可以使用ajax调用错误函数并在页面上输出消息。

或者,您可以设置$_POST、$_GET或$_SESSION变量,将错误消息传递到下一页。

会话示例:

function error($error)
{
    $_SESSION['ErrMsg'] = 'Error :' . $error . ' Please correct before proceeding.';
} 

后来。。。

<td>
<?php if (!empty($_SESSION['ErrMsg'])) {
 echo $_SESSION['ErrMsg']; 
}?>
</td>

如果表单发布到它所在的同一页面,您可以尝试以下操作:

function uploadValidation()
{
    $errorReason = '';
    // do validation here
    // if something goes wrong $errorReason = 'reason for error'
    if (!empty($errorReason)) {
        return 'Error :' . $errorReason . ' Please correct before proceeding.';
    } else {
        // success stuff
        // maybe return thanks message or redirect somewhere else?
        return 'You upload real good!';
    }
}
$validationMessage = uploadValidation();
?>
And later in the form in a table I have something like following to call the massage.
<td><?= $validationMessage ?></td>

if...代码之后和echo之前添加{,并在echo...代码之后添加关闭的}

实际上很难根据你的描述来判断你想要实现什么。但试试这个:

<?php
function error($error) {
    return 'Error :' . $error . ' Please correct before proceeding.';
}
?>

然后:

<td><?php echo error('YOUR ERROR CODE') ?></td>