b.phpコード
//投稿を通じてのみアクセスできます
if ($_SERVER['REQUEST_METHOD'] == 'GET')
{header('HTTP/1.1 404 Not Found'); '親愛なる、ページは存在しません' ); }
$fs1=$_POST['a'];
$fs2=$_POST['b'];
$allowTime = 30; //読み取り IP 制限に対して更新する訪問者の IP を取得します
/*開始する実際の IP を取得します*/
if ( ! function_exists('GetIP'))
{
function GetIP()
{
static $ip = NULL;
if ($ ip !== NULL)
{
return $ip;
}
if (isset($_SERVER))
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$arr = explode(', ', $_SERVER['HTTP_X_FORWARDED_FOR']);
/* X-Forwarded-For の x 番目の不明でない有効な IP 文字を取得します */
foreach ($arr as $xip)
{ www.jbxue .com
$xip = トリム($xip);
if ($xip != '不明')
{
$ip = $xip;
}
}
}
elseif (isset($_SERVER[' HTTP_CLIENT_IP'] ))
{
$ip = $_SERVER['HTTP_CLIENT_IP']
}
else
{
if (isset($_SERVER['REMOTE_ADDR']))
{
$ip = $_SERVER['REMOTE_ADDR] '];
}
$ip = '0.0.0.0'
}
}
}
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$ip = getenv('HTTP_X) _FORWAR DED_FOR ');
}
elseif (getenv('HTTP_CLIENT_IP'))
{
$ip = getenv('HTTP_CLIENT_IP')
}
else
{
$ip = getenv('REMOTE_ADDR');
preg_match("/ [d.]{7,15}/", $ip, $onlineip);
$ip = ! $onlineip[0] : '0.0.0.0'; return $ip;
}
}
/*実際の IP の取得の終了*/
$reip = GetIP();
//関連パラメータ md5 暗号化
$allowT = md5($reip.$fs1.$fs2); if(!isset( $_SESSION[$allowT])){
$_SESSION[$allowT] = time();
}
else if(time() - $_SESSION[$allowT]-->>$_SESSION[$allowT] = time();
} www.jbxue.com
//更新が速すぎる場合は、404 ヘッダーとプロンプトが直接表示されます
else {header('HTTP/1.1 404 Not Found '); die('from' .$ip.'親愛なる、更新が早すぎました');}
?>
コードは非常に単純で、POST を通じて更新する必要があるページに送信された IP とデータを暗号化し、それを md5 暗号化後にセッションに書き込み、保存されたセッションを通じて更新時間間隔を判断するだけです。更新を許可するかどうかを決定します。 2 つのパラメータ「$fs1=$_POST['a'];」と「$fs1=$_POST['a'];」は、他のページが必要とするページに送信するパラメータを参照していることに注意してください。 post メソッドを通じて更新されます。 IP に加えてこれらのパラメータが追加される理由は、さまざまな投稿結果を区別するためです。 (実際には、いわゆるアンチリフレッシュは、特定のページが繰り返し送信されるのを防ぐことです。)
より具体的には、たとえば、上記のコードが b.php ページの先頭に配置されている場合、a.html ページには次のフォームが表示されます:
コード: