首頁 >後端開發 >php教程 >php實作post和get

php實作post和get

WBOY
WBOY原創
2016-07-30 13:30:351113瀏覽

file_get_contents版本:

02
01
/**

03
 

04 
* @param string $url 請求位址

05 06
*

 

* @return string07

 

*/
 

08send_post(){
函數 函數 $post_data

$postdata
09 10    
= http_build_query(

$post_data

);

 

('http'
12         
=>

數組

(            
'方法'=>'發表'

14
'內容類型:application/x-www-form-urlencoded' ,
15

        ,    'timeout'=>15 * 60
16
//逾時時間(單位:s)

18

    );
 $context=stream_context_create($選項 );

20     $ , $上下文);

22回傳$結果
    
;

}
23
23

}}
23 }23}23
23

}
23 } 1$post_data= 數組(

>用戶名air22 01'
2
,

'密碼'=>
3    
'邯郜

=>'邯郜'邯郜);
=>4

5

實戰經驗:

當我利用上述程式碼給另一台伺服器發送http請求時,發現,如果伺服器處理請求時間過長,本地的PHP會中斷請求,即所謂的超時中斷,第一個懷疑的是PHP本身執行時間的超過限制,但想想也不應該,因為老早就按照這篇文章設定了「PHP執行時間限制」(【推薦】PHP上傳檔案大小限制大全),仔細琢磨,想想,應該是http請求本身的一個時間限制,於是乎,就想到了怎麼給http請求時間限制搞大一點。 。 。 。 。 。查看PHP手冊,果實真有個參數 “ timeout ”,預設不知道多大,當把它的值設大一點,問題得已解決,弱弱地做個筆記~~~

Socket版本:

send_post( 'http://blog.snsgou.com', $post_data);
/**

0203* 使用方法:
   

04* $post_string = "app=socket&version=beta"; 05
 

 

* request_by_socket('blog .snsgou.com', '/restServer.php', $post_string);06

0606*/
06

,$remote_path
07_
,

$ post_string,= 80,,
$port $timeout= 30) {= 30) {     $socket= fsockopen ($remote_server
$port

,

$errno
, $errstr , $timeout); if(!$socket) die("$errstr($errno)");
fwrite(

$socket

,
"POST $remote_path HTTP/1.0"); $socket, "User-Agent: Socket Example");

$socket, "Content-type: application/x-www-form-urlencoded"
, "HOST: $remote_server" ); $socket
);

fwrite($post_string) + 8) .
$socket, "Content-length: ". (strlen(
""

);
15com , "Accept:*/*");

17
socket, "");

17
, "mypost=$post_string" ); $socket, "");
19

""

;

21
20     while( $插座,4096))){

        

$header
22    }

$資料
23   
=

""

;

25

26
    while (!feof

        

$data
.= fgets ($socket, 4096);2     }

28   $資料;

30 }

Curl版本:

*

07
函數 request_by_curl($remote_server, $post_string) {

);

09

    

curl_setopt(

$ch
, CURLOPT_URL, $remote_server );

);
108 $ch 、CURLOPT_POSTFIELDS、 'mypost='$post_string

11 ch ,CURLOPT_RETURNTRANSFER,true);

$ch, CURLOPT_USERAGENT,
12     curl_setopt(
$ch

, CURLOPT_USERAGENT,

"snsgou.com 的CURL 範例測試版"=curl= _exec(
);
$ch

);

14
  

16
15 

    

17 }
Curl 版本( 2)

01/**  * 發送HTTP請求

 
03  *
* @param string $url 請求地址

 
05
* @param string $method 請求方式GET/POST

 
* @param string $refererUrl 請求來源位址

07 
*param  

08

 * @param string $contentType

09

10
 *param  

 

* @param string $proxy 11

 

* @return * @return  
   * @return
* @return

 
12  */

$url,
13 functionsend_request(
$data

, $refererUrl''    if
= , $method $contentType= 'application/json', $timeout= 30, $proxy= false) { $ch= null; 15
(

$method)) {16
        

$ch
17        curl_setopt( $ch, CURLOPT_POST, 1);

18

$ch        
, CURLOPT_HEADER,0 ); 19
curl_setopt(

$ch

20         ch, CURLOPT_RETURNTRANSFER, 1);

 ($ch , CURLOPT_FORBID_REUSE, 1);
22

        
curl_setopt($ch curl_setopt($ch, CURPT_TIME $timeout);

  $refererUrl) {

24

            curl_setopt( $ch, CURLOPT_ER, CURLOPT_ER, $refererUrl);

 ) {
26       ($contentType

        }
27             curl_setoptopv. 數組('Content-Type:'.$contentType));

        if
29
(

)){

$資料
30             curl_setopt($ch, CURLOPT_POSTFIELDS,
);

31 {
32

            
curl_setopt($ch , CURLOPT_POSTFIELDS, http_30_query(); 33
        

}

(
34    } =='否則請問如果如果取得真toupper
$方法

)) {

35
      

$資料

)){strpos
36             $real_url=$url$real_url=$url$real_url。 (
(

$url

,
'? ') === 假? '? ''')。 $資料;

'? '
{ 3838 $real_url=$url。 (strpos($url,
)===假?

'? '

'')。 http_build_query( $data);
 

        curl_setoptopt(url
40  41        $ch_$ 42
$ch

, CURLOPT_HEADER, 0);,CURLOPT_HTTPHEADER,
 curl_setopt( $ch
數組

(

'Content-Type:'
.$contentType ));
        

curl_setopt($ ch,CURLOPT_TIMEOUT, $逾時
, CURLOPT_RETURNTRANSFER, 1);  ( $ch
);

  $refererUrl) {

47             . $refererUrl);

    
49
}

    {50
}否則

.     
51

假;

52
53

 54
    

if($代理
$代理

5 5

        curl_setopt( $ch , CURLOPT_PROXY, $代理);

);
57    $ret =curl_exec($ch

=curl_getinfo (
$ch);

59      $內容=
60

            
'httpInfo' => 。    '發送' =>$資料,

62

                   

63         $ret

     'http'=>$訊息,

);
65                  

67     curl_close(
68

69    
$ret ;

7070 以上就介紹了php實作post和get,包含了面向的內容,希望對PHP教學有興趣的朋友得到幫助。
} } restRequest($r_url,' POST', json_encode( $data));

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn