2015-10-28 100 views
1

我有两个文件在下面,我试图用cURL自动登录并得到消息“登录成功”,反对消息“登录失败”。我会怎么做?使用cURL登录成功

我知道这可能看起来像我乞求别人为我写代码,并且在提出这个问题之前,我没有花费任何精力研究cURL并制作自己的cURL代码。但是,我已经做了大量的研究,但是我找不到任何我没有理解的例子,或者做了我想做的事情,所以这就是我在这里问的原因。如果可以的话请帮忙。

test1.php

<form method = "POST" action = "test2.php"> 
<input type = "username" name = "username"> 
<input type = "password" name = "password"> 
<input type = "submit" value = "submit"> 
</form> 

test2.php

$username = $_POST['username']; 
$password = $_POST['password']; 

if ($username == "username" && $password == "password") { 
echo "login success"; 
} 
else { 
echo "login fail"; 
} 

需要结果:

login success 
+0

你只需要把用户名和密码到'CURLOPT_POSTFIELDS'中。你有什么问题? – Barmar

+0

尝试一些东西,磕磕绊绊的东西叫做学习。如果你只是从答案中得到代码,你什么都不会记得 – Mihai

+0

@Barmar对不起。请使用上面的代码提供一个例子。我会更好地理解这种方式。 – jessica

回答

1

这里的基本代码:

<?php 
$ch = curl_init('http://yourdomain.com/test2.php'); 
$post_params = array('username' => 'username', 'password' => 'password'); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); // PHP will format the array into POST data 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 
if ($response == 'login success') { 
    echo 'Login was successful!'; 
} else { 
    echo 'Something went wrong :('; 
} 

注意,登录到一个真正的web网站比发送表单域更加复杂。您还需要取回会话cookie,并在未来的请求中发送该cookie。见

Displaying Logged in Content on a Website

+0

它提出了一个错误消息:警告:curl_setopt()期望参数2是长的,字符串给出警告:curl_setopt()期望恰好3个参数,2给出 – jessica

+0

对不起,我有一个错字在第一行,在第二行中提出一个论点。现在修复。 – Barmar

+0

它回声'出了点问题:(当我用$ response替换它时,它会回显两个输入字段和提交按钮。 – jessica

0

你正在寻找the cURL command-line syntax to do a POST request

卷曲-X POST --data “参数1 =值1 &参数2 =值2” https://example.com/test2.php

+0

对不起。我不明白。我究竟在哪里放置该代码?还有什么其他的代码是必要的?请提供完整的示例,获取“登录成功”消息。这真的会帮助我很多。 – jessica

+0

你把cURL放在php标签之间吗?你在什么标签之间? – jessica

+0

他的问题是关于使用PHP的cURL,而不是shell脚本。 – Barmar

0

我认为你可以做这样的事情:

$data = array('username' => 'username', 'password' => password); 
$url = 'http://example.com'; 

$handle = curl_init($url); 
curl_setopt($handle, CURLOPT_POST, true); 
curl_setopt($handle, CURLOPT_POSTFIELDS, $data); 
$response = curl_exec($handle); 
var_dump($response); 

您可以接受的答案在看到了更多的细节上Passing $_POST values with cURL