需要明確的是,我希望包含我的表單 (page1.php) 的頁面檢查用戶從我的其他服務器頁面 ( https://anotherserver.com/checker ) 輸入的資料并將其發送到 page1.php 為 true 或錯誤的。這是我第一次使用 curl。這段代碼我看不到任何東西..
這是我的表單頁面代碼page1.php
function dataFn($url, $data = array()) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 3000);
$data = curl_exec($curl);
curl_close($curl);
return json_decode($data, true);
}
$data = dataFn(base64_encode('my base64 key'), ['value1' => $value2, 'value2' => $value2]);
var_dump($data);
die();
if (!$data) {
// some err
} else {
if ($data['status'] == 0) {
// some code
}
}
這是我的檢查服務器頁面
<?php
// validation page
print_r($_POST['value1']);
?>
uj5u.com熱心網友回復:
你沒有犯太多錯誤。它絕對不會與您的代碼一起使用。
制作帖子資料的兩種方法。
$post = 'key1=value1&key2=value2&key3=value3';
$post = array('key1'=>value1,'key2'=>value2,'key3'=>'value3');
根據您可能需要使用 urlencode() 的資料
$post = urlencode($post);
我做了很多卷曲這些是我的標準帖子選項
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_ENCODING,"");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request);
curl_setopt($ch, CURLOPT_ENCODING,"");
這些是我的故障排除選項
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT,10);
curl_setopt($ch, CURLOPT_FAILONERROR,true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request);
您需要查看請求(輸出)和回應標頭(輸入),因此您需要這兩個選項。
這兩個選項必須在解決問題后出現。
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HEADER, true);
如果是 HTTPS,你需要這個:
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
我總是制作自己的請求標頭。您可以洗掉該選項,這不是強制性的。
$request = array();
$request[] = "Host: www.example.com";
$request[] = "Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8";
$request[] = "User-Agent: MOT-V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.0";
$request[] = "Accept-Language: en-US,en;q=0.5";
$request[] = "Connection: keep-alive";
$request[] = "Cache-Control: no-cache";
$request[] = "Pragma: no-cache";
如果您在進行 POST 時遇到問題,請查看您發送和接收的標頭。
$data = curl_exec($ch);
if (curl_errno($ch)){echo 'Error: ' . curl_error($ch);}
有時我會將所有回應卷曲資訊保存為文本,有時會回顯
$info = rawurldecode(var_export(curl_getinfo($ch),true));
echo rawurldecode(var_export(curl_getinfo($ch),true));
你想CURLINFO_HEADER_OUT從curl_getinfo()
然后你就可以看到你真正發送了什么。
echo curl_getinfo($ch,CURLINFO_HEADER_OUT);
http回應ID非常重要。
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_getinfo 中有很多資訊可能會給您其他提示。
如果我有 URL,我相信我可以讓它作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/505186.html
