我试图在我的应用程序中的脚本之间发送数据。
问题是会话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无法按正常方式访问会话数据。
有解决方法吗?可能的原因是什么?
由于
答案 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);