我正在尝试通过AJAX请求保留会话.仅仅调用session_start()不会接听现有的会话,而是创建一个新的会话ID.我的解决方案是通过AJAX调用将会话ID传递给PHP,但这导致以下错误:
Warning: session_start() [function.session-start]: The session id is too long or contains illegal characters, valid characters are a-z, A-Z, 0-9 and ‘-,’ in …
我相信这是因为当前会话ID包含下划线字符,但是该会话ID是通过对session_id()的调用来获取的,那么它如何包含错误字符?
我的意思的简单例子:
页面上的JavaScript(使用jQuery)
var sessID = "<?php echo session_id(); ?>"; //sessID contains underscore characters
$.get('/path/to/script.php',{sid:sessID}, function(data) {
//do something
});
script.php
<?php
session_id($_GET['sid']);
session_start();
echo $_SESSION['some_key'];
?>
因此,我目前正在考虑解析第一页上的会话ID,并在尝试使用它之前替换其中的所有错误字符,但是我不确定这是正确的选择还是需要在其他地方查看寻找解决方案.
解决方法:
$.get('/path/to/script.php',{sid:<?php echo session_id(); ?>}, function(data) {
//do something
});
应该
$.get('/path/to/script.php',{sid:"<?php echo session_id(); ?>"}, function(data) {
//do something
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。