2015-10-28 133 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