PHP表单验证服务器端,页面显示错误,在其他页面上显示输出

时间:2014-01-27 07:34:13

标签: php forms validation

我正在尝试使用服务器端验证表单,但问题是,我无法显示错误消息和输入。详细解释:

  • 有一个可以发布输入的表单
  • 验证数据,例如:如果为空,则在页面上显示错误,否则进入目标页面

表单页面,这是我验证和显示的地方

   <?php

  ?>
<?=$firstErr?>
<form method="POST" action="">
<input type="text" name="firstname" />

<input type="text" name="secondname" >
<input type="submit" name="submit" >
</form>

目标网页

if(isset($_POST['submit']))
{
    $first = $_POST['firstname'];
    $second = $_POST['secondname'];

    if($first == "" && $second== "")
    {

        echo "<script language='javascript'>window.location = 'main.php';</script>";
        $firstErr .= '<p class="error">Username should be alpha numeric characters only.</p>';
    }   

    else
    {
        echo $first; 
        echo $second;
    }
}

3 个答案:

答案 0 :(得分:0)

这是因为您已经在行执行之前被重定向到页面。

而是添加这样的提醒。

if($first == "" && $second== "")
    {
        echo "<script>alert('Username should be alpha numeric characters only.');</script>"; //<-- Added here
        echo "<script language='javascript'>window.location = 'main.php';</script>";
    }   

答案 1 :(得分:0)

当您需要返回main.php时,javascript只会加载该页面。

据我所知,您将不得不采用某种检查方法,将错误代码存储在会话或cookie上,然后编写检查以显示有错误的消息。一旦main.php被加载,您将必须清除保存的错误。 或者您可以通过修改您的JavaScript来通过$ _GET传递错误消息。

您的javascript可能看起来像

window.location = "main.php?err=1";

您可以将main.php设置为

 if(isset($_GET['err'])) {
       //Your logic to check the error message number and display text goes here
   }

理想的做法是在客户端使用javascript / jquery进行验证,但由于您提到这是服务器端验证,因此您必须使用具有为此类表单验证奠定了所有基础的框架(使用框架)有很多优点和缺点所以我不确定这对你是否可行。只是把它放在那里),或者编写你自己的小逻辑来检查并恢复到带有错误代码的主页面。

答案 2 :(得分:0)

这是因为重定向发生并且PHP没有执行。您可以做的是在重定向中设置GET参数。

echo "<script language='javascript'>window.location = 'main.php?error=1';</script>";

在main.php上

if(isset($_GET['error']) && $_GET['error'] == 1) { do code ... }