【问题标题】:send session var with php cUrl使用 php cUrl 发送会话 var
【发布时间】:2011-11-22 10:24:02
【问题描述】:

我正在尝试在我的应用程序中的脚本之间发送数据。

问题是会话 ID 没有响应。

脚本 1 是...

 <?php 
      session_start();

      $_SESSION['id'] = 1;

      $data = "data to be sent to script";

      $ch = curl_init("http:.../myscript.php");

      $nvp = "&data=$data";

      curl_setopt($ch, CURLOPT_POSTFIELDS, $nvp);

      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

      echo curl_exec($ch);

      ?>

myScript.php 是...

      <?php

      session_start();          

      $id = $_SESSION['id'];

      $data = $_POST['data'];

      $result = function idData($id, $data); // returns matching results.


      echo "Session Id = $id <br />";


      echo "Id result = $result <br />";

      ?>

但是 myScript.php 无法正常访问会话数据。

有解决办法吗?可能的原因是什么?

谢谢

【问题讨论】:

    标签: php session scripting curl


    【解决方案1】:

    我相信你在找CURLOPT_COOKIE

    curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
    

    【讨论】:

    • 我明白你的意思,但是会话 ID 是否需要在另一端被特别捕获??
    • 是的,我已经完成了工作......我阅读了函数库仍然很困惑,因为我是 cURL 的新手......当我将它从原始脚本发送到 myscript.php 服务器停止做出回应……然后就坐在那里“等待本地主机……”。我需要附加一个cookie文件供服务器参考吗?或者我可以将会话名称和 ID 引用为 $_POST 变量吗?
    • @Christopher 服务器 (myScript.php) 等待会话 cookie 文件资源,因为不允许并发会话访问。要解决它,请在 curl_exec 之前使用session_write_close(),在 curl_exec 返回响应后再次使用session_start()
    【解决方案2】:

    在脚本 1 中,如果您自己跟踪响应中的会话 ID,则可以使用 CURLOPT_COOKIE

    如果脚本 1 将向创建会话的 myscript.php 发出多个请求,我认为您不需要或不希望 session_start。

    在脚本 1 中使用它:

    curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt'); // set cookie file to given file
    curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt'); // set same file as cookie jar
    

    然后照常提出您的请求。当请求完成时,由 myscript.php 设置的任何 cookie 都将保存到 cookie jar 文件中,在发送请求之前将检查 cookie 文件是否有任何要发送的 cookie。

    您可以手动跟踪 curl 请求中的 php 会话 cookie,也可以使用 CURLOPT_COOKIE

    【讨论】:

      【解决方案3】:

      您错过了一个使用 post 的选项参数。请添加这个,它应该可以工作: curl_setopt($ch, CURLOPT_POST, true);

      【讨论】:

        猜你喜欢
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        • 1970-01-01
        • 2017-10-22
        相关资源
        最近更新 更多