用php cUrl发送session var

时间:2011-09-22 01:09:26

标签: php session scripting curl

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

问题是会话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无法按正常方式访问会话数据。

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

由于

4 个答案:

答案 0 :(得分:5)

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

如果要向myscript.php发出多个创建会话的请求,我认为你不需要或不想在脚本1中使用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文件中,在发送请求之前,将检查cookiefile是否有任何cookie发送。

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

答案 1 :(得分:3)

我相信你正在寻找CURLOPT_COOKIE

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

答案 2 :(得分:2)

答案 3 :(得分:-2)

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