PHP登录系统不起作用

时间:2018-08-21 14:26:39

标签: php sql database login

我正在使用PHP创建登录系统,但无法正常工作

这是我的登录页面:

<div class="container">
  <form method="post" action="index.php?page=login">
    <div class="form-group row">
      <label for="loginFormInputEmail" class="col-sm-2 col-form-label">Email:</label>
      <div class="col-sm-10">
        <input id="loginFormInputEmail" class="form-control" type="email" name="email" value="<?php if(!empty($_POST['email'])) echo $_POST['email'];?>" />
      </div>
    </div>
    <div class="form-group row">
      <label for="loginFormInputPass" class="col-sm-2 col-form-label">Pass:</label>
      <div class="col-sm-10">
        <input id="loginFormInputPass" class="form-control" type="password" name="password" />
      </div>
    </div>
    <div class="form-group row">
      <div class="offset-sm-2 col-sm-10">
        <input class="btn btn-primary" type="submit" value="login" />
      </div>
    </div>
  </form>
</div>

这是我放置登录系统的Usercontroller文件:

public function login() {
    if(!empty($_POST)) {
      if(!empty($_POST['email']) && !empty($_POST['password'])) {
        $existing = $this->userDAO->selectByEmail($_POST['email']);
        if(!empty($existing)) {
          if (password_verify($_POST['password'], $existing['password'])) {
            $_SESSION['user'] = $existing;
          } else {
            $_SESSION['error'] = 'Unknown username / password';
          }
        } else {
          $_SESSION['error'] = 'Unknown username / password';
        }
      } else {
        $_SESSION['error'] = 'Unknown username / password';
      }
    }
    header('Location: index.php');
    exit();
  }

问题是,如果我进入登录页面,它将自动返回索引页面,因为我的位置为:index.php。但是我不知道如何更改它以使其工作。

1 个答案:

答案 0 :(得分:1)

验证用户时,您需要添加header()。用户通过验证后,标头可以走到哪里。

public function login() {
    if(!empty($_POST)) {
      if(!empty($_POST['email']) && !empty($_POST['password'])) {
        $existing = $this->userDAO->selectByEmail($_POST['email']);
        if(!empty($existing)) {
          if (password_verify($_POST['password'], $existing['password'])) {
            $_SESSION['user'] = $existing;

            header('Location: some_where_else.php');
            // dont forget the exit as header does not stop the flow of execution
            exit;


          } else {
            $_SESSION['error'] = 'Unknown username / password';
          }
        } else {
          $_SESSION['error'] = 'Unknown username / password';
        }
      } else {
        $_SESSION['error'] = 'Unknown username / password';
      }
    }
    // This is now run only when validation failed
    header('Location: index.php');
    exit();
}