第一次加载时通过AJAX调用启动的第二个PHP会话

时间:2014-10-26 09:02:28

标签: php ajax sessionid

我目前正在尝试建立我的第一个网站,但我遇到了PHP会话的问题。当我第一次在浏览器中加载页面时,我在其中包含一个.php文件,然后通过ajax调用另一个文件。我的问题是通过AJAX调用的php文件正在使用不同的session_id启动第二个会话。两个php文件都在public_html目录上面的目录中,这是index.php文件所在的目录。如果我用ctrl + F5刷新页面,没有问题,这两个文件返回相同的会话号。我已经将我的所有代码都删除了,并且已经没有解决这个问题的想法了。任何想法都将不胜感激。

编辑:我刚刚想到我用AJAX调用public_html中的file1.php文件,然后在上面的目录中调用file1.php,因为我看不到通过AJAX调用后一个php文件的任何其他方法。这可能是问题的原因吗? public_html中的file1.php只是:

<?php
    include('../file1.php');
?>

以下是代码:

Index.php(包含php的主页的html文件):

<head>

<?php
    include("../file1.php");
?>

<script type="text/javascript" language="javascript">
        if(window.XMLHttpRequest){
            xmlfile2=new XMLHttpRequest();
        }
        else{
            xmlfile2=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlgetfile2.onreadystatechange=function(){
            if(xmlfile2.readyState ==4 && xmlfile2.status==200){    
                var response = xmlfile2.responseText;
                alert(response);
                document.getElementById("userID").innerHTML= response;
            }
        }
        xmlfile2.open("GET","file2.php",true);
        xmlfile2.send();
</script>

</head>

file1.php:

<?php
    session_start();
    echo "session_id file1: " . session_id();
?>

file2.php:

<?php
    session_start();
    echo "session_id file2: " . session_id();
?>

1 个答案:

答案 0 :(得分:0)

会话必须在开始时开始,到任何符号的结束。在您的代码中,首先有一个结论<head>,然后已经是会话。

一般来说,问题可能而不是因为它,但最好是在顶部启动会话。此外,问题可能出在会话设置中。当我在文件中手动保存会话时,我遇到了类似的问题