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

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

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

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

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 */ } 

На странице 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"); } 
 if (empty($_SESSION['user'])){ // session user does not exist }