表单验证无法在PHP中重定向页面

时间:2013-12-05 10:55:34

标签: php

我在使用PHP进行表单验证方面遇到了一些问题。我在google上做了一些研究,问题是我似乎无法在表单操作中使用<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>登录后重定向用户,它会继续停留在index.php页面而不是转到其他页面。

表格

<?php
$usernameErr = $passwordErr = "";
$username = $password = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{

   if (empty($_POST["username"]))
     {$usernameErr = "Username is required.";}
   else
     {$username =($_POST["username"]);}

   if (empty($_POST["password"]))
     {$passwordErr = "Password is required.";}
   else
     {$password =($_POST["password"]);}
}
?>
<body>
<form id="login" name="login" method="post" action="checklogin.php">
<table>
<tr>
<td>Username</td>
<td></td>
<td><input name="username" type="text" id="username"><span class="error"><?php echo $usernameErr;?></span></td>
</tr>
<tr>
<td>Password</td>
<td></td>
<td><input name="password" type="password" id="password"><span class="error"><?php echo $passwordErr;?></span></td>
</tr>
<tr>
<td colspan="3" align="center"><input type="submit" name="submit" value="Login"></td>
</tr>
</table>
</form>

或者我把它放在错误的页面上?我应该把它放在checklogin.php上吗?

3 个答案:

答案 0 :(得分:0)

您未按echo声明重定向。使用header()进行重定向。header("Location:index.php");

有关标题的详细信息,请访问link

答案 1 :(得分:0)

表单验证逻辑确实属于checklogin.php。您已指出<form>将其数据发送至checklogin.php,但您正在index.php进行实际验证。

答案 2 :(得分:0)

叶。你需要把它放在checklogin.php页面。

也可以进行更改

if (isset($_REQUEST['submit']))
{

if (empty($_POST["username"]))
 {
    echo $usernameErr = "Username is required.";}

  elseif (empty($_POST["password"]))
  {
   echo $passwordErr = "Password is required.";}
  else
  {
     echo $password =$_POST["password"];
   echo  $username =$_POST["username"];}
}
?>