我正在尝试使用服务器端验证表单,但问题是,我无法显示错误消息和输入。详细解释:
表单页面,这是我验证和显示的地方
<?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;
}
}
答案 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 ... }