ホームページ  >  記事  >  バックエンド開発  >  PHP シミュレーションのポスト動作コードの概要 (POST メソッドは絶対に安全ではない)_PHP チュートリアル

PHP シミュレーションのポスト動作コードの概要 (POST メソッドは絶対に安全ではない)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:20:201288ブラウズ

選択できる方法は 2 つあります。 1 つ目: 手書きコード。 2番目: HttpClient phpクラスライブラリを使用します
最初の方法:

コードをコピーします コードは次のとおりです:

$flag = 0;
//投稿するデータ
$argv = array(
'var1'=>'abc',
'var2'=>'How are you')
//構築要件文字列
foreach ($argv as $key=>$value) {
if ($flag!=0) {
$params .= "&";
$flag = 1; key."="; $params.= urlencode($value);
$flag = strlen($params);
$fp = fsockopen(" ",80,$errno,$errstr,10) または exit($errstr."--->".$errno);
//投稿リクエストのヘッダーを構築します
$header = "POST /mobile/try .php HTTP/1.1";
$header .= "Host:127.0.0.1";
$header .= "Referer:/mobile/sendpost.php";
$header .= "Content-Type: application/x- www-form-urlencoded";
$header .= "Content-Length: ".$length."";
$header .= "Connection: Close";
//投稿文字列を追加します
$header .= $params ."";
//投稿データを送信
fputs($fp,$header);
while (!feof($fp)) {
$line = fgets($fp,1024) ; /リクエストパケットのヘッダーを削除し、ページの戻りデータのみを表示します
if ($inheader && ($line == "n" || $line == "")) {
$inheader = 0;
if ( $inheader == 0) {
echo $line;
}
}
fclose($fp)?>


2 番目の方法は、httpclient クラスを使用します



コードは次のとおりです:

$pageContents = HttpClient::quickPost('http://example.com/someForm', array(
'name' => 'Some Name',
'email' => ; 'email@example.com '
)); httpclient クラス ライブラリを使用するには、公式 Web サイトにアクセスして最新のクラス ライブラリをダウンロードします。 /httpclient/index.php php httpclient のその他のポイントを添付します 使用法
Web ページを取得する静的メソッド:



コードをコピー

コードは次のとおりです:


$pageContents = HttpClient::quickGet('http ://bankcha.com')

を取得するための Get メソッド コードをコピー
コードは次のとおりです:

$client = new HttpClient('bankcha.com');
if (!$client->get('/')) {
die('エラーが発生しました: '.$client->getError()
);
if (!$client->get('/')) {
die('エラーが発生しました: '.$client->getError());
}
$pageContents = $client-> ; getContent();
自動リダイレクトを使用したメソッドの取得
$client = new HttpClient('www.bankcha.com')
if (!$client-> get('/')) {
die('エラーが発生しました: '.$client->getError());
$pageContents = $client->getContent();
ページが存在するか確認します
PHP コード
$client = new HttpClient('bankcha.com');
$client->setDebug(true);
if (!$client->get('/thispagedoesnotexist')) {
die('Anエラーが発生しました: '.$client->getError());
}
if ($client->getStatus() == '404') {
echo 'ページが存在しません!'
}
$pageContents = $client->getContent();
偽のクライアント
$client = new HttpClient('bankcha.com');
$client->setUserAgent(' Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3a) Gecko/20021207');
if (!$client->get('/')) {
die('エラー発生しました: '.$client->getError());
}
$pageContents = $client->getContent();
ログイン検証とWebページのリクエスト
PHPコード
$client = new HttpClient('bankcha. com ');
$client->post('/login.php', array(
'ユーザー名' => 'サイモン',
'パスワード' => 'アヒル'
)); $ client->get('/private.php')) {
die('エラーが発生しました: '.$client->getError())
}
$pageContents = $client->getContent() ;
HTTP認証
PHPコード
$client = new HttpClient('bankcha.com');
$client->setAuthorization('ユーザー名', 'パスワード'); / ')) {
die('エラーが発生しました: '.$client->getError());
$pageContents = $client->getContent();
ヘッダー情報を出力します
PHPコード
$client = new HttpClient('bankcha.com');
if (!$client->get('/')) {
die('エラーが発生しました: '.$client->getError());
print_r($client->getHeaders());
ドメイン内のリダイレクトの最大数を設定する
PHP コード
$client = new HttpClient('www.bankcha.com');
$client->setDebug( true);
$client->setMaxRedirects(3);


php fsockopen 偽の投稿と取得メソッド (探している場合)偽の投稿と get メソッドの PHP 処理コードは非常に優れています。



コードをコピーします

コードは次のとおりです:


//fsocket は送信後のシミュレーションを行います
$purl = "http://localhost/netphp/test2.php?uu=rrrrrrrrrr" ;
print_r( parse_url($url));
sock_post($purl,"uu=555555555555");
//fsocket は送信関数の取得をシミュレートします。 sock_get($url, $query)
{
$info = parse_url($) url);
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3);
$head = ".$info['path']."?".$info ["クエリ" ]." HTTP/1.0rn"; $head .= "ホスト: ".$info['host']."rn"; $head .= "rn"; $fp, $ head); while (!feof($fp)) {
$line = fread($fp,4096)
}
}
sock_post($purl,"uu=rrrrrrrrrrrr) ");
関数 sock_post($url, $query)
{
$info = parse_url($url);
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3);
$head = "POST ".$info['path']."?".$info["query"]." HTTP/1.0rn";
$head .= "ホスト: ".$info['host ']." rn";
$head .= "リファラー: http://".$info['host'].$info['path']."rn"; : application/x -www-form-urlencodedrn";
$head .= "Content-Length: ".strlen(trim($query))."rn";
$head .= "rn";
$head . = トリム ($ クエリ);
$write = fputs($fp, $head);
{
$line = fread($fp,4096); }
}
?>



http://www.bkjia.com/PHPjc/325137.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/325137.html

技術記事

選択できる方法は 2 つあります。 1 つ目: 手書きコード。 2 番目: HttpClient php クラス ライブラリを使用します。 1 番目の方法: コードをコピーします。 PHP $flag = 0; //投稿するデータ $a...

;
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。