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!

Respuestas a la pregunta(1)

Su respuesta a la pregunta