Maison  >  Article  >  développement back-end  >  Explication graphique et textuelle détaillée de PHP utilisant fsockopen GET/POST pour soumettre des formulaires et télécharger des fichiers

Explication graphique et textuelle détaillée de PHP utilisant fsockopen GET/POST pour soumettre des formulaires et télécharger des fichiers

墨辰丷
墨辰丷original
2018-05-22 13:38:271679parcourir

Cet article présente principalement en détail l'utilisation par PHP de fsockopen GET/POST pour soumettre des formulaires et télécharger des fichiers. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à

L'utilisation par PHP de fsockopen GET/POST pour soumettre le. formulaire et télécharger des fichiers, le contenu spécifique est le suivant

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

<?php 
$name = $_GET[&#39;name&#39;]; 
$gender = $_GET[&#39;gender&#39;]; 
 
echo &#39;name=&#39;.$name.&#39;<br>&#39;; 
echo &#39;gender=&#39;.$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échargez le fichier

file.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;; 
} 
?>

Recommandations associées :

php multithread php fsockopenSolution

Explication détaillée du scanner de port ouvert fsockopen() de php

fsockopen() fonction d'analyse du port ouvert Appareil

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