PHP,同一窗口,不同页面,每个页的SESSION_ID都不同是怎么回事?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP,同一窗口,不同页面,每个页的SESSION_ID都不同是怎么回事?相关的知识,希望对你有一定的参考价值。
login.html login.php welcome.php
--login.php--
<?php
session_start();
$str_UserName = $_POST['UserName'];
$str_Password = $_POST['Password'];
$conn=mysqli_connect('lpdfeom','sd3dsad','12dsfe3','wfe3cdsm');
if(empty($conn))
die("数据库连接失败");
else
$conn->query('set names utf8');
$sqlcmd="select * from Members where UserName='".$str_UserName."'and Password='".$str_Password."'";
$result=$conn->query($sqlcmd);
$row=$result->fetch_row();
if($row)
$_SESSION["UserName"]=$username;
$_SESSION["Password"]='true';
echo "登录成功";
else
$msg="用户名或密码错误";
$_SESSION['msg']=$msg;
echo "用户名或密码错误";
?>
---welcome.php-
<?php
if($_SESSION["Password"]=='true')
echo 'Password:'.$_SESSION["Password"].'<br/>';
echo '欢迎回来!';
else
echo 'Password:'.$_SESSION["Password"].'<br/>';
echo '没有登录<br/>';
echo 'ID:'.session_id().'<br/>';
?>
------------------
在login.html填写正确的账户密码提交给login.php后,login.php读取数据库成功核对并显示登陆成功。之后在地址栏输入welcome.php的地址,得到的页面确实新的SESSION_ID,这是为什么?
------login.php----
<?php
session_start();
$str_UserName = $_POST['UserName'];
$str_Password = $_POST['Password'];
$conn=mysqli_connect('12','23','33','44');
if(empty($conn))
die("数据库连接失败");
else
$conn->query('set names utf8');
$sqlcmd="select * from Members where UserName='".$str_UserName."'and Password='".$str_Password."'";
$result=$conn->query($sqlcmd);
$row=$result->fetch_row();
if($row)
$_SESSION["Online"]='true';
$_SESSION['msg']="登录成功";
echo "<a href='welcome.php'>进入</a>";
else
$_SESSION['msg']="登陆失败";
echo "<a href='welcome.php'>进入</a>";
?>
-------welcome.php------
<?php
session_start();
echo $_SESSION["msg"].'<br/>';
if(isset($_SESSION['Online']))
echo 'Online:'.$_SESSION["Online"].'<br/>';
else
echo 'Online:'.$_SESSION["Online"].'<br/>';
?>
session_start();
这样每个页面都自动开启session 就不会出现你说的那个问题。
sessionid是自动生成的当然不一样了追问
请问初始化文件指的是哪个?PHPINI文件吗?
追答简单来说就是你的项目中 每执行一段代码都会先运行初始化文件里的代码 这样说你明白吗
追问明白了,谢谢。
本回答被提问者采纳 参考技术B welcome.php代码中前面加上session_start();你在login.php中输出下
$_SESSION["Password"]
值看看 参考技术C 你的welcome.php页面session没有启用。追问
加上
session_start();
也不行,这是后来删除的。
现在的问题就是login.php页面注册的SESSION变量,在welcome.php页面里读不出来,不知道是什么原因。
检查下你的运行时设置(ini_get),
session.use_cookies
session.gc_probability
session.gc_maxlifetime
以及浏览器是否禁用了cookie
浏览器没有禁用COOKIE,phpini设置也没有问题。请看问题补充上的代码是否有问题?
追答代码除了welcome少一个
session_start();
其他session的逻辑是正确的
session和localstorage的区别
参考技术A 共同点:都是保存在浏览器端,且同源的。区别:
1、数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;
2、作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;
以上是关于PHP,同一窗口,不同页面,每个页的SESSION_ID都不同是怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章