gpt4 book ai didi

php - 从第三方站点返回后 session 不正确

转载 作者:行者123 更新时间:2023-12-02 02:46:29 26 4
gpt4 key购买 nike

如果所有处理都发生在我自己的网站上,则一切正常。 session 变量已成功存储和检索。

现在我得到了第三方集成,它是通过 POST 数据处理的。我在每个 php 文件的第一行调用了 session_start()

  • start_process.php - 设置一些 session 变量如下并调用重定向到response.php的第三方

     $_SESSION["id"] = $id       // Echoing these shows the correct values 
    $_SESSION["name"]= $name // Echoing these shows the correct values
  • response.php - 该页面接收第三方的响应并尝试从 session 变量中获取数据

     $id = $_SESSION["id"]           // This comes out to be blank
    $name = $_SESSION["name"] // This comes out to be blank

在我的处理页面(即response.php)上,我试图检索 session 值,但没有取回 session 变量。

在 SO 上搜索,很少有帖子建议检查

echo session_id();

返回到我的网站时,第一页和后面的页面会有所不同。进一步搜索发现下面的值需要为空

echo ini_get('session.cookie_domain');

这确实是空白。现在我陷入了困境,因为我看到这个值是空白的,即使 session 没有正确加载。

您能建议下一步做什么吗?有调试吗?有解决这个问题的提示吗?

<小时/>

更新

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 变量的输出,在这里我尝试使用我的 session 变量

<?php session_start(); 
echo $_SESSION["Check"];
echo session_id(); // This is different from the one printed in the start_process.php page
?>

我不认为第三方托管位于同一服务器上,因为目前我位于共享主机上,并且第三方肯定有自己的服务器。

最佳答案

如果不看到更多代码,就很难知道(start_process.php 如何 Hook 第三方代码,第三方如何返回response.php)。以下是一些猜测:

理论 1:第三方代码扰乱了您的 session (如果托管在同一服务器上)

此第三方集成是否托管在您的同一服务器上?如果是这样,我怀疑第三方可能正在结束/重新创建,或以其他方式修改您的 session 。

理论 2:第三方使用单独的域重定向回您的网站

是否有可能您从 mydomain.com 开始,然后第三方重定向回 www.mydomain.com (或类似的内容)?尽管这两个域看起来应该是相同的,但就 PHP session 而言,它们完全不同,您最终会得到不同的 session 。

关于php - 从第三方站点返回后 session 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15587893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com