如果所有处理都在我自己的网站上进行,那么一切正常。会话变量被成功存储和检索。
现在我得到了第三方集成,它是通过 POST 数据处理的。我session_start()
在每个 php 文件的第一行被调用。
start_process.php - 如下设置一些会话变量并调用重定向到 response.php 的第三方
$_SESSION["id"] = $id // Echoing these shows the correct values $_SESSION["name"]= $name // Echoing these shows the correct values
response.php - 此页面接收来自第三方的响应并尝试从会话变量中获取数据
$id = $_SESSION["id"] // This comes out to be blank $name = $_SESSION["name"] // This comes out to be blank
在我的处理页面上,即response.php,我试图取回会话值,我没有取回会话变量。
在 SO 上搜索,很少有帖子建议检查
echo session_id();
在第一页和返回我的网站的后面的页面上会有所不同。进一步搜索显示以下的值需要为空
echo ini_get('session.cookie_domain');
这确实是空白。现在我被卡住了,因为我看到这个值是空白的,即使会话没有正确加载。
你能建议下一步做什么吗?有调试吗?有什么提示可以解决这个问题吗?
更新
start_process.php
有一个表单,其发布操作是第三方网站的 url... 作为
<?php session_start();
$_SESSION["Check"] = "Abc";
echo session_id();
>
<form name="myform" action="http://<ThirdPartyUrl.com>/pathToSomePage.jsp" method="POST">
<!-- some hidden fields with value and some other text fields -->
</form>
响应.php
第三方在发布请求中再次向我的响应页面提供响应,在该页面我直接测试 POST 变量的输出,在这里我尝试使用我的会话变量
<?php session_start();
echo $_SESSION["Check"];
echo session_id(); // This is different from the one printed in the start_process.php page
?>
我不认为第三方托管在同一台服务器上,因为目前我在共享主机上,第三方肯定有自己的服务器。