为什么我的 PHP 会话消失了?为什么我无法恢复它们?

2023-12-12

我有一个使用 PHP 和 PayPal API 的应用程序。获取付款的基本方式是,您对 PayPal 进行 Web 服务调用以获取令牌,然后使用该令牌将浏览器重定向到 PayPal,以便用户付款。确认付款详细信息后,PayPal 会重定向回您最初在服务调用中设置的 URL。

这一切都有效,每天都有数百万人使用它,等等。

奇怪的是,当 PayPal 重定向回来时,PHP 会话就消失了。它是有据可查的问题.

第一个问题:为什么会出现这种情况?两个页面都位于同一域,都使用 HTTPS。该会话适用于所有请求,直到 PayPal 重定向回来。

链接的论坛主题建议了一种解决方法,将会话 ID 保留在 PayPal 请求中,然后稍后检索并恢复会话。太棒了,只是它似乎不起作用。

我可以添加一些日志语句:

log(session_id());

各种重定向之前和之后。从 PayPal 回来后,我又记录了一些。

log("session id is " . session_id());
$session_id = get_session_id_from_paypal();
log("setting it back to " . $session_id);
session_id($session_id);
session_start();
log("session id is now " . session_id());

结果根本不是我所期望的:

session_id是 fc8f459a186a3f4695ff9ac71b563825
将其设置回 82460dcf8c8ddd538466e7cb89712e72
session_id现在是 360ba3fd99d233e0735397278d2b2e55

第二个问题:为什么会话 ID 根本不是我设置的?我究竟做错了什么?或者,至少,为什么会话变量没有返回?


只是一个想法...

你有session.referer_check也许设置为您的主机? 默认值是空字符串,但它可能已被更改......并且当页面从 PayPal“返回”时,php 将丢弃会话信息。

您可以检查session.referer_check与 phpinfo() 一起使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 PHP 会话消失了?为什么我无法恢复它们? 的相关文章

  • 多单元元素的 FPDF 高度

    我使用 FPDF 库将一些文档文件导出为 PDF 一个文档包含一系列具有不同长度的字符串 我将所有字符串打印为 pdf gt MultiCell 现在 我希望该 MultiCell 的当前高度具有相同的行间距 以防它们只有一行或多行 代码示
  • 如何计算数组中相同的值并将其存储到变量中?

    items explode product values is 4 2 4 2 2 4 unique items array unique items gives me 4 2 接下来应该给我 4 3 2 3 并将值的数量存储到变量中的代码
  • Laravel 5 Auth 注销不起作用

    当我使用内置身份验证并尝试在以下位置注销用户时 auth logout 它没有像希望的那样工作 它似乎让用户保持登录状态 但是当我清除浏览器缓存时 我可以看到实际上已经将用户注销了 我在页面上没有收到任何错误 在日志文件中也没有收到任何错误
  • 阻止表单 POSTing,直到 javascript 代码得到满足

    每当我点击提交按钮时它就会触发alert empty username 但直接引导我去checklogin php 我怎样才能避免这种情况并让它保留在页面上 除非该字段不为空 function RequiredFields var user
  • 如何在变量中存储包含哈希标记的完整 url?

    我正在尝试存储一个网址 例如 http localhost pro print index php page home http localhost pro print index php page home 在变量中 但我找不到执行此操作
  • Django 的登录会话

    我正在尝试在我的网络应用程序中设置登录会话 但无法使其正常工作 我是 django 新手 阅读了会话文档 但没有连接到我的网络应用程序 我现在想要的只是检查用户是否已登录 如果没有则重定向到登录页面 这是我尝试合并登录会话的代码 设置 py
  • 使用ip地址访问时删除index.php

    我在服务器上上传了 codeigniter 项目 从 URL 中删除 index php 不起作用 我使用IP地址访问它 喜欢http ip http ip地址 下面是我的htaccess
  • 使用 fgetcsv 循环遍历 csv

    我有一个包含 3 列的 csv 文件 电子邮件地址 名 and 姓 我已经到了可以使用以下代码打印数组的阶段 这会打印数组 因此每个字段都在一行中 我希望它打印的只是该行第一列中的值 这是如何完成的 关于 fgetcsv 的文档对我 相对初
  • Laravel 在 Eloquent 范围和查询中使用 select

    我正在尝试清理我编写的一些代码 这是当前的代码 message Message with comments gt join users messages created by users id gt join team user messa
  • PHP 选择后立即删除

    我有一个 PHP 服务器脚本 它从 MySQL 数据库中选择一些数据 一旦我将 mysql query 和 mysql fetch assoc 的结果存储在我自己的局部变量中 我就想删除我刚刚选择的行 这种方法的问题在于 PHP 似乎对我的
  • php simpleXMLElement 到数组:空值

    我有以下 XML
  • 安装 Symfony 2.4.1 lib-icu 4.4 依赖项时出现问题

    我遇到了与以下相同的问题this one https stackoverflow com questions 16753105 problems with lib icu dependency when installing symfony
  • 为什么我的函数将布尔值更改为“on”?

    所以我是 php 编程世界的新手 我正在在线学习和其他形式等 但我找不到任何东西来帮助回答我的问题 这就是我在这里的原因 任何帮助当然不胜感激 谢谢 我想将下面的代码变成我可以调用的函数 它的工作原理如下所示 如果我选中表单中的复选框 它会
  • 从 XML 节点 PHP DOM 中删除所有子节点

    我想使用 PHP DOM 从 XML 节点中删除所有子节点 以下之间有什么区别 A while parentNode gt hasChildNodes parentNode gt removeChild parentNode gt chil
  • Symfony2 Twig 扩展

    我在实现树枝扩展时遇到一些问题 我需要创建自己的过滤器 子过滤器 所以我想到了使用twig扩展 我在 MyApp Bundle WebsiteBundle 和文件上创建了一个名为 Extension 的文件夹 网站扩展 php namesp
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • 是否必须配置 PHP 才能通过 PHP 扫描每个目录的配置 INI 文件(即我的情况下的 .htaccess 文件)?

    我在用着Windows 10 家庭单语言 64 位操作系统在我的机器上 我已经安装了最新的副本XAMPP服务器在我的机器上附带PHP 7 2 7 我从 PHP 手册中阅读了以下页面 扫描目录 https secure php net man
  • 按通用值对值进行分组:userid 和 ipaddress

    我正在解决数据库中的一个问题 我正在尝试查找使用多个帐户的用户 我有一个用户 ID 和使用的 IP 地址的列表 如下所示 用户 ID IP 地址 1 IP 地址 13 2 IP 地址 23 1 IP 地址 12 4 IP地址56 9 IP
  • facebook php - 如何获取专辑封面照片

    我需要使用 PHP SDK Facebook 获取专辑封面照片 我尝试 https graph facebook com ALBUM ID picture type album 但我得到默认图像 例如 获取用户 https graph fa

随机推荐

  • Jquery 自动完成底部附加链接

    I am using jQuery auto complete plugin in my web project I want to show 3 element and after that i want to append see al
  • 如何通过重新定义的 ListBox 模板使用 UI 虚拟化

    我正在尝试使用 ListBox 作为包含多个项目的视图 当然 我需要在其中使用 UI 虚拟化 问题是虚拟化仅在我以这种方式声明 ListBox 时才起作用
  • 如何以编程方式获取下一个预定的触发时间?

    我制作了一个新的可安装触发器 该触发器每 2 天以编程方式为我的电子表格触发一次 那么当我返回到电子表格时 我可以得到下次触发函数的时间吗 或者甚至它触发的频率是多少 我所看到的是我可以获得它的类型 它触发的函数 唯一ID等等 Thanks
  • 如何删除具有任何零值的行

    我有一个问题需要解决如何删除 R 中具有零值的行 另一方面 我可以使用na omit 删除所有 NA 值或使用complete cases 删除包含 NA 值的行 有谁知道如何删除 R 中具有零值的行 例如 Before DateTime
  • 正则表达式匹配多个组

    我有以下带有正则表达式的字符串示例 我试图匹配它 Regex d 3 0 9a fA F 2 3 要匹配的字符串 010 00 00 00 我的问题是这样的 正则表达式匹配并捕获 1 组 最终00在字符串的末尾 但是 我希望它能够匹配所有三
  • 如何判断 `constexpr` 是否在编译时求值(无需手动检查)

    有没有一种标准方法可以找出编译器做了什么constexpr功能 旁注 对于调试 默认情况下每个 constexpr 函数都会推迟到运行时 为什么这是明智的 有没有办法影响这一点 对于发布取决于上下文 显然 对于小型测试设置 您可以轻松检查生
  • MySQL 如何解释 VARCHAR 字段大小?

    假设一个字段是这样声明的 a VARCHAR 255 其中可以存储多少个字符 是255还是256 使用了多少空间 我们应该使用 2 的幂然后减去 1 还是没有关系 A VARCHAR 255 最多可以存储 255 个字符 无论字符集编码所需
  • Azure 上的 Asp.Net VNext 应用程序设置

    我真的很喜欢 Asp Net vNext 使用默认 appsettings json 的新配置功能 但当我将网站发布为 Azure Web 应用程序时 我想更改该文件的值 旧的 web config appsettings 很容易更改和配置
  • 使用 pyexiftool 编辑/更新照片元数据的数据

    我想使用 exiftool 更新照片元数据的数据 例如温度传感器 高度传感器和 GPS 经度 高度的数据 首先 我尝试在 exiftool 配置文件中使用命令行添加这些数据的新标签 并且它有效 现在 我想使用 python 脚本更新数据 然
  • 如何在窗口控制台应用程序中调用非静态方法

    我构建了一个控制台应用程序 并尝试测试我的应用程序是否按预期工作 我创建了 API 类的实例 如下面的代码所示 但收到错误 An object reference is required for the non static field 我
  • 包“forecast”的安装具有非零退出状态

    With R version 3 2 3 2015 12 10 on centOS我在尝试着install packages forecast 我明白了 install packages 预测 将软件包安装到 usr lib64 R lib
  • 随机化数组

    我希望实现 Dr D E Knuth 的减法随机数生成算法 我希望实现一个 ATM 面板 当用户登录时 按钮将被扰乱 每个按钮都会改变其位置 这是我的代码 Public Sub addbutton Dim n As Integer 0 Fo
  • 在qt中执行java文件

    我正在尝试在 qt 中执行 java 文件 这是我的 java 文件代码 import android appwidget AppWidgetManager import android appwidget AppWidgetProvide
  • 检测网站访问者是否安装了工具栏,例如。使用 JavaScript 的 Google 工具栏

    我正在开发一个经常使用弹出窗口的在线教育网站 这是第三方提供商的学习管理系统的一部分 因此不可能改变其工作方式 我们接到很多帮助台电话 询问用户在操作系统 浏览器设置和其他工具栏中遇到的弹出窗口拦截器问题 我正在使用 javascript
  • Python 的 time.sleep() 方法等待的时间不正确

    我已经遇到过这个问题好几次了 重新启动 python 似乎可以工作 或 ipython 但是 例如 这是运行以下代码的一种可能的输出 startt time time for i in range 4 time sleep 1 print
  • NUnit 的 log4Net 问题(尝试过 v2.5.7、2.5.2、2.4.8、2.4.7)

    针对生产代码程序集运行 NUnit 时 我收到错误 请参阅帖子底部 生产代码程序集引用了内部使用 log4net 的第三方框架 具体来说 这是 SimplyAccounting 的 SDK 它使用的log4net版本是1 2 9 0 在我们
  • 对于代理容器上的迭代器来说,什么是“最不糟糕的实现”?

    Context 我试图实现一个类似容器的 nD 数组 可以包装底层序列容器并允许将其作为容器的容器 进行处理的东西 arr i j k 应该是 最终是常量 参考 arr i dim2 j dim3 k 好吧 直到那里 arr i 只是子数组
  • 在android中计算给定方位角、俯仰角和滚动角的相对方向?

    当我在 Android 应用程序中监听方向事件时 我得到一个 SensorEvent 其中包含 3 个浮点 相对于现实世界轴的方位角 俯仰角和滚动角 现在假设我正在构建一个像迷宫这样的应用程序 但我不想强迫用户通过电话并握住电话以使 xy
  • 从 php 周数获取上一周的数字

    我目前需要从传递 php 周数的变量中获取前一周的信息 因此如果是第 13 周 我将获取第 12 周 我面临的问题是 如果我在第 1 周从原始数字中减去 1 它将返回第 0 周 除非我创建一个 if 语句 即 if week 1 prev
  • 为什么我的 PHP 会话消失了?为什么我无法恢复它们?

    我有一个使用 PHP 和 PayPal API 的应用程序 获取付款的基本方式是 您对 PayPal 进行 Web 服务调用以获取令牌 然后使用该令牌将浏览器重定向到 PayPal 以便用户付款 确认付款详细信息后 PayPal 会重定向回