2013-04-04 108 views
0

我有一个关于卷曲的问题,我到处搜索过很多东西,但我无法登录。我尝试登录到一个页面。我认为它与隐藏字段有关,隐藏字段不是随机生成的。无法用卷曲登录

我熟悉php的基础知识,但不是专家。如果你对这个问题发表评论,你可以写一些评论,我真的想要学习!

这里是我的代码:

<?php 
$url = 'see url above'; 
$username = 'username'; 
$password = 'password'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$output = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

echo '<pre>',print_r($info),'</pre>'; 

?> 
+0

你'curl_setopt($ CH,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);'两次 – doublesharp 2013-04-04 19:41:08

+0

我想我听错了,当我在这里复制我的代码,它不存在于我的原始代码。在示例中更改了它,谢谢! – 2013-04-04 19:44:31

+0

是什么让你觉得你无法登录?你得到什么样的行为是不可取的? – 2013-04-04 19:56:25

回答

0

其实你不需要基本的认证。
正如我所见,页面中有简单的形式和隐藏的变量。 尝试通过POST发送它们。

事情是这样的:

$url = 'http://www.cibap.nl/index.php'; 
$username = 'username'; 
$password = 'password'; 

$post_data = array(
'ACT'  => '9', 
'RET'  => '/login', 
'site_id' => '1', 
'username' => $username, 
'password' => $password, 
'autologin' => '1' 
); 

$ch = curl_init($url); 

$postargs = http_build_query($post_data); 
curl_setopt ($ch, CURLOPT_POST, true); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postargs); 

//Use cookie file if needed (probably needed) 
//$cookiefile = '/path/to/cookie.txt'; 
//any filename, curl stores and reads this file next time 
//curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); 

//curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

$output = curl_exec($ch); 
curl_close($ch); 

echo '<pre>',print_r($output),'</pre>'; 
+0

谢谢,我现在有点进一步了。我有一个小的重定向消息,现在你登录了,点击这个链接继续浏览网站。它重定向到$ url。但是,如果我检查我的$输出,我仍然得到一个http_code 200. 我试着将returntransfer和followloaction设置为false。如果我运行这个检查,我看到我的httpCode仍然是200. $ httpCode = curl_getinfo($ ch,CURLINFO_HTTP_CODE); if($ httpCode == 200){ header(“Location:http://www.example.com/”); } else { echo'not logged in'; } – 2013-04-05 21:50:59

+0

你目前的问题是什么?有什么意外的东西(POST后)?什么是登录,为什么你尝试登录?如果你尝试下载(例如)一些受auth形式保护的东西,你必须使用cookie,而不是做另一个请求来获得你想要的东西。无论如何,如果额外需要POST,您可以使用Chrome浏览器与CTRL + SHIFT + J(点击网络)并检查数据包到服务器,并修复您的PHP请求。 – 2013-04-05 22:21:28

+0

嘿安德烈, 在网站上我得到一个重定向,它显示一条消息“欢迎,你现在登录”,并在5秒后,它返回到cibap.nl。我想用coockie来得到每个人的时间表,那就是需要登录的原因。因为时间表没有登录就无法访问。 – 2013-04-07 21:41:57

0

你应该确认你是在寻找返回的cookie登录。无论您是否输入虚假信息,该应用程序总是返回HTTP代码200。

+0

我已经将它设置为coockies,并且我的http代码更改为302,但是无论我传递什么凭据,它都会返回该代码。 – 2013-04-05 06:39:35

+0

coockie写在我的远程网站上,所以它是可写的。 – 2013-04-05 11:29:43

+0

302意味着服务器正在尝试将您转发到新的url位置。你应该在你的卷曲标题中启用302的功能。 – 2013-04-08 14:41:23