Альтернатива для устаревших сессионных_записей

session_start();
if (!session_is_registered(user)) {
    header("Location: login.php");
    die();
}

Каков правильный способ сделать это, поскольку session_is_registered() устарел?

Ответы

Ответ 1

использовать if ( isset( $_SESSION['user'] ) ){}

Ответ 2

isset() не будет делать то, что вы хотите все время. Он будет терпеть неудачу, если "пользователь" является ложным (0, false, null, пустая строка). array_key_exists() будет соответствовать таблице истинности session_is_registered, несмотря на то, что php.net говорит:

if ( !array_key_exists( 'user', $_SESSION ) ){
  /* 'user' is in the session */
}

//in other words...
if ( array_key_exists( 'user', $_SESSION ) === session_is_registered( 'user' ) ) {
  /* This is always executed */
}

Ответ 3

На странице login.php, если ваше имя пользователя и пароль совпадают, тогда он зарегистрирует пользователя

session_register("y"); //where y register the user
header("location:user.php&name=$y");

На странице user.php

session_start();
if(!isset( $_SESSION['y'] )) // if the user is not the same user that logged in then 
{                            // it redirects to the login page
    header("location:login.php");
}

Ответ 4

if (empty($_SESSION['user'])){
    // session user does not exist
}