php 模拟POST提交的2种方法

    技术2022-05-19  21

    1.通过curl函数

    $post_data = array () ; $post_data [ ' clientname ' ] = " test08 " ; $post_data [ ' clientpasswd ' ] = " test08 " ; $post_data [ ' submit ' ] = " submit " ; $url = ' http://xxx.xxx.xxx.xx/xx/xxx/top.php ' ; $o = "" ; foreach ( $post_data as $k => $v ) {      $o .= " $k = " . urlencode ( $v ) . " & " ; } $post_data = substr ( $o , 0 ,- 1 ) ; $ch = curl_init () ; curl_setopt ( $ch , CURLOPT_POST , 1 ) ; curl_setopt ( $ch , CURLOPT_HEADER , 0 ) ; curl_setopt ( $ch , CURLOPT_URL , $url ) ; //为了支持cookie curl_setopt ( $ch , CURLOPT_COOKIEJAR , ' cookie.txt ' ) ; curl_setopt ( $ch , CURLOPT_POSTFIELDS , $post_data ) ; $result = curl_exec ( $ch ) ;

    2.通过fsockopen

    $URL =‘ http : //xxx.xxx.xxx.xx/xx/xxx/top.php'; $post_data [ ' clientname ' ] = " test08 " ; $post_data [ ' clientpasswd ' ] = " test08 " ; $post_data [ ' submit ' ] = " ログイン " ; $referrer = "" ; // parsing the given URL $URL_Info = parse_url ( $URL ) ; // Building referrer if ( $referrer == "" ) // if not given use this script as referrer $referrer = $_SERVER [ " SCRIPT_URI " ] // making string from $data foreach ( $post_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.1 /n " ; $request .= " Host: " . $URL_Info [ " host " ] . " /n " ; $request .= " Referer: $referrer /n " ; $request .= " Content-type: application/x-www-form-urlencoded /n " ; $request .= " Content-length: " . strlen ( $data_string ) . " /n " ; $request .= " Connection: close /n " ; $request .= " /n " ; $request .= $data_string . " /n " ; $fp = fsockopen ( $URL_Info [ " host " ] , $URL_Info [ " port " ]) ; fputs ( $fp , $request ) ; while ( ! feof ( $fp )) {      $result .= fgets ( $fp , 128 ) ; } fclose ( $fp ) ;

    最新回复(0)