未设置会话时会发生重定向循环



"Session.php";

if(!isset($_SESSION['username'])) 
{                                       
header('Location: ./index.php'); // Redirecting To Home Page per il login
exit;
}
session_start();// Start new session or resume existing session
//echo 'session_id: '.session_id();

require "connessione.php";
$connessione = connessionedb("db");


$username=$_SESSION['username'];
$username = $connessione->real_escape_string($username);

$query = "SELECT * FROM utenti where idUtente= '$username' ";
$risultato = mysqli_query($connessione, $query);

$num_record = mysqli_num_rows ($risultato);
if ($num_record!=1)
{
header('Location: ./index.php'); // Redirecting To Home Page per il login
$con->close();
exit; 
}

我希望它在没有会话的时候把我送回家,但它会进行重定向循环。

当您已经使用index.php时,不要进行此检查。

if($_SERVER['PHP_SELF'] != '/index.php' && !isset($_SESSION['username'])) 
{                                       
header('Location: ./index.php'); // Redirecting To Home Page per il login
exit;
}

在索引文件中使用不同的会话检查,如

if(isset($_SESSION['username'])){                                       

header('Location: ./dashboard.php'); // Redirecting To Dasboard Page Already logged in
exit;

}

$_SESSION变量直到SESSION_start()才创建;被调用。由于在评估$_session['username']之后有session_start(),它将始终返回为未设置,因为$_session本身尚未设置。

此外,正如Barmar所指出的,如果您在index.php文件中需要session.php,而您还没有启动会话,那么它总是会导致循环。既然你已经进入了index.php,就退出吧。不要重定向。

以下是代码修改:

session_start();// Start new session or resume existing session
if(!isset($_SESSION['username'])) 
{                                       
exit;
}
//echo 'session_id: '.session_id();
require "connessione.php";
$connessione = connessionedb("db");

$username=$_SESSION['username'];
$username = $connessione->real_escape_string($username);
$query = "SELECT * FROM utenti where idUtente= '$username' ";
$risultato = mysqli_query($connessione, $query);
$num_record = mysqli_num_rows ($risultato);
if ($num_record!=1)
{
header('Location: ./index.php'); // Redirecting To Home Page per il login
$con->close();
exit; 
}

最新更新