So verwenden Sie fsockopen GET/POST zum Senden von Formularen und Hochladen von Dateien über PHP

jacklove
Freigeben: 2023-03-31 10:46:01
Original
1650 Leute haben es durchsucht

PHP verwendet fsockopen GET/POST, um Formulare einzureichen und Dateien hochzuladen

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;
?>
Nach dem Login kopieren

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;
?>
Nach dem Login kopieren

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;
?>
Nach dem Login kopieren

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;;
?>
Nach dem Login kopieren

3. Datei hochladen

Datei .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;
?>
Nach dem Login kopieren

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;;
}
?>
Nach dem Login kopieren

Dieser Artikel erklärt, wie man fsockopen über PHP verwendet GET/POST-Formulare einreichen und Dateien hochladen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Zuerst empfohlen:

Verwandte Einführung in die MySQL-Optimierung der Einfügeleistung

So verwenden Sie allgemeine PHP-Anpassungsmethoden

So verschlüsseln/entschlüsseln Sie Dateien mit Exklusiv-ODER (XOR) über PHP

Das obige ist der detaillierte Inhalt vonSo verwenden Sie fsockopen GET/POST zum Senden von Formularen und Hochladen von Dateien über PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage