2011-09-22 82 views
1

我试图在我的应用程序中的脚本之间发送数据。用php发送会话var 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不能访问会话数据按正常。

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

感谢

回答

5

在脚本1,你可以使用CURLOPT_COOKIE如果你跟踪从响应自己的会话ID。

我不认为你需要或想要在脚本1 session_start如果它将要发出多个请求myscript.php创建会话。

使用该脚本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

3

我相信你正在寻找CURLOPT_COOKIE

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

我让你得到什么的,但确实标识需要捕获作为什么特别的其他会议侧?? – Christopher

+0

试试吧,让我知道。 – Louis

+0

雅我有剂量的工作...我读了功能库仍然很困惑,因为即时通讯新的卷曲...当我从原始脚本发送到myscript.php服务器停止响应...只是坐在那里'等待当地的主人......'。我是否需要附加服务器的Cookie文件以引用?或者我可以引用会话名称和ID为$ _POST变量? – Christopher

-2

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