用php cUrl发送session var

Chr*_*her 2 php scripting session 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);

      ?>
Run Code Online (Sandbox Code Playgroud)

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 />";

      ?>
Run Code Online (Sandbox Code Playgroud)

但是,myScript.php无法按正常方式访问会话数据.

有没有解决这个问题?可能的原因是什么?

谢谢

Lou*_*uis 7

我相信您正在寻找CURLOPT_COOKIE

curl_setopt($ch, CURLOPT_COOKIE, session_name() . '=' . session_id());
Run Code Online (Sandbox Code Playgroud)

  • @Christopher 服务器(myScript.php)等待会话cookie文件资源,因为不允许并发会话访问。要解决此问题,请在curl_exec之前使用“session_write_close()”,并在curl_exec返回响应后再次使用“session_start()”。 (4认同)

dre*_*010 6

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

如果它要向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
Run Code Online (Sandbox Code Playgroud)

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

您可以从curl请求手动跟踪php会话cookie并使用CURLOPT_COOKIE它.