PHP でログインをシミュレートする_PHP チュートリアル
Jul 13, 2016 am 10:59 AM シミュレートされたログインについてよく質問されますが、実際、その原理は非常に簡単で、Web サイトから返されるヘッダー情報は特定の Web サイトに固有のものです。 。
ソースコード:
<?php
/*
* ウェブコンテンツを入手
* パラメータ: $host [in] 文字列
* ホスト名 (例: www.etoow.com)
* パラメータ: $method [in] 文字列
* 送信方法: POST、GET、HEAD... および対応するパラメーターを追加します (特定の構文については RFC1945、RFC2068 を参照)
* パラメータ: $str [in] 文字列
*投稿内容
* パラメータ: $sessid [in] 文字列
* PHP の SESSIONID
*
* @return Web ページのコンテンツ文字列
*/
関数 GetWebContent($host, $method, $str, $sessid = '')
{
$ip = gethostbyname($host);
$fp = fsockopen($ip, 80);
if (!$fp) return;
fputs($fp, "$methodrn");
fputs($fp, "ホスト: $hostrn");
if (!empty($sessid))
{
fputs($fp, "Cookie: PHPSESSID=$sessid; path=/;rn");
}
if (substr(trim($method),0, 4) == "POST")
{
fputs($fp, "Content-Length: ".strlen($str) ."rn") // 長さを指定することを忘れないでください
}
fputs($fp, "Content-Type: application/x-www-form-urlencodedrnrn");
if (substr(trim($method),0, 4) == "POST")
{
fputs($fp, $str."rn");
}
while(!feof($fp))
{
$response .= fgets($fp, 1024);
}
$hlen = strpos($response," ") // LINUX では " "
;
$header = substr($response, 0, $hlen);
$entity = substr($response, $hlen 4);
if ( preg_match('/PHPSESSID=([0-9a-z] );/i', $header, $matches))
{
$a['sessid'] = $matches[1];
}
if ( preg_match('/Location: ([0-9a-z_?=.] )/i', $header, $matches))
{
$a['location'] = $matches[1];
}
$a['コンテンツ'] = $entity;
fclose($fp);
$a を返します;
}
/* ユーザー名とパスワード文字列を構築します */
$str = ("ユーザー名=テスト&パスワード=テスト");
$response = GetWebContent("localhost","POST /login.php HTTP/1.0", $str);
echo $response['location'].$response['content']."<br>";
echo $response['sessid']."<br>";
if ( preg_match('/error.php/i',$response['location']))
{
echo "ログインに失敗しました<br>";
} その他 {
echo "ログインに成功しました<br>";
// sessidパラメータがないためUser.phpにアクセスできません
$response = GetWebContent("localhost","GET /user.php HTTP/1.0", '', '');
echo $response['location']."<br>" // 結果: error.php?errcode=2
// user.php
にアクセスできます
$response = GetWebContent("localhost","GET /user.php HTTP/1.0", '', $response['sessid']);
echo $response['location']."<br>" // 結果: user.php
}
?>

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
