Как игнорировать сеанс, если сеанс уже был запущен?

#php #html

#php #HTML

Вопрос:

У меня есть страница входа в систему, и когда я вхожу в систему, она приводит меня на мою домашнюю страницу. Если пользователь не выйдет из системы и вернется позже, ему не нужно будет входить в систему снова. Однако, если пользователь уже вошел в систему, он отобразит сообщение об ошибке, в котором говорится, что сеанс уже запущен, и, следовательно, он игнорирует следующий код.

Это мой session.php досье. Я хотел бы добавить оператор if, в котором говорится, что если сеанс уже запущен, то переведите пользователя на домашнюю страницу, а если сеанс не запущен, то переведите пользователя на страницу входа.

 <?php
// mysqli_connect() function opens a new connection to the MySQL server. 
$conn = mysqli_connect("localhost", "root", "", "supercar"); 
session_start();// Starting Session
// Storing Session 
$user_check = $_SESSION['login_user']; 
// SQL Query To Fetch Complete Information Of User 
$query = "SELECT * from adminlogin where email = '$user_check'"; 
$ses_sql = mysqli_query($conn, $query); 
$row = mysqli_fetch_assoc($ses_sql); 
$login_session = $row['nom'];
$login_session2 = $row['id'];
$login_session3 = $row['motdepasse'];

?>
 

Ответ №1:

попробуйте этот код:

 if(!isset( $_SESSION['login_user'])){
   $_SESSION['login_user'];
} else {
   header("location:index.php");
}
 

Ответ №2:

Ответы, приведенные выше, могут помочь, но вам также необходимо проверить наличие сеанса. если сеанс запущен, и вы переходите на веб-страницу, где session_start() существует, вы получите сообщение об ошибке, используйте приведенный ниже код.

 if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
 

оформить заказ здесь сеанс здесь

Ответ №3:

функция empty() проверит, установлена эта переменная или нет, со значением empty или нет. Поэтому вам не нужно сравнивать его значение. Если значение меняется, вам нужно сравнить значения.

 if(!empty($_SESSION['login_user'])):
   // Your session is already set
else:
   // Your session is not set yet
endif;
 

Ответ №4:

Попробуйте это

 $user = $_SESSION['login_user'];
if(isset($user) amp;amp; $user != ''){
   $query = "SELECT * from adminlogin where email = '$user'"; 
   $ses_sql = mysqli_query($conn, $query); 
   $row = mysqli_fetch_assoc($ses_sql); 
   $login_session = $row['nom'];
   $login_session2 = $row['id'];
   $login_session3 = $row['motdepasse'];
}else{
   header("location:index.php");
}
 

Комментарии:

1. Если пустые имена пользователей не разрешены, это сработает. Но не приведет ли это к появлению уведомления, если сеанс не запущен? $user будет пустым, а strlen — пустым, не будет ли это «неисчислимой переменной»?

Ответ №5:

Попробуйте это:

 if(empty($SESSION['login_user'])){
  session_start(); //Start session and put session value
}else{
  //Redirect here
}