【问题标题】:PHP Getting POST value errorPHP获取POST值错误
【发布时间】:2014-06-12 09:09:46
【问题描述】:

当用户尝试登录系统时,我遇到了这个问题:

  1. 用户名/密码错误
    • 系统会提示用户账号错误。
  2. 正确的用户名/密码
    • 系统刷新停留在登录页面,没有给出任何错误消息。

调试后发现,当用户输入正确的用户名和密码时(经过多次组合测试)if($_POST['form']$_POST['form'] == "login")的值会返回false,导致系统刷新并停留在登录页面。它会回显“asd”

 case 'login':
    if ($LOGIN_SESSION) {
        header("Location:index.php?cmd=home");
    }
    include('inc/header_tpl.php');
    if (isset($_POST['form']) && $_POST['form'] == "login") {
        if (!isset($_POST['username']) || !isset($_POST['password']) || $_POST['password'] == "" || $_POST['username'] == "") {
           $error_warning = 1;
        } else {
            $username = $_POST['username'];
            $password = $_POST['password'];
            $isLegal = VAccess::IsLegalUser($username, $password);
            if ($isLegal) {
                $_SESSION['role'] = VAccess::getRole($username);
                $_SESSION['logged'] = true;
                $_SESSION['username'] = $username;
                if ($_SESSION['role'] == "Administrator") {
                    $_SESSION['admin_username'] = $username;  
                } else if ($_SESSION['role'] == "Guest") {
                    $_SESSION['guest_username'] = $username;
                }
                $error_warning = 0;
                header("Location:index.php?cmd=home");
            } else {
                $error_warning = 1;
            }
        }
    }else{
       echo "asd";
    }
    include('view/login.php');
    include('inc/footer_tpl.php');
    break;

下面是我的登录表单:

<form action="" method="post" id="login_form">
        <input type="hidden" name="form" value="login"/>
        <table style="width: 100%;">
          <tbody><tr>
            <td style="text-align: center;" rowspan="4"><img src="img/login.png" alt="Please enter your login details."></td>
          </tr>
          <tr>
            <td>Username:<br>
              <input type="text" name="username" value="" style="margin-top: 4px;">
              <br>
              <br>
              Password:
              <br>
              <input type="password" name="password" value="" style="margin-top: 4px;">
              <br>
            <!--  <a href="index.php?cmd=forgotten">Forgotten Password</a> -->
            </td>
          </tr>
          <tr>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td style="text-align: right;"><a onclick="$('#login_form').submit();" class="button">Login</a></td>
          </tr>
        </tbody>
        </table>
    </form>

  public static function IsLegalUser($username, $password) {
    $sql = "SELECT * FROM user WHERE USERNAME = '$username' and PASSWORD = '$password'";
    $query = mysql_query($sql) or die(mysql_error());

    if (mysql_num_rows($query) > 0) {

        return true;
    } else {
        return false;
    }
}

我的代码基本上工作正常,但今天我的客户告诉我他无法登录系统。我在本地主机上测试了代码,它运行良好。但是问题是为什么当输入正确的组合时系统会跳转到else并回显“asd”,实际上我还没有从数据库中检查登录信息。

【问题讨论】:

  • 尝试使用 $_REQUEST 代替 $_POST
  • 仍然是相同的“asd”打印

标签: php


【解决方案1】:

您正在发送新标头但未停止 PHP 执行尝试

header("Location:index.php?cmd=home");
exit();

【讨论】:

  • 你试过了吗?请告诉我它解决了你的问题:)
  • 试过了,还是一样的问题。实际上之前的代码运行良好,今天我的客户尝试登录并遇到了这个问题;
  • 在两个 header() 之后添加了退出?
  • 你在两个标题后添加了退出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2017-08-15
  • 2016-06-04
  • 1970-01-01
  • 2017-02-27
相关资源
最近更新 更多