PHP 刷新时删除会话变量
PHP drops session variables on refresh
我目前正在学习如何使用 PHP 制作登录系统。一开始一切似乎都很简单——我将输入数据设置为 $_SESSION
变量,然后在我打开的下一页开始会话。但是,当我刷新页面时,会话仍在工作,但可变数据已被删除且无法识别。
这是我设置变量的 php:
<?php
include ("connection.php"); //connects to the database.
if(isset($_POST['login']))
{
$user_name = $_POST['EMAIL'];
$password = $_POST['PASSWORD'];
// echo $user_name, " AND ", $password, "<br>";
$q = "SELECT * FROM ".$table." WHERE EMAIL='".$user_name."' AND PASSWORD= '".$password."' AND IS_ADMIN= 'YES';";
// echo "<br>",$q,"<br>";
$r = mysqli_query($conn, $q);
if(mysqli_num_rows($r) > 0)
{
if(session_id() == '' || !isset($_SESSION))
{
// session isn't started
session_start();
echo "<br>GREAT SUCCESS!!!<br>";
$_SESSION["SESSION_EMAIL"]= $user_name;
$_SESSION["SESSION_PASSWORD"]= $password;
echo $_SESSION["SESSION_EMAIL"], " ", $_SESSION["SESSION_PASSWORD"];
header("Refresh:0; url=\website2.php");
}
}
else echo "<br>FAIL!!!<br>";
}
?>
这是我用来检查下一页会发生什么的位:
<?php
session_start();
if (session_status() == PHP_SESSION_ACTIVE)
{
echo 'Session is active <br>';
} else echo"session is ded";
echo $_SESSION["SESSION_EMAIL"]; // it prints out an error if it screws up here
?>
<?php
session_start();
include ("connection.php"); //connects to the database.
if(isset($_POST['login']))
{
$user_name = $_POST['EMAIL'];
$password = $_POST['PASSWORD'];
// echo $user_name, " AND ", $password, "<br>";
$q = "SELECT * FROM ".$table." WHERE EMAIL='".$user_name."' AND PASSWORD= '".$password."' AND IS_ADMIN= 'YES';";
// echo "<br>",$q,"<br>";
$r = mysqli_query($conn, $q);
if(mysqli_num_rows($r) > 0)
{
if(!isset($_SESSION["SESSION_EMAIL"]))
{
// session isn't started
echo "<br>GREAT SUCCESS!!!<br>";
$_SESSION["SESSION_EMAIL"]= $user_name;
$_SESSION["SESSION_PASSWORD"]= $password;
echo $_SESSION["SESSION_EMAIL"], " ", $_SESSION["SESSION_PASSWORD"];
header("Refresh:0; url=\website2.php");
}
}
else echo "<br>FAIL!!!<br>";
}
?>
并在第二页检查类似这样的内容
<?php
session_start();
if (isset($_SESSION["SESSION_EMAIL"]))
{
echo 'Session is active <br>';
echo $_SESSION["SESSION_EMAIL"];
} else echo"session is ded";
// it prints out an error if it screws up here
?>
希望对您有所帮助
或
您可以检查其他会话变量
我真的不想这么说,老实说,我应该早点做,但是在重新启动我的 XAMPP 和 PHP 服务器后,一切似乎都已自行修复,会话正常工作现在。现在什么都不会丢失,页面之间的所有转换都毫不费力。
对于所有思考我这个愚蠢问题的人,我深表歉意,我还要感谢他们付出的所有时间和精力来回答。
再次感谢大家!
我目前正在学习如何使用 PHP 制作登录系统。一开始一切似乎都很简单——我将输入数据设置为 $_SESSION
变量,然后在我打开的下一页开始会话。但是,当我刷新页面时,会话仍在工作,但可变数据已被删除且无法识别。
这是我设置变量的 php:
<?php
include ("connection.php"); //connects to the database.
if(isset($_POST['login']))
{
$user_name = $_POST['EMAIL'];
$password = $_POST['PASSWORD'];
// echo $user_name, " AND ", $password, "<br>";
$q = "SELECT * FROM ".$table." WHERE EMAIL='".$user_name."' AND PASSWORD= '".$password."' AND IS_ADMIN= 'YES';";
// echo "<br>",$q,"<br>";
$r = mysqli_query($conn, $q);
if(mysqli_num_rows($r) > 0)
{
if(session_id() == '' || !isset($_SESSION))
{
// session isn't started
session_start();
echo "<br>GREAT SUCCESS!!!<br>";
$_SESSION["SESSION_EMAIL"]= $user_name;
$_SESSION["SESSION_PASSWORD"]= $password;
echo $_SESSION["SESSION_EMAIL"], " ", $_SESSION["SESSION_PASSWORD"];
header("Refresh:0; url=\website2.php");
}
}
else echo "<br>FAIL!!!<br>";
}
?>
这是我用来检查下一页会发生什么的位:
<?php
session_start();
if (session_status() == PHP_SESSION_ACTIVE)
{
echo 'Session is active <br>';
} else echo"session is ded";
echo $_SESSION["SESSION_EMAIL"]; // it prints out an error if it screws up here
?>
<?php
session_start();
include ("connection.php"); //connects to the database.
if(isset($_POST['login']))
{
$user_name = $_POST['EMAIL'];
$password = $_POST['PASSWORD'];
// echo $user_name, " AND ", $password, "<br>";
$q = "SELECT * FROM ".$table." WHERE EMAIL='".$user_name."' AND PASSWORD= '".$password."' AND IS_ADMIN= 'YES';";
// echo "<br>",$q,"<br>";
$r = mysqli_query($conn, $q);
if(mysqli_num_rows($r) > 0)
{
if(!isset($_SESSION["SESSION_EMAIL"]))
{
// session isn't started
echo "<br>GREAT SUCCESS!!!<br>";
$_SESSION["SESSION_EMAIL"]= $user_name;
$_SESSION["SESSION_PASSWORD"]= $password;
echo $_SESSION["SESSION_EMAIL"], " ", $_SESSION["SESSION_PASSWORD"];
header("Refresh:0; url=\website2.php");
}
}
else echo "<br>FAIL!!!<br>";
}
?>
并在第二页检查类似这样的内容
<?php
session_start();
if (isset($_SESSION["SESSION_EMAIL"]))
{
echo 'Session is active <br>';
echo $_SESSION["SESSION_EMAIL"];
} else echo"session is ded";
// it prints out an error if it screws up here
?>
希望对您有所帮助
或
您可以检查其他会话变量
我真的不想这么说,老实说,我应该早点做,但是在重新启动我的 XAMPP 和 PHP 服务器后,一切似乎都已自行修复,会话正常工作现在。现在什么都不会丢失,页面之间的所有转换都毫不费力。
对于所有思考我这个愚蠢问题的人,我深表歉意,我还要感谢他们付出的所有时间和精力来回答。
再次感谢大家!