簡體   English   中英

php cURL-POST無法正常工作

[英]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.phpaction="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.phpsuccess.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM