PHP verwendet Socket, um die POST-Methode zu simulieren
Dieser Artikel stellt hauptsächlich die Methode vor, mit der PHP Sockets zum Simulieren von POST verwendet, und analysiert die gängigen Techniken zum Simulieren von POST über Sockets anhand von Beispielen.
Fast das am häufigsten verwendete simulierte POST Ich habe PHP Curl verwendet, um es zu implementieren. Heute habe ich gesehen, dass ein Freund einen Artikel mit einem PHP-Socket geschrieben hat, der eine POST-Anfrage simuliert.
In der Vergangenheit habe ich die PHP-Curl-Erweiterung verwendet, um Post-Anfragen zu simulieren. Ich hätte nie gedacht, dass PHP-Socket auch implementiert werden könnte. Ich habe kürzlich die relevanten Informationen durchgesehen und festgestellt, dass sie nicht so tiefgreifend sind. Es ist nur so, dass ich das Prinzip und die Essenz von Post nie vollständig verstanden habe. Tatsächlich geht es darum, eine als Post markierte Protokollzeichenfolge an das Zielprogramm zu senden folgt:
POST / Zielprogramm-URL HTTP/1.1
Akzeptieren: Informationsformat empfangen
Referer: URL-Quelle
Accept-Language: Empfangssprache
Content-Type: application/ x-www-form-urlencoded
Cookie: Website-Cookie, Sie müssen nicht zu viel erklären, oder?
Benutzer- Agent: Benutzeragent, Betriebssystem und Version, CPU-Typ, Browser- und Versionsinformationen
Host: Die zu sendende Hostadresse
Content-Length : Die Länge der gesendeten Daten
Pragma: Ob es einen lokalen Cache gibt
Cache-Kontrolle: ob ein Webseiten-Cache benötigt wird
Verbindung: Verbindungsstatus
Benutzername=fengdingbo&password=jb51 .net //Per Post gesendete Daten
Ich denke, jeder sollte mit der Formular-Post-Methode zum Senden von Daten vertraut sein. Wenn wir beispielsweise den Benutzernamen und das Passwort an eine bestimmte Seite senden möchten, Füllen Sie das entsprechende Eingabefeld aus, klicken Sie auf die Schaltfläche „Senden“ und senden Sie schließlich das Formular. Die oben genannten Daten werden an das Aktionsprogramm gesendet. Wenn ich das weiß, denke ich, dass es nicht schwierig sein wird
Zu diesem Zeitpunkt müssen wir nur den PHP-Socket verwenden, um einen Port zu öffnen, z. B. Port 80, und diesen Port zum Senden der oben genannten Informationen verwenden zum Zielprogramm.
Wie richten wir einen Socket-Kanal an einem Port ein?
Es ist so einfach in PHP!
Offizieller Prototyp:
resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string & $errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
Das Folgende ist menschliches Verständnis:
fsockopen(Hostname, Portnummer, Fehlernummer und Variablen , Fehleraufforderung und Variablen, Zeitüberschreitung)
Der Hostname ist das Ziel, an das Sie Daten senden müssen.
Die Portnummer ist der Port, auf dem das Programm auf Ihre Daten wartet.
Fehler Die &-Variable Bei der Anzahl handelt es sich um die Fehlernummer, die zurückgegeben wird, wenn die Socket-Einrichtung fehlschlägt. Die &-Variable der Fehleraufforderung ist die bei Auftreten eines Fehlers zurückgegebene Fehlernummer Die andere Partei nach der Veröffentlichung der Daten keine Antwort auf die Nachricht, die maximale Wartezeit.
Wenn nichts anderes passiert (Sie haben die Parameter der Funktion fsockopen() richtig eingestellt), wurde nun ein Socket-Kanal geöffnet. Der nächste Schritt besteht darin, über diesen geöffneten Kanal zu posten. Das Anforderungsprotokoll wird an das Zielprogramm gesendet. Zu diesem Zeitpunkt können Sie entweder die Funktion fwrite oder fputs verwenden, um das Post-Anforderungsformat an das von fsockopen() geöffnete Ressourcenhandle zu senden .
<?php /** * SOCKET扩展函数 * @copyright (c) 2013 * @author Qiufeng <fengdingbo@gmail.com> * @link http://www.jb51.net * @version 1.0 */ /** * Post Request * * @param string $url * @param array $data * @param string $referer * @return array */ if ( ! function_exists('socket_post')) { function socket_post($url, $data, $referer='') { if( ! is_array($data)) { return; } $data = http_build_query($data); $url = parse_url($url); if ( ! isset($url['scheme']) || $url['scheme'] != 'http') { die('Error: Only HTTP request are supported !'); } $host = $url['host']; $path = isset($url['path']) ? $url['path'] : '/'; // open a socket connection on port 80 - timeout: 30 sec $fp = fsockopen($host, 80, $errno, $errstr, 30); if ($fp) { // send the request headers: $length = strlen($data); $POST = <<<HEADER POST {$path} HTTP/1.1 Accept: text/plain, text/html Referer: {$referer} Accept-Language: zh-CN,zh;q=0.8 Content-Type: application/x-www-form-urlencodem Cookie: token=value; pub_cookietime=2592000; pub_sauth1=value; pub_sauth2=value User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17 Host: {$host} Content-Length: {$length} Pragma: no-cache Cache-Control: no-cache Connection: closern {$data} HEADER; fwrite($fp, $POST); $result = ''; while(!feof($fp)) { // receive the results of the request $result .= fread($fp, 512); } } else { return array( 'status' => 'error', 'error' => "$errstr ($errno)" ); } // close the socket connection: fclose($fp); // split the result header from the content $result = explode("rnrn", $result, 2); // return as structured array: return array( 'status' => 'ok', 'header' => isset($result[0]) ? $result[0] : '', 'content' => isset($result[1]) ? $result[1] : '' ); } } print_r(socket_post('http://www.jb51.net/', array('name='=>'qiufeng','password'=>md5('www.jb51.net')))); /* e.g: socket_post('http://www.jb51.net', array('name='=>'qiufeng','password'=>md5('jb51.net'))); */ /* End of file socket_helper.php */
Tatsächlich wird beim Öffnen des Socket-Kanals der COOKIE, das wir übergeben, ist Wenn es korrekt ist (der im Screenshot ausgeführte PHP-Code stammt von oben und mein Benutzername wird auf der nach dem Ausführen zurückgegebenen Webseite angezeigt, was darauf hinweist, dass die andere Website erkannt hat, dass ich mich angemeldet habe), können wir dies tun viele Dinge, wie zum Beispiel erfrischende Beiträge, Antworten usw. Du verstehst, oder?
Okay, das Obige ist nicht überzeugend genug. Schauen wir uns einen PHP-Socket an, um das Hochladen von Bildern zu implementieren.
Der Anforderungsstring unter
ist für jede Sprache geeignet
Der Code lautet wie folgt
<?php $remote_server = "jb51.net"; $boundary = "---------------------".substr(md5(rand(0,32000)),0,10); // Build the header $header = "POST /api.php?action=twupload HTTP/1.0rn"; $header .= "Host: {$remote_server}rn"; $header .= "Content-type: multipart/form-data, boundary=$boundaryrn"; /* // attach post vars foreach($_POST AS $index => $value){ $data .="--$boundaryrn"; $data .= "Content-Disposition: form-data; name="".$index.""rn"; $data .= "rn".$value."rn"; $data .="--$boundaryrn"; } */ $file_name = "aaa.jpg"; $content_type = "image/jpg"; $data = ''; // and attach the file $data .= "--$boundaryrn"; $content_file = file_get_contents('aaa.jpg'); $data .="Content-Disposition: form-data; name="userfile"; filename="$file_name"rn"; $data .= "Content-Type: $content_typernrn"; $data .= "".$content_file."rn"; $data .="--$boundary--rn"; $header .= "Content-length: " . strlen($data) . "rnrn"; // Open the connection $fp = fsockopen($remote_server, 80); // then just fputs($fp, $header.$data); // reader while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp);
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für das Studium aller hilfreich sein.
Verwandte Empfehlungen:
phpSo erhalten Sie die aktuelle URL-Adresse
phpMethoden zur Realisierung der Hexadezimal- und Dezimalkonvertierungsfunktion
Das obige ist der detaillierte Inhalt vonPHP verwendet Socket, um die POST-Methode zu simulieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
