PHP no puede determinar si el usuario ha iniciado sesión o no
Estoy creando un sistema en el que el encabezado mostrará 'inicio de sesión' si el usuario no ha iniciado sesión, y si lo está, mostrará el cierre de sesión. Lo he simplificado por ahora, solo mostrando si el usuario ha iniciado sesión o no. Con "Iniciar sesión!" lo que significa que necesitan iniciar sesión y "¡Bienvenido!" si están conectados. Usé el sitio web PHP Code Checker (https://phpcodechecker.com/) y no pudo encontrar ningún error. También busqué stackoverflow, y todos los demás parecen funcionar.
<?php
ob_start();
session_start();
require_once 'dbconnect.php';
if( !isset($_SESSION['user']) ) {
echo "Login!";
} else {
echo "Welcome!";
}
?>
es el código que verifica si el usuario inició sesión o no.
Mi página de inicio de sesión funciona para TODO lo demás, ya que mi página de inicio muestra que el usuario ha iniciado sesión, pero aquí está el código de todos modos. (Este es solo el código PHP, hay HTML para el botón de envío, etc.)
<?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...";
}
}
}
?>
Se conecta bien a la base de datos, y estoy seguro de que no hay problemas con la base de datos, ya que funciona en mis otras páginas.
He pasado mucho tiempo tratando de resolver esto, y no puedo.
¡Gracias!