【问题标题】:PHP - Curl (handler stored in session) + ajax requests using this handlerPHP - Curl(存储在会话中的处理程序)+ 使用此处理程序的 ajax 请求
【发布时间】:2014-12-22 01:19:38
【问题描述】:

这听起来可能很愚蠢,但我正在尝试使用 PHP(使用 curl)和 Ajax 创建客户端。

我遇到了问题。

我有一个带有按钮的索引页面,它使用 Curl 向服务器发送请求。 我希望能够通过单击不同的按钮从此索引页面发送多个请求。

ajax 部分正在工作,所以我可以从我的按钮调用我的 php 页面。 我的问题是,我找不到为后续请求“重用”我的 curl 连接的方法。我发送的每个信息都在每个请求之间被遗忘。 我这样存储我的连接:

//Initialisation
$ch = curl_init();

//Je stocke la connexion dans un pointeur pour stockage dans variable session.
$_SESSION['connexion'] = $ch;

这是在第一个请求的 ajax 中完成的。 然后在第二个,当我调用它时,它变成了 Null。 你知道我能做到这一点吗?

【问题讨论】:

  • 我认为你不能序列化 cURL 实例。

标签: javascript php jquery ajax curl


【解决方案1】:

您不能以这种方式“重用”您的 cURL 连接。

但您丢失此信息的原因是您的 cURL 调用可能没有发送会话 cookie。您需要将此信息保存在 本地 会话中:

  • WEBPAGE(带按钮),将会话 W1 与 id SESS-001-SITE1 保存为 cookie

  • 按钮调用PHP脚本,通过session_start()可以访问W1会话

  • PHP 脚本调用另一个 PHP 脚本 P2(在哪里,这并不重要)

  • P2 设置自己的 cookie,ID 为 SESS-002-SITE2,映射名为 W2 的会话

  • P2 也发送了一些有趣的输出

  • P1 接收此输出并通过 AJAX 将其发送到 WEBPAGE

    • P1 将从 P2 收到的用于 W2 的 cookie 存储到它自己的会话 W1 中
  • WEBPAGE 再次调用

  • P1 收到调用,从会话中检索 W2 的 cookie,将其加载到 cURL 中

  • P1 通过 cURL 连接到 P2 并发送其他信息连同 cookie

  • P2 现在可以恢复会话 W2 并做出适当的响应

你可以尝试适应another SO answer using file-based cookie jars

【讨论】:

  • 感谢您的帮助。我的英语并不完美,但我假设您的答案按以下顺序执行:网页链接到 P1,而 P1 又链接到 P2。但实际上我的网页链接到 P1(记录器),也链接到 P2(一旦我连接到 P1 就发送数据)所以如果我理解得很好,我可以多次调用 curl_init(TO P1,P2,传入 P3还有更多...),如果我可以将我的数据保存在 cookie 中,它会表现得好像我的连接没有中断?谢谢你的回答。
  • 如果你能提供一个小的伪代码来阐明架构,也许会更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
相关资源
最近更新 更多