PHP 用CURL POST后获取cookis并跳转到另一个页面
初学者,请各位大神帮忙,我要实现的是通过POST登录另一个网站,该网站会保存下来一个cookis,成功后直接打开另该网站的管理界面,下面是参考网上资料改的,cookis总...
初学者,请各位大神帮忙,我要实现的是通过POST登录另一个网站,该网站会保存下来一个cookis,成功后直接打开另该网站的管理界面,下面是参考网上资料改的,cookis总有问题,求大神指点!
$cookie_jar = tempnam('./tmp','JSESSIONID');
$remote_url="http://www.baidu.com";
$post_sj="user=123&password=321";
request_by_curl($remote_url, $post_sj);
header("Location: http://www.baidu.com/123.html");
exit;
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)");
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
$data = curl_exec($ch);
curl_close($ch);
return $data;
} 展开
$cookie_jar = tempnam('./tmp','JSESSIONID');
$remote_url="http://www.baidu.com";
$post_sj="user=123&password=321";
request_by_curl($remote_url, $post_sj);
header("Location: http://www.baidu.com/123.html");
exit;
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)");
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
$data = curl_exec($ch);
curl_close($ch);
return $data;
} 展开
3个回答
展开全部
无法实现
php在服务器上用curl取得的cookies是存在于php程序所保存的位置
通过php登陆,php可以用这个cookies来访问管理界面,这个没有问题。
但是如果你用了header("Location: ......"),就不行了。网址转向以后,是访问者浏览器去访问,浏览器并没办法获取到你所保存的cookies,浏览器里没有登陆的cookies,所以不能“直接”打开管理界面,必须要重新登陆才行。
如果你用setcookie,你所设置的cookies对应的域名也不对,不能跨域,所以还是得再次在浏览器内登陆。
除非在“管理界面”端写一个api,通过调用这个api,把cookies写进访问者的浏览器里面。
php在服务器上用curl取得的cookies是存在于php程序所保存的位置
通过php登陆,php可以用这个cookies来访问管理界面,这个没有问题。
但是如果你用了header("Location: ......"),就不行了。网址转向以后,是访问者浏览器去访问,浏览器并没办法获取到你所保存的cookies,浏览器里没有登陆的cookies,所以不能“直接”打开管理界面,必须要重新登陆才行。
如果你用setcookie,你所设置的cookies对应的域名也不对,不能跨域,所以还是得再次在浏览器内登陆。
除非在“管理界面”端写一个api,通过调用这个api,把cookies写进访问者的浏览器里面。
展开全部
楼主request_by_curl函数少个参数,应该后面再加个$cookie_jar,把你第一行的$cookie_jar传过来应该就行了,这个参数手册上说是包含cookie数据的文件名
更多追问追答
追问
获取到是空的···
追答
楼主函数最后是return,因此在外面调用的时候要输出一下,echo或者print_r什么的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
,,,,,cookjar没定义
更多追问追答
追问
肿么定义···
追答
function request_by_curl里
没有$cookie_jar
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |