无法在PHP

时间:2015-05-26 07:07:50

标签: php include

我有一个登录表单index.php,其输入为ID和Password.I获取输入并将其提交给另一个名为的文件 login_user.php  它接受数据。

如果凭据正确,则用户将正确路由到主页。但是当用户输入了错误的登录详细信息时,我必须检查DB中存储的值。所以我认为variable中使用了login_user.php,然后include使用了index.php {1}}并在div中打印错误。到目前为止,我制作了这段代码。

<div class="alert alert-warning alert-dismissible" role="alert" id="alert_login_error">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
           <span aria-hidden="true">&times;</span>
        </button>
        <strong id="error_flag">
            Invalid Login Details
        </strong>
</div>
  <?php
    include "login_user.php";
    if (empty($error)) {
      echo "<script>  $('#alert_login_error').hide(); console.log('empty');</script>";
    }
    else {
      echo "<script>  $('#alert_login_error').show();console.log('not empty');</script>";
    }
 ?>

login_user.php文件有此

$error = ""; #this is set at the start of the file
$num_rows = mysql_num_rows($result);
            if ($num_rows > 0) {
              #User is redirected to Home Page if details are correct
              #If the password is wrong then in a function
               $error = "Invalid password";
               header('Location: index.php');
            }
            else {
              $error = "Invalid Login details";
              header('Location: index.php');
            }

此代码的作用

  

加载index.php时,隐藏了定义错误的div。这很好。

     

但是当用户输入错误的登录输入时。然后div也设置为隐藏

我不明白我在哪里弄错了。如果需要更多的东西,请询问,以便我能提供。谢谢!

2 个答案:

答案 0 :(得分:2)

您正在使用header('location: index.php')代码立即重定向用户;一旦发生这种情况,$error会在页面加载干净的情况下被清除干净,这意味着您的if (empty($error))条件将始终评估为true

答案 1 :(得分:1)

我个人使用$ _SESSION变量通过PHP脚本管理错误。

你的div将是

<div id='error'> {$_SESSION['error']} </div>

你在显示它之后就把它杀了。

这是heredoc语法。对不起,如果你不习惯的话。

通过这种方式,您不必管理显示/隐藏div,因为如果$_SESSION['error']为空,div将为空

注意:我不知道这是否是一个好的解决方案,但它至少是一个有效的解决方案!

所以你的PHP脚本将是:

 if ($num_rows > 0) {
          #User is redirected to Home Page if details are correct
          #If the password is wrong then in a function
           $_SESSION['error'] = "Invalid password";
           header('Location: index.php');
 }
 else {
          $_SESSION['error'] = "Invalid Login details";
          header('Location: index.php');
 }