会话数据在本地工作但不在远程服务器上工作

时间:2012-04-20 08:12:31

标签: php session

这是我的代码。简单明了。

1)first.html

<body>
    <?php
    session_start();
    ...
    $somearray = $Object->method($somevar);
    $_SESSION["somearray"] = $somearray;
    ...
    ?>
</body>

1)second.html

<body>
    <div id="map_canvas">
        <script language="javascript" type="text/javascript">
        <?php session_start(); ?>
        some_render_function(<?php echo json_encode($_SESSION["somearray"]); ?>);
        </script> 
    </div>       
</body>

在localhost上完美运行代码。

有两个事实可以帮助你们想出这里的问题。

1)如果你在离线和在线状态检查页面的来源,你可以分别看到some_render_function('all the stuff from the json')some_render_function(NULL)

2)如果我检查我的共享服务器文件夹,我可以看到一个名为php_session的目录,其中显然包含所有正确的文件(当我测试我的项目时打开的所有会话中的CORRECT数据)它)

任何提示?

2 个答案:

答案 0 :(得分:1)

Session_start应该在任何输出之前。因此,将<?php移动到文件的开头。否则,行为取决于服务器配置。

答案 1 :(得分:1)

您好session_starthttp://php.net/manual/en/function.session-start.php)应始终是您网页上的第一个参数...

实施例

第一页

<?php session_start();?>
<html>
<head>
<title>First</title>
</head>
<body>
    <?php
    $somearray = $Object->method($somevar);
    $_SESSION["somearray"] = $somearray;
    ?>
</body>

</html>

第二页

<?php session_start(); ?>
<html>
<head>
<title>Second</title>
</head>
<body>
    <?php
    var_dump($_SESSION["somearray"]);
    ?>
</body>
</html>