PHP curl登录名';无法通过登录页面

PHP curl登录名';无法通过登录页面,php,curl,Php,Curl,我以smartjobboard.com为例来测试我的代码,我得到的是登录页面,为什么我不能得到登录页面?我想删除需要用户登录的内容。用户名和密码是正确的,但我不知道为什么我不能通过 手动登录网站,并检查通过浏览器网络监视器发布的内容。也许您的参数中有一个简单的输入错误?您可以使用F12(谷歌浏览器或IE)打开网络监视器。然后按下相应的按钮开始日志记录(确保在加载新页面时保留日志),并观察条目滚动。然后登录,通过打开详细视图查看记录的内容,并查看标题和响应 在加载登录页面之前,开始记录HTTP请求

我以smartjobboard.com为例来测试我的代码,我得到的是登录页面,为什么我不能得到登录页面?我想删除需要用户登录的内容。用户名和密码是正确的,但我不知道为什么我不能通过

手动登录网站,并检查通过浏览器网络监视器发布的内容。也许您的参数中有一个简单的输入错误?您可以使用F12(谷歌浏览器或IE)打开网络监视器。然后按下相应的按钮开始日志记录(确保在加载新页面时保留日志),并观察条目滚动。然后登录,通过打开详细视图查看记录的内容,并查看标题和响应

在加载登录页面之前,开始记录HTTP请求非常重要。有时,在登录之前会创建cookie。这可能会给你一个发送内容的提示

请记住,不使用浏览器时,需要手动发送cookie。因此,当您登录时,请记住在使用CURL时发送诸如cookies之类的附加信息

创建了cookie,但查看网络监视器会发送更多参数: return\u url=&action=login&username=emp&password=emp

试试这个:

$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