php socket方式提交的post詳解
更新時間:2008年07月19日 19:53:38 作者:
php下POST報文到主機 ,post提交利用代碼
<?
/*
** POST報文到主機
*/
function PostToHost($url, $data) {
$url = parse_url($url);
if (!$url) return "couldn\'t parse url";
if (!isset($url[\'port\'])) { $url[\'port\'] = ""; }
if (!isset($url[\'query\'])) { $url[\'query\'] = ""; }
$encoded = "";
while (list($k,$v) = each($data)) {
$encoded .= ($encoded ? "&" : "");
$encoded .= rawurlencode($k)."=".rawurlencode($v);
}
$port = $url[\'port\'] ? $url[\'port\'] : 80;
$fp = fsockopen($url[\'host\'], $port, $errno, $errstr);
if (!$fp) return "Failed to open socket to $url[host] $port ERROR: $errno - $errstr";
fputs($fp, sprintf("POST %s%s%s HTTP/1.0\\n", $url[\'path\'], $url[\'query\'] ? "?" : "", $url[\'query\']));
fputs($fp, "Host: $url[host]\\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\\n");
fputs($fp, "Content-length: " . strlen($encoded) . "\\n");
fputs($fp, "Connection: close\\n\\n");
fputs($fp, "$encoded\\n");
$line = fgets($fp,1024);
if (!eregi("^HTTP/1\\.. 200", $line)) return;
$results = ""; $inheader = 1;
while(!feof($fp)) {
$line = fgets($fp,1024);
if ($inheader && ($line == "\\n" || $line == "\\r\\n")) {
$inheader = 0;
}
elseif (!$inheader) {
$results .= $line;
}
}
fclose($fp);
return $results;
}/* end function PostToHost */
?>
/*
** POST報文到主機
*/
function PostToHost($url, $data) {
$url = parse_url($url);
if (!$url) return "couldn\'t parse url";
if (!isset($url[\'port\'])) { $url[\'port\'] = ""; }
if (!isset($url[\'query\'])) { $url[\'query\'] = ""; }
$encoded = "";
while (list($k,$v) = each($data)) {
$encoded .= ($encoded ? "&" : "");
$encoded .= rawurlencode($k)."=".rawurlencode($v);
}
$port = $url[\'port\'] ? $url[\'port\'] : 80;
$fp = fsockopen($url[\'host\'], $port, $errno, $errstr);
if (!$fp) return "Failed to open socket to $url[host] $port ERROR: $errno - $errstr";
fputs($fp, sprintf("POST %s%s%s HTTP/1.0\\n", $url[\'path\'], $url[\'query\'] ? "?" : "", $url[\'query\']));
fputs($fp, "Host: $url[host]\\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\\n");
fputs($fp, "Content-length: " . strlen($encoded) . "\\n");
fputs($fp, "Connection: close\\n\\n");
fputs($fp, "$encoded\\n");
$line = fgets($fp,1024);
if (!eregi("^HTTP/1\\.. 200", $line)) return;
$results = ""; $inheader = 1;
while(!feof($fp)) {
$line = fgets($fp,1024);
if ($inheader && ($line == "\\n" || $line == "\\r\\n")) {
$inheader = 0;
}
elseif (!$inheader) {
$results .= $line;
}
}
fclose($fp);
return $results;
}/* end function PostToHost */
?>
您可能感興趣的文章:
- php 利用socket發(fā)送HTTP請求(GET,POST)
- PHP使用socket發(fā)送HTTP請求的方法
- 使用PHP Socket 編程模擬Http post和get請求
- php中用socket模擬http中post或者get提交數(shù)據(jù)的示例代碼
- php基于socket實現(xiàn)SMTP發(fā)送郵件的方法
- php中使用Curl、socket、file_get_contents三種方法POST提交數(shù)據(jù)
- PHP中使用socket方式GET、POST數(shù)據(jù)實例
- PHP socket 模擬POST 請求實例代碼
- php使用socket post數(shù)據(jù)到其它web服務(wù)器的方法
- php自定義類fsocket模擬post或get請求的方法
- php使用socket調(diào)用http和smtp協(xié)議實例小結(jié)
相關(guān)文章
PHP生成各種隨機驗證碼的方法總結(jié)【附demo源碼】
這篇文章主要介紹了PHP生成各種隨機驗證碼的方法,結(jié)合具體實例形式總結(jié)分析了php常用的生成驗證碼操作相關(guān)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-06-06
用PHP將網(wǎng)址字符串轉(zhuǎn)換成超鏈接(網(wǎng)址或email)
該函數(shù)將 URL 和 E-mail 地址字符串轉(zhuǎn)換為可點擊的超級鏈接。2010-05-05
PHP基于mssql擴展遠程連接MSSQL的簡單實現(xiàn)方法
這篇文章主要介紹了PHP基于mssql擴展遠程連接MSSQL的簡單實現(xiàn)方法,涉及php操作mssql的簡單連接、查詢、遍歷與輸出相關(guān)操作技巧,需要的朋友可以參考下2016-10-10
phpmyadmin出現(xiàn)Cannot start session without errors問題解決方法
這篇文章主要介紹了phpmyadmin出現(xiàn)Cannot start session without errors問題解決方法,本文環(huán)境是Windows+IIS服務(wù)器,需要的朋友可以參考下2014-08-08
PHP操作MongoDB實現(xiàn)增刪改查功能【附php7操作MongoDB方法】
這篇文章主要介紹了PHP操作MongoDB實現(xiàn)增刪改查功能,結(jié)合實例形式總結(jié)分析了php操作MongoDB的常用技巧,并附帶php7操作MongoDB方法,具有一定參考借鑒價值,需要的朋友可以參考下2018-04-04
學(xué)習(xí)php設(shè)計模式 php實現(xiàn)狀態(tài)模式
這篇文章主要介紹了php設(shè)計模式中的狀態(tài)模式,使用php實現(xiàn)狀態(tài)模式,感興趣的小伙伴們可以參考一下2015-12-12

