Я создаю систему, в которой заголовок покажет «логин», если пользователь не войдет в систему, и если это так, отобразится выход из системы. Я упростил это сейчас, просто показывая, зарегистрирован ли пользователь или нет. С «Войти!» то есть они должны войти в систему и «Добро пожаловать!». если они вошли в систему. Я использовал сайт 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 для кнопки submit, ect.)
<?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..."; } } } ?>
Он прекрасно подключается к базе данных, и я уверен, что проблем с базой данных нет, так как она работает на моих других страницах.
Я потратил много времени, пытаясь понять это, и не могу.
Благодаря!
В вашем коде
if ( isset($_SESSION['user'])!="" ) {
вы сравниваете true | false! = ""
измените его на if (isset($_SESSION['user'])) {
или if (isset($_SESSION['user']) && ($_SESSION['user']!="")) {