PHP无法确定用户是否已登录

时间:2017-07-03 21:11:36

标签: php mysql database session login

我正在创建一个标题会显示“登录”的系统。如果用户未登录,如果用户登录,则会显示注销。我现在简化了它,只是显示用户是否登录。使用"登录!"意思是他们需要登录,并且欢迎!"如果他们已登录。我使用了PHP Code Checker网站(https://phpcodechecker.com/),它无法找到任何错误。我还搜索了stackoverflow,其他人似乎都在工作。

  <?php
  ob_start();
  session_start();
  require_once 'dbconnect.php';
  if( !isset($_SESSION['user']) ) {
  echo "Login!";
  } else {
  echo "Welcome!";
  }
  ?>

是检查用户是否已登录的代码。

我的登录页面适用于其他所有内容,因为我的主页显示用户已登录,但无论如何这里都是代码。 (这只是PHP代码,提交按钮有HTML,等等。)

  <?php
  ob_start();
  session_start();
  require_once 'dbconnect.php';

  // it will never let you open index(login) page if session is set
  if ( isset($_SESSION['user'])!="" ) {
  header("Location: index.php");
  exit;
  }

  $error = false;

  if( isset($_POST['btn-login']) ) { 

  // prevent sql injections/ clear user invalid inputs
  $email = trim($_POST['email']);
  $email = strip_tags($email);
  $email = htmlspecialchars($email);

  $name = trim($_POST['name']);
  $name = strip_tags($name);
  $name = htmlspecialchars($name);


  $pass = trim($_POST['pass']);
  $pass = strip_tags($pass);
  $pass = htmlspecialchars($pass);
  // prevent sql injections / clear user invalid inputs

  if(empty($name)){
  $error = true;
  $nameError = "Please enter your username.";
  }

  if(empty($pass)){
  $error = true;
  $passError = "Please enter your password.";
  }

  // if there's no error, continue to login
  if (!$error) {

  $password = hash('sha256', $pass); // password hashing using SHA256

  $res=mysql_query("SELECT userId, userEmail, userPass FROM users WHERE 
  userName='$name'");
  $row=mysql_fetch_array($res);
  $count = mysql_num_rows($res); // if email/pass correct it returns must be 
  1 row

  if( $count == 1 && $row['userPass']==$password ) {
  $_SESSION['user'] = $row['userId'];
  header("Location: dashboard.php");
  } else {
  $errMSG = "Incorrect Credentials, Try again...";
  }

  }

  }
  ?>

它连接数据库很好,我确定数据库没有问题,因为它适用于我的其他页面。

我花了很长时间试图解决这个问题,但不能。

谢谢!

1 个答案:

答案 0 :(得分:0)

在您的代码中

if ( isset($_SESSION['user'])!="" ) {

你正在比较真假|假!=“”

将其更改为if (isset($_SESSION['user'])) {
要么 if (isset($_SESSION['user']) && ($_SESSION['user']!="")) {