php.ini
session.use_cookies = 1
改成0
其实就把session id 用url来传递form iframe等标签php也会给改写增加了session id的值
session.use_cookies = 1
改成0
其实就把session id 用url来传递form iframe等标签php也会给改写增加了session id的值
调试欢乐多
//上面这句是想通过URL的方式来传递SESSION ID的,但我是用POST方式登录,所以这样使用。这一句的作用是什么啊?看不明白
<input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo $_GET[session_name()];?>">
是正常可以用的,
所以我在FORM中也这样传递参数过去,只不过是以POST的方式。
<input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo str_replace(session_name() . '=', '',strip_tags(SID));?>">它最后的实际应该是:
<input type="hidden" name="PHPSESSID" value="一串SESSION ID数字">
应该是和上面的形式一样的,但不知道为什么没效果。
Warning: Unknown(): The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in Unknown on line 0
} else {
$_SESSION['admin'] = 1;
header('location:index.php');
}
为
} else {
$_SESSION['admin'] = 1;
header('location:index.php?' . SID);
}
后,正常。多谢大家的帮助,晚上结贴,快进来接分吧。
禁用客户端的COOKIE
和
客户端禁用COOKIE
是两回事情
前者只能人为的通过url参数或表单传递sessionid
后者php回自动处理2、在你的程序里使用了常量SID
但是你应该注意到SID只在session第一次生效时才有值
<?php
session_start();
echo SID;
echo '<br>'.session_id();
?>
输出
PHPSESSID=31a67cb7b2b564cea2e1d7dc34217653
31a67cb7b2b564cea2e1d7dc34217653
刷新一下,输出31a67cb7b2b564cea2e1d7dc34217653*** SID的值没有了!所以
<input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo str_replace(session_name() . '=', '',strip_tags(SID));?>">
应改为
<input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo session_id();?>">
我觉得最佳的,应该是 ini =0 让 PHP 去改写 sessionid 的值。
当然,你也可以手工在 每个URL后加上 session id
事实证明,有时候客户端没有禁用COOKIE,也会存在 session_id 丢失的现象。所以,一般在 session_start() 后。最好来一个 setcookie 比较好。至于说用 <INPUT hidden 为什么不行。那应该是 ini 里没有打开全局变量的原因。先前,全局变量是打开的。这样。你设置一个 POST 变量,在下一页面 可能 PHPSESSID 有值。所以,能成功。