php發送get、post請求的6種方法簡明總結,get6種_PHP教程

來源:互聯網
上載者:User

php發送get、post請求的6種方法簡明總結,get6種


方法1: 用file_get_contents 以get方式擷取內容:

<?php$url='http://www.bkjia.com/';$html = file_get_contents($url);echo $html;?>

方法2: 用fopen開啟url, 以get方式擷取內容:

<?php$fp = fopen($url, ‘r');stream_get_meta_data($fp);while(!feof($fp)) {$result .= fgets($fp, 1024);}echo “url body: $result”;fclose($fp);?>

方法3:用file_get_contents函數,以post方式擷取url

<?php$data = array (‘foo' => ‘bar');$data = http_build_query($data);$opts = array (‘http' => array (‘method' => ‘POST',‘header'=> “Content-type: application/x-www-form-urlencodedrn” .“Content-Length: ” . strlen($data) . “rn”,‘content' => $data));$context = stream_context_create($opts);$html = file_get_contents(‘http://localhost/e/admin/test.html', false, $context);echo $html;?>

方法4:用fsockopen函數開啟url,以get方式擷取完整的資料,包括header和body,fsockopen需要 PHP.ini 中 allow_url_fopen 選項開啟

<?phpfunction get_url ($url,$cookie=false){$url = parse_url($url);$query = $url[path].”?”.$url[query];echo “Query:”.$query;$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);if (!$fp) {return false;} else {$request = “GET $query HTTP/1.1rn”;$request .= “Host: $url[host]rn”;$request .= “Connection: Closern”;if($cookie) $request.=”Cookie:  $cookien”;$request.=”rn”;fwrite($fp,$request);while(!@feof($fp)) {$result .= @fgets($fp, 1024);}fclose($fp);return $result;}}//擷取url的html部分,去掉headerfunction GetUrlHTML($url,$cookie=false){$rowdata = get_url($url,$cookie);if($rowdata){$body= stristr($rowdata,”rnrn”);$body=substr($body,4,strlen($body));return $body;}return false;}?>

方法5:用fsockopen函數開啟url,以POST方式擷取完整的資料,包括header和body

<?phpfunction HTTP_Post($URL,$data,$cookie, $referrer=”"){// parsing the given URL$URL_Info=parse_url($URL);// Building referrerif($referrer==”") // if not given use this script as referrer$referrer=”111″;// making string from $dataforeach($data as $key=>$value)$values[]=”$key=”.urlencode($value);$data_string=implode(“&”,$values);// Find out which port is needed – if not given use standard (=80)if(!isset($URL_Info["port"]))$URL_Info["port"]=80;// building POST-request:$request.=”POST “.$URL_Info["path"].” HTTP/1.1n”;$request.=”Host: “.$URL_Info["host"].”n”;$request.=”Referer: $referern”;$request.=”Content-type: application/x-www-form-urlencodedn”;$request.=”Content-length: “.strlen($data_string).”n”;$request.=”Connection: closen”;$request.=”Cookie:  $cookien”;$request.=”n”;$request.=$data_string.”n”;$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);fputs($fp, $request);while(!feof($fp)) {$result .= fgets($fp, 1024);}fclose($fp);return $result;}?>

方法6:使用curl庫,使用curl庫之前,可能需要查看一下php.ini是否已經開啟了curl擴充

<?php$ch = curl_init();$timeout = 5;curl_setopt ($ch, CURLOPT_URL, ‘http://www.bkjia.com/');curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$file_contents = curl_exec($ch);curl_close($ch);echo $file_contents;?>

10.對於HTTP的POST方式,使用者提交的表單資料位元於HTTP的哪一部分? b a) 頭中 …………………

Http之Get/Post請求區別
1.HTTP請求格式:







[]

在HTTP請求中,第一行必須是一個請求行(request line),用來說明請求類型、要訪問的資源以及使用的HTTP版本。緊接著是一個首部(header)小節,用來說明伺服器要使用的附加資訊。在首部之後是一個空行,再此之後可以添加任意的其他資料[稱之為主體(body)]。

1. get是從伺服器上擷取資料,post是向伺服器傳送資料。
get 和 post只是一種傳遞資料的方式,get也可以把資料傳到伺服器,他們的本質都是發送請求和接收結果。只是組織格式和資料量上面有差別,http協議裡面有介紹
2. get是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
因為get設計成傳輸小資料,而且最好是不修改伺服器的資料,所以瀏覽器一般都在地址欄裡面可以看到,但post一般都用來傳遞大資料,或比較隱私的資料,所以在地址欄看不到,能不能看到不是協議規定,是瀏覽器規定的。
3. 對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料。
沒明白,怎麼獲得變數和你的伺服器有關,和get或post無關,伺服器都對這些請求做了封裝
4. get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
post基本沒有限制,我想大家都上傳過檔案,都是用post方式的。只不過要修改form裡面的那個type參數
5. get安全性非常低,post安全性較高。
如果沒有加密,他們安全層級都是一樣的,隨便一個監聽器都可以把所有的資料監聽到,不信你自己下一個監聽網路資源的軟體,

Get是向伺服器發索取資料的一種請求,而Post是向伺服器提交資料的一種請求,在FORM(表單)中,Method預設為"GET",實質上,GET和POST只是發送機制不同,並不是一個取一個發!
Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應該有個大概的瞭解了,GET一般用於擷取/查詢資源資訊,而POST一般用於更新資源資訊。
1.根據HTTP規範,GET用於資訊擷取,而且應該是安全的和等冪的。

(1).所謂安全的意味著該操作用於擷取資訊而非修改資訊。換句話說,GET 請求一般不應產生副作用。就是說,它僅僅是擷取資源資訊,就像資料庫查詢一樣,不會修改,增加資料,不會影響資源的狀態。

* 注意:這裡安全的含義僅僅是指是非修改資訊。

(2).等冪的意味著對同一URL的多個請求應該返回同樣的結果。這裡我再解釋一下等冪這個概念:

等冪(idempote......餘下全文>>
 

php對於怎get post http

把HTTP/1.1改為HTTP/1.0
$results=fgets($fp,1024);

$contents = substr($results,strpos($results,"\r\n\r\n")+4); //去掉請求返回的頭部

$header=substr($results,0,strpos($results,"\r\n\r\n")+1); //相應的頭資訊

具體應該是這樣,其實這種用socket實現的PHP的http類(類比post或get)
可以參考下
www.wenlingnet.com/archives/2009/12/05/67.html
 

http://www.bkjia.com/PHPjc/840764.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/840764.htmlTechArticlephp發送get、post請求的6種方法簡明總結,get6種 方法1: 用file_get_contents 以get方式擷取內容: php$url='http://www.bkjia.com/';$html = file_get_contents($ur...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.