Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用CURL登录Ajax_Php_Ajax_Curl - Fatal编程技术网

Php 使用CURL登录Ajax

Php 使用CURL登录Ajax,php,ajax,curl,Php,Ajax,Curl,我试图登录到一个网页,然后从一个只有登录成员才能看到的页面检索数据。我现在似乎能够使用CURL登录,但是我无法检索到我想要的页面 function login($url,$postData){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setop

我试图登录到一个网页,然后从一个只有登录成员才能看到的页面检索数据。我现在似乎能够使用CURL登录,但是我无法检索到我想要的页面

function login($url,$postData){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, "http://domain.com/".$jobUrl."");
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
curl_close($ch);
return $output;

}   


$html=login('https://www.domain.com/users/ajaxonlogin.php',
'username=myemailaddress&passwd=mypassword');

echo $html;
我能得到以下回应:

{"status":"success","goto_url":"https:\/\/www.domain.com\/dashboard\/"}
我已尝试将以下内容添加到登录函数的底部:

$url = "http://www.domain.com/page-that-i-want-but-requires-log-in.php";
$results_page = curl($url);
echo $results_page;
但我只收到页面,好像我没有登录

有什么建议吗

谢谢


Bruce

您可能需要处理cookie来存储会话id,这包括两件事-存储cookie的jar和在下一个请求时发送cookie。登录系统可能使用依赖于cookie的会话变量。您需要保存服务器发回的cookie,并将其包含在将来的调用中。查看
CURLOPT_-COOKIEFILE
CURLOPT_-COOKIEJAR
选项。您可能是对的。。。但我也不知道从哪里开始?使用CURL是如何实现的?@Barmar您链接到的重复线程非常不同,不是吗?用户名和密码变量是通过URL传递的,而不是通过AJAX请求传递的。您只需要知道如何保存会话cookie。您可能需要处理cookie来存储会话id,这包括两件事-存储cookie的jar和在下一个请求时发送cookie。登录系统可能使用会话变量,这依赖于cookie。您需要保存服务器发回的cookie,并将其包含在将来的调用中。查看
CURLOPT_-COOKIEFILE
CURLOPT_-COOKIEJAR
选项。您可能是对的。。。但我也不知道从哪里开始?使用CURL是如何实现的?@Barmar您链接到的重复线程非常不同,不是吗?用户名和密码变量是通过URL传递的,而不是通过AJAX请求传递的。您只需要知道如何保存会话cookie。