我可以为我的生活找出为什么我会丢失所有会话变量
这是我的php代码:
<?php
if($_POST['loginButton']){
session_destroy();
session_start();
$con = mysql_connect("localhost", $_POST["userNameTextBox"], $_POST["passwordTextBox"]);
if (!$con)
{
echo 'Could not connect: ' . mysql_error() ;
header( 'Location: index_error.html' ) ;
die();
}
//else
$_SESSION['IP']="localhost";
$_SESSION['username']=$_POST["userNameTextBox"];
$_SESSION['password']=$_POST["passwordTextBox"];
$_SESSION['database']="Chuckles_DB";
$_SESSION['Result'] ="Hi";
}
?>
但是当我运行下一个php脚本时
<?php
$res=session_start();
echo "Session Started with ".$res." <br>";
echo "Test::>".$_SESSION['IP']." ".$_SESSION['username']." ".$_SESSION['password']." ".$_SESSION['database']."<:::<br>";
$con = mysql_connect( $_SESSION['IP'],$_SESSION['username'],$_SESSION['password']);
if (!$con)
{
echo 'Could not connect: ' . mysql_error() . " <br><br>";
echo '<a href="index.html" target="">Please re-login to the web site</a> ';
}
else{
echo $con;
}
?>
设置的值不存在(它们在第一次发布到此页面时出现,但如果再次发布,它们就会消失);
感谢您的帮助!
答案 0 :(得分:0)
您的代码应该像
<?php
if(!session_start()){
echo "Session Failed!";
exit();
}
if(isset($_POST['commit_sale'])) {
echo 'Test7';
commit_sale($_SESSION['ticker']);
unset($_SESSION['ticker']);
}
?>
答案 1 :(得分:0)
可能它不是一个合适的答案,但我发现PHP会话相当痛苦。有时它们会造成麻烦,很容易被简单的数据库表替换。您只需创建会话ID并将其存储在数据库表和cookie中。如果你还需要连接数据库,它可能会更快。但是,如果在您的情况下不可能,您可能也会考虑做PHP的工作;使用文件系统存储会话数据。如果您可以使用特定的数据库和表来获取登录信息,请使用它。如果您没有其他选择,请考虑使用文件。
PS:如果您使用手动方法(数据库或文件系统),请创建长会话ID。