[英]php cURL - POST Not working
嘗試一些簡單的代碼來使用cURL,但是不走運。.我嘗試過POST表單,但是沒有任何反應,也沒有發生錯誤。
這是我的代碼:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost:8888/curl/home2.php');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'usuario=teste&senha=12345');
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
print_r(curl_getinfo($ch));
echo curl_errno($ch) . '-' .
curl_error($ch);
echo $store;
當提交形式為home2.php時,它應該轉到另一個頁面並返回一些數據。 難道我做錯了什么?
-更新
這是我簡單的home2.php代碼:
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<form method="POST" action="login.php" id="formLogin" name="formLogin">
Usuario <input name="login" type="text">
Senha <input name="senha" type="text">
<input type="submit">
</form>
</body>
</html>
login.php:
<?php
$login = $_POST['login'];
$senha = $_POST['senha'];
if($login == "teste"){
echo "OK";
}
?>
結果應該是“ OK”,對嗎?
您在home2.php
上的home2.php
如下所示:
<form method="POST" action="login.php" id="formLogin" name="formLogin">
Usuario <input name="login" type="text">
Senha <input name="senha" type="text">
<input type="submit">
</form>
請務必注意,用戶名輸入框名為login
,但是在創建cURL請求時,您會將用戶名作為usario
發送。 這需要更改。 您還需要模擬瀏覽器將執行的操作,並將post變量發送到login.php
( action="login.php"
)而不是home2.php
(此頁面僅包含表單,並且從不接收任何輸入表單數據) )。
總而言之,您的代碼應可通過以下方式修復:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost:8888/curl/login.php');
// Change the URL ^^^^^
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'login=teste&senha=12345');
// Change the username key ^^^^^
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$store = curl_exec ($ch);
print_r(curl_getinfo($ch));
echo curl_errno($ch) . '-' .
curl_error($ch);
echo $store;
如果您有疑問,瀏覽器中的“網絡”選項卡(或任何HTTP數據包嗅探器)將告訴您瀏覽器發出的確切請求,帶有哪些變量,指向哪些URL的地址,並且您可以更輕松地復制它。
注意 :如果您在success.php
重定向到login.php
的success.php
頁面根本沒有執行任何操作,則還需要自動調用此頁面。
如果login.php
自動重定向,則只需使用將cURL選項CURLOPT_FOLLOWLOCATION
設置為1。
您提到“當提交發生在home2.php表單上時,它應該轉到另一頁”。 就是說,這意味着存在HTTP重定向? 如果是這樣,您需要告訴cURL遵循重定向。 像這樣:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.