PHP curl登录名';无法通过登录页面
我以smartjobboard.com为例来测试我的代码,我得到的是登录页面,为什么我不能得到登录页面?我想删除需要用户登录的内容。用户名和密码是正确的,但我不知道为什么我不能通过 手动登录网站,并检查通过浏览器网络监视器发布的内容。也许您的参数中有一个简单的输入错误?您可以使用F12(谷歌浏览器或IE)打开网络监视器。然后按下相应的按钮开始日志记录(确保在加载新页面时保留日志),并观察条目滚动。然后登录,通过打开详细视图查看记录的内容,并查看标题和响应 在加载登录页面之前,开始记录HTTP请求非常重要。有时,在登录之前会创建cookie。这可能会给你一个发送内容的提示 请记住,不使用浏览器时,需要手动发送cookie。因此,当您登录时,请记住在使用CURL时发送诸如cookies之类的附加信息 创建了cookie,但查看网络监视器会发送更多参数: return\u url=&action=login&username=emp&password=emp 试试这个:PHP curl登录名';无法通过登录页面,php,curl,Php,Curl,我以smartjobboard.com为例来测试我的代码,我得到的是登录页面,为什么我不能得到登录页面?我想删除需要用户登录的内容。用户名和密码是正确的,但我不知道为什么我不能通过 手动登录网站,并检查通过浏览器网络监视器发布的内容。也许您的参数中有一个简单的输入错误?您可以使用F12(谷歌浏览器或IE)打开网络监视器。然后按下相应的按钮开始日志记录(确保在加载新页面时保留日志),并观察条目滚动。然后登录,通过打开详细视图查看记录的内容,并查看标题和响应 在加载登录页面之前,开始记录HTTP请求
$username = 'emp';
$pass = 'emp';
$login = array(
'username' => $username,
'password' => $pass
);
$loginUrl = 'http://demo.smartjobboard.com/login';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($login));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
echo $content;
及
在DNS缓存中找不到主机名
*正在尝试96.30.31.40。。。
*已连接到demo.smartjobboard.com(96.30.31.40)端口80(#0)
>POST/login HTTP/1.1
主持人:demo.smartjobboard.com
接受:*/*
内容长度:66
内容类型:application/x-www-form-urlencoded
*上传已完全发送:66个字节中的66个
我也学到了一些东西 除了cookies我什么都做对了,你能测试我的代码吗?我真的不知道这里出了什么问题。我测试了你的代码(从Ubuntu命令行使用php可执行文件),得到了一个巨大的HTML文件。从浏览器运行时,我看到登录后出现一些cookie。但是您缺少一些参数。查看网络日志,上面写着:
return\u url=&action=login&username=emp&password=emp
修改了我的答案;希望这有帮助。那么我是否缺少返回url和操作?那么解决方案应该是什么呢?再次改进答案。请看一下新的源代码和CURL调用的结果。您需要告诉CURL存储并发送cookies。现在,您的每个请求都以一个全新的未登录会话开始。
<?php
$username = 'emp';
$pass = 'emp';
$login = array(
'username' => $username,
'password' => $pass,
'action' => 'login',
'return_url' => '/my-account/'
);
$loginUrl = 'http://demo.smartjobboard.com/login';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($login));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$content1 = curl_exec($ch);
curl_setopt($ch, CURLOPT_URL, "http://demo.smartjobboard.com/my-account/");
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$content2 = curl_exec($ch);
curl_close($ch);
echo $content2;
?>
HTTP/1.1 303 See Other
Server: nginx
Date: Fri, 06 Feb 2015 15:53:16 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 0
Connection: keep-alive
Keep-Alive: timeout=35
X-Powered-By: PHP/5.3.28
Set-Cookie: PHPSESSID=b33b1a0bd7a3bcd50e5e73671c383182; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=baf0d249c8fd7795fa1234cbaf16995e; path=/
Location: http://demo.smartjobboard.com/my-account/
* Hostname was NOT found in DNS cache
* Trying 96.30.31.40...
* Connected to demo.smartjobboard.com (96.30.31.40) port 80 (#0)
> POST /login HTTP/1.1
Host: demo.smartjobboard.com
Accept: */*
Content-Length: 66
Content-Type: application/x-www-form-urlencoded
* upload completely sent off: 66 out of 66 bytes
< HTTP/1.1 303 See Other
* Server nginx is not blacklisted
< Server: nginx
< Date: Fri, 06 Feb 2015 15:53:16 GMT
< Content-Type: text/html;charset=utf-8
< Content-Length: 0
< Connection: keep-alive
< Keep-Alive: timeout=35
< X-Powered-By: PHP/5.3.28
< Set-Cookie: PHPSESSID=b33b1a0bd7a3bcd50e5e73671c383182; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Set-Cookie: PHPSESSID=baf0d249c8fd7795fa1234cbaf16995e; path=/
< Location: http://demo.smartjobboard.com/my-account/
<
* Connection #0 to host demo.smartjobboard.com left intact