Maison  >  Article  >  développement back-end  >  Comment utiliser fsockopen GET/POST pour soumettre des formulaires et télécharger des fichiers via php

Comment utiliser fsockopen GET/POST pour soumettre des formulaires et télécharger des fichiers via php

jacklove
jackloveoriginal
2018-06-09 15:01:261622parcourir

php utilise fsockopen GET/POST pour soumettre des formulaires et télécharger des fichiers

1.GET

get.php

<?php
$host = &#39;demo.fdipzone.com&#39;;
$port = 80;
$errno = &#39;&#39;;
$errstr = &#39;&#39;;
$timeout = 30;
$url = &#39;/socket/getapi.php&#39;;
$param = array(
    &#39;name&#39; => &#39;fdipzone&#39;,
    &#39;gender&#39; => &#39;man&#39;
);
$url = $url.&#39;?&#39;.http_build_query($param);
// create connect
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if(!$fp){
    return false;
}
// send request
$out = "GET ${url} HTTP/1.1\r\n";
$out .= "Host: ${host}\r\n";
$out .= "Connection:close\r\n\r\n";
fputs($fp, $out);
// get response
$response = &#39;&#39;;
while($row=fread($fp, 4096)){
    $response .= $row;
}
fclose($fp);
$pos = strpos($response, "\r\n\r\n");
$response = substr($response, $pos+4);
echo $response;
?>

getapi.php

25eed5875dc39cb4ccbae3d67327971a';
echo 'gender='.$gender;
?>

2.POST

post.php

<?php
$host = &#39;demo.fdipzone.com&#39;;
$port = 80;
$errno = &#39;&#39;;
$errstr = &#39;&#39;;
$timeout = 30;
$url = &#39;/socket/postapi.php&#39;;
$param = array(
    &#39;name&#39; => &#39;fdipzone&#39;,
    &#39;gender&#39; => &#39;man&#39;,
    &#39;photo&#39; => file_get_contents(&#39;photo.jpg&#39;)
);
$data = http_build_query($param);
// create connect
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if(!$fp){
    return false;
}
// send request
$out = "POST ${url} HTTP/1.1\r\n";
$out .= "Host:${host}\r\n";
$out .= "Content-type:application/x-www-form-urlencoded\r\n";
$out .= "Content-length:".strlen($data)."\r\n";
$out .= "Connection:close\r\n\r\n";
$out .= "${data}";
fputs($fp, $out);
// get response
$response = &#39;&#39;;
while($row=fread($fp, 4096)){
    $response .= $row;
}
fclose($fp);
$pos = strpos($response, "\r\n\r\n");
$response = substr($response, $pos+4);
echo $response;
?>

postapi.php

<?php
define(&#39;UPLOAD_PATH&#39;, dirname(__FILE__).&#39;/upload&#39;);
$name = $_POST[&#39;name&#39;];
$gender = $_POST[&#39;gender&#39;];
$photo = $_POST[&#39;photo&#39;];
$filename = time().&#39;.jpg&#39;;
file_put_contents(UPLOAD_PATH.&#39;/&#39;.$filename, $photo, true);
echo &#39;name=&#39;.$name.&#39;<br>&#39;;
echo &#39;gender=&#39;.$gender.&#39;<br>&#39;;
echo &#39;<img src="upload/&#39;.$filename.&#39;">&#39;;
?>

3. Télécharger le fichier

fileapi.php

<?php
$host = &#39;demo.fdipzone.com&#39;;
$port = 80;
$errno = &#39;&#39;;
$errstr = &#39;&#39;;
$timeout = 30;
$url = &#39;/socket/fileapi.php&#39;;
$form_data = array(
    &#39;name&#39; => &#39;fdipzone&#39;,
    &#39;gender&#39; => &#39;man&#39;,
);
$file_data = array(
    array(
        &#39;name&#39; => &#39;photo&#39;,
        &#39;filename&#39; => &#39;photo.jpg&#39;,
        &#39;path&#39; =>&#39;photo.jpg&#39;
    )
);
// create connect
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if(!$fp){
    return false;
}
// send request
srand((double)microtime()*1000000);
$boundary = "---------------------------".substr(md5(rand(0,32000)),0,10);
$data = "--$boundary\r\n";
// form data
foreach($form_data as $key=>$val){
    $data .= "Content-Disposition: form-data; name=\"".$key."\"\r\n";
    $data .= "Content-type:text/plain\r\n\r\n";
    $data .= rawurlencode($val)."\r\n";
    $data .= "--$boundary\r\n";
}
// file data
foreach($file_data as $file){
    $data .= "Content-Disposition: form-data; name=\"".$file[&#39;name&#39;]."\"; filename=\"".$file[&#39;filename&#39;]."\"\r\n";
    $data .= "Content-Type: ".mime_content_type($file[&#39;path&#39;])."\r\n\r\n";
    $data .= implode("",file($file[&#39;path&#39;]))."\r\n";
    $data .= "--$boundary\r\n";
}
$data .="--\r\n\r\n";
$out = "POST ${url} HTTP/1.1\r\n";
$out .= "Host:${host}\r\n";
$out .= "Content-type:multipart/form-data; boundary=$boundary\r\n"; // multipart/form-data
$out .= "Content-length:".strlen($data)."\r\n";
$out .= "Connection:close\r\n\r\n";
$out .= "${data}";
fputs($fp, $out);
// get response
$response = &#39;&#39;;
while($row=fread($fp, 4096)){
    $response .= $row;
}
fclose($fp);
$pos = strpos($response, "\r\n\r\n");
$response = substr($response, $pos+4);
echo $response;
?>

fileapi.php

<?php
define(&#39;UPLOAD_PATH&#39;, dirname(__FILE__).&#39;/upload&#39;);
$name = $_POST[&#39;name&#39;];
$gender = $_POST[&#39;gender&#39;];
$filename = time().&#39;.jpg&#39;;
echo &#39;name=&#39;.$name.&#39;<br>&#39;;
echo &#39;gender=&#39;.$gender.&#39;<br>&#39;;
if(move_uploaded_file($_FILES[&#39;photo&#39;][&#39;tmp_name&#39;], UPLOAD_PATH.&#39;/&#39;.$filename)){
    echo &#39;<img src="upload/&#39;.$filename.&#39;">&#39;;
}
?>

Cet article explique comment utiliser fsockopen GET/POST pour soumettre des formulaires et télécharger des fichiers via PHP. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois.

Recommandé en premier :

Introduction connexe à l'optimisation MySQL des performances d'insertion

Comment utiliser les méthodes de personnalisation courantes de PHP

Comment crypter/déchiffrer des fichiers en utilisant le OU exclusif (XOR) via php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn