


PHP ソケット プログラミングを使用して Http post および get リクエストをシミュレートする、socketget_PHP チュートリアル
PHP ソケット プログラミングを使用して、HTTP の投稿とリクエストの取得をシミュレートします (socketget)。
ここでは、PHP ソケット プログラミングを使用して HTTP リクエストをシミュレートするコードを共有したいと思います。これは非常に実用的です。最後に、HTTP リクエストをシミュレートするいくつかの方法について説明します。* PHP ソケット プログラミングを使用して、HTTP 投稿をシミュレートし、リクエストを取得します
* @著者コマ
*/ クラス HTTP{
プライベート $sp = "rn"; //这里必须要書成双引号 private $protocol = 'HTTP/1.1';
プライベート $requestLine = "";
プライベート $requestHeader = "";
プライベート $requestBody = "";
プライベート $requestInfo = "";
プライベート $fp = null;
プライベート $urlinfo = null;
プライベート $header = array();
プライベート $body = "";
プライベート $responseInfo = "";
プライベート静的 $http = null; //HTTP对象单例
プライベート関数 __construct() {}
パブリック静的関数 create() {
if ( self::$http === null ) {
self::$http = 新しい Http();
}
自分自身を返します::$http;
}
パブリック関数 init($url) {
$this->parseurl($url);
$this->header['ホスト'] = $this->urlinfo['ホスト'];
$this を返します。
}
パブリック関数 get($header = array()) {
$this->header = array_merge($this->header, $header);
return $this->request('GET');
}
パブリック関数 post($header = array(), $body = array()) {
$this->header = array_merge($this->header, $header);
if ( !empty($body) ) {
$this->body = http_build_query($body);
$this->header['Content-Type'] = 'application/x-www-form-urlencoded';
$this->header['Content-Length'] = strlen($this->body);
}
return $this->request('POST');
}
プライベート関数リクエスト($method) {
$header = "";
$this->requestLine = $method.' '.$this->urlinfo['path'].'?'.$this->urlinfo['query'].' '.$this->プロトコル;
foreach ( $this->header as $key => $value ) {
$header .= $header == "" ? $key.':'.$value : $this->sp.$key.':'.$value;
}
$this->requestHeader = $header.$this->sp.$this->sp;
$this->requestInfo = $this->requestLine.$this->sp.$this->requestHeader;
if ( $this->body != "" ) {
$this->requestInfo .= $this->body;
}
/*
* 注意: ここの fsockopen 中の URL パラメーターの形式は "www.xxx.com" です
* 不可够带"http://"这种
*/
$port = isset($this->urlinfo['port']) ? isset($this->urlinfo['port']) : '80';
$this->fp = fsockopen($this->urlinfo['host'], $port, $errno, $errstr);
if ( !$this->fp ) {
echo $errstr.'('.$errno.')';
false を返します。
}
if ( fwrite($this->fp, $this->requestInfo) ) {
$str = "";
while ( !feof($this->fp) ) {
$str .= fread($this->fp, 1024);
}
$this->responseInfo = $str;
}
fclose($this->fp);
$this->responseInfoを返します;
}
プライベート関数 parseurl($url) {
$this->urlinfo = parse_url($url);
}
} // $url = "http://news.163.com/14/1102/01/AA0PFA7Q00014AED.html";
$url = "http://localhost/httppro/post.php"; $http = Http::create()->init($url); /* 送信get请要求
echo $http->get(array(
'ユーザーエージェント' => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/35.0.1916.153 Safari/537.36',
));
*/
/* 送信post请要求 */ echo $http->post(array(
'ユーザーエージェント' => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/35.0.1916.153 Safari/537.36',
), array('username'=>'发一个中文', 'age'=>22));
php模拟 http请求
方法 1: PHP のソケット プロセスを利用して、インターフェイスから直接データを送信し、ポストの操作を模倣します。
建立两个文件post.php,getpost.php
post.php内容如下:
$params = '';
$errno = '';
$errstr = '';
//要投稿のデータ
$argv = 配列(
'var1'=>'abc',
'var2'=>'友人、調子はどうですか??');
//造要投稿の文字串
foreach ($argv as $key=>$value) {
if ($flag!=0) {
$params .= "&";
$flag = 1;
}
$params.= $key."=; $params.= urlencode($value);
$flag = 1;
}
$length = strlen($params);
//ソケット接続
$fp = fsockopen("localhost",81,$errno,$errstr,10) または exit($errstr."--->".$errno);
//構築投稿要求の头
$header = "POST /flandy/getpost.php HTTP/1.1rn";
$header .= "ホスト:127.0.0.1rn";
$header .= "リファラー:/flandy/post.phprn";
$header .= "Content-Type: application/x-www-form-urlencodedrn";
$header .= "コンテンツの長さ: ".$length."rn";
$header .= "接続: 閉じるrnrn";
//追加投稿の文字串
$header .= $params."rn";
//投稿データを送信します
fputs($fp,$header);
$inheader = 1;
while (!feof($fp)) {
$line = fgets($fp,1024); //削除要求パケットの头のみ表示面の戻り回数
if ($inheader && ($line == "n" || $line == "rn")) {
$inheader = 0;
}
if ($inheader == 0) {
エコー $line;
}
}
?>
echo "
";<br> print_r($_REQUEST);<br> echo "";
?>
投稿されたデータはArrayです
(
[var1] => abc
[var2] => 友達、元気ですか??
)
上記のコードは、このマシンのポート 81 でのテストに合格しました。
方法 2:
PHP のcurl 拡張機能または HttpClient.class.php クラスを使用します。これら 2 つは非常に似ています。curl 実装コードは以下にリストされています。
2 つのファイル post2.php と getpost2.php
post2.phpの内容は以下の通りです:
$psecode = 'NDE005';
$website = 'www.baidu.com';
$amt = 1;
$pwd = 123456;
$ch =curl_init();
$curl_url = "http://localhost:81/flandy/getpost2.php?web=" .
"&pwd=" . $pwd=" &action=check&pseid=" .
"&amt= . $amt;
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURTRANSFER, 1);//直接出力せず、変数に戻ります
$curl_result =curl_exec($ch);
$result =explode(',', $curl_result);
curl_close($ch);
print_r($result);
?>
getpost2.phpの内容は以下の通りです:
echo "returndata
";
echo "
";<br> print_r($_REQUEST);<br> echo "";
?>
結果出力:
配列 ([0] => returndataArray
) (
[ウェブ] =>「www百度コム」
[パスワード] => 123456
[アクション] =>チェック
[psid] =>「NDE005」
[午前] => 1
)
)
方法 3:
これには、サードパーティのクラス ライブラリ HttpClient の助けが必要です。これは、ここからダウンロードできます: http://scripts.incutio.com/httpclient/
<?php
require_once 'HttpClient.class.php';
$params = array('web' => 'www.baidu.com',
'pwd' => '123456',
'アクション' => 'チェック',
'psid' => 'NDE005',
'amt' => 1);
$pageContents = HttpClient::quickPost('http://localhost:81/flandy/getpost3.php', $params);
$result =explode(',', $pageContents);
print_r($result);
?>

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

PHPは死んでいません。 1)PHPコミュニティは、パフォーマンスとセキュリティの問題を積極的に解決し、PHP7.xはパフォーマンスを向上させます。 2)PHPは最新のWeb開発に適しており、大規模なWebサイトで広く使用されています。 3)PHPは学習しやすく、サーバーはうまく機能しますが、タイプシステムは静的言語ほど厳格ではありません。 4)PHPは、コンテンツ管理とeコマースの分野で依然として重要であり、エコシステムは進化し続けています。 5)OpcacheとAPCを介してパフォーマンスを最適化し、OOPと設計パターンを使用してコードの品質を向上させます。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトの要件に依存します。 1)PHPは、Web開発に適しており、学習しやすく、豊富なコミュニティリソースですが、構文は十分に近代的ではなく、パフォーマンスとセキュリティに注意を払う必要があります。 2)Pythonは、簡潔な構文と学習が簡単なデータサイエンスと機械学習に適していますが、実行速度とメモリ管理にはボトルネックがあります。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版
便利なJavaScript開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
