2

コンテンツが自分の IP アドレスと他の誰かだけのものになるようにしようとしています。私は試した:

<?php
$ip = $_SERVER['REMOTE_ADDR'];

if ($ip = "FirstIp" && $ip="SecondIp") {
echo "Protect Content";
} else {
echo "You do not have permission to look at this.  Your IP has been recorded. $ip";
$fileofips="list.txt";
$ip = "$_SERVER[REMOTE_ADDR]";

$file=fopen($fileofips, 'a');
fwrite($f, $_SERVER[REMOTE_ADDR]);

fclose($f);
}
?>

また、侵入する IP をキャプチャすることさえありません。コードを調整してください;P

4

4 に答える 4

4
if ($ip = "FirstIp" && $ip="SecondIp") {

単一の等号は代入であり、比較ではありません。また、おそらく次のことを意味していまし||た。$ip一度に 2 つのことはできません。

if($ip === "FirstIP" || $ip === "SecondIP") {

また、おそらくファイル内の IP 間に改行が必要なので、\n. また、次のように変数を二重引用符で囲みます。

$ip = "$_SERVER[REMOTE_ADDR]";

無意味です。変数を使用します。

于 2012-07-21T03:52:09.520 に答える
4

単一の;を使用しているため、ステートメントは変数ifを上書きしています。に変更し、を anに変更します (1 つの IP を同時に 2 つにすることはできません):$ip===&&||

if ($ip == "FirstIp" || $ip == "SecondIp") {
于 2012-07-21T03:52:41.440 に答える
1

Sparkupsの答えのように。

$ip = $_SERVER['REMOTE_ADDR'];
if (in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    // add hidden content here 
} else {
    echo "Access denied";
}

または、さらに良いことに、IP が配列にない場合は、メッセージを投稿して終了します。次のことを行うだけです:

$ip = $_SERVER['REMOTE_ADDR'];
if (!in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    echo "Access denied";
    exit; 
}

または、何もないように見せるために 404 ページを含めます。

$ip = $_SERVER['REMOTE_ADDR'];
if (!in_array($ip, ["FirstIp", "SecondIp", "ThirdIp"])) {
    include('404.html');
    exit; 
}
于 2016-09-30T21:59:21.310 に答える