Autor Zpráva
Marschmallow
Profil
Dobrý den,
jak bych mohl vstup na jednu stránku povolit jen vybraným IP adresám? Příklad:
1.) Na stránku vstup.php vejde návštěvník 1 s povolenou IP adresou (nejlépe v .txt souboru) a zobrazí se mu obsah
2.) Na stránku vstup.php vejde návštěvník 2, který IP adresu nemá nikde vedenou (na serveru) a zobrazí se mu buď text "Přístup odepřen", nebo chybová hláška, že stránka neexistuje.
Nevíte někdo jak na to? Nebo spíše neznáte někdo nějakou www stránku?
Tedy jestli je to vůbec realizovatelné.

Děkuji předem :)
okolojsoucí
Profil
Možná tam bude chyba, psal jsem to z hlavy

function isIPBlocked($document){
    if(file_exists($document)){
        $ip = $_SERVER['REMOTE_ADDR'];
        $file = file($document);
        foreach($file as $line){
            if($ip == $line){
                return true;
                break;
            }
        }
        return false;
    }else{
        return false;
    }
}

if(isIPBlocked('blokace.txt')){
    exit('Vase IP ma zde zakaz!');
}
Orkee
Profil
Marschmallow:
Ahoj,
Nejednodušší příklad je nepustit nezvané vůbec.
Pro apache server stačí přidat do .htaccess souboru:

deny from all
allow from x.x.x.x
allow from y.y.y.y

Nezvaný uživatel obdrží chybu 403.
více třeba zde: Soubor .htaccess

Další možností je použít nějaký server-side jazyk, který rozhodne podle ip. např v php:
$seznam=array("1.2.3.4","2.3.4.5");
if(in_array($_SERVER['REMOTE_ADDR'],$seznam)){
echo "Přístup povolen";
} else Location("odkážeš ho pryč");//popř vyhodíš chybu
okolojsoucí
Profil
Orkee:
Pro apache server stačí přidat do .htaccess souboru:
Nepřichází v úvahu pokud těch lidí bude dejme tomu 200 tak se stránka bude načítat cca 5s než vůbec Apache projede celý htaccess.

Další možností je použít nějaký server-side jazyk, který rozhodne podle ip. např v php:
Nepřichází v úvahu, co když těch lidí bude 200? To bude pěkný guláš v tom array.

Nejlepší možností je to dělat přes externí soubor (txt) nebo přes databázi kde se výrazně lépe hledá.

Vkládej prosím kódy mezi značky a (stačí kliknout na ).
Orkee
Profil
okolojsoucí:
Samozřejmě záleží na účelu aplikace. Než však ukazovat jedno konkrétní řešení problému je podle mne lepší ukázat možnosti. Co když to bude chtít psát v ruby?
Pokud chce mít statickou html stránku pro 3 lidi není důležité se učit php a může využít htaccess.
okolojsoucí
Profil
Orkee:
Co když to bude chtít psát v ruby
To by napsal, a předpokládejme že když jeho soubor má koncovku .php tak to bude php.
Pokud htaccess není dobře optimalizovaný na webu to spíše pak škodí.
JanK
Profil *
pro htaccess není problém zpracovávat několik tisíc záznamů aniž by šlo zpozdění změřit. Několik stovek je lahoda. u Pár desítek tisíc už by muselo dojít k nějakému měření.

Doporučuji použít htaccess, adresy jsou skoro jak v textovém souboru a je možné si je jednoduše pomocí komentářů pojmenovat a rozčlenit. V txt souboru to možné není nebo bys musel dělat složitější parser

deny from all 
allow from 192.168.1.1 #soused
allow from 192.168.1.1 #sousedka

# ostatní stránky na serveru
allow from 10.0/255.255.0.0

#firma od naproti
allow from 193.10.123.1
allow from 193.10.123.5
allow from 193.10.123.7
juriad
Profil
okolojsoucí:
Pokud zabezpečenou stránku dá do vlastního adresáře, může .htaccess být na úrovni toho adresáře.
V takovém případě nebude ovlivňovat zbylé stránky a většinu návštěvníků.
Použitím .htaccess se navíc ušetří výkon, neboť se nemusí „startovat“ PHP.
jenikkozak
Profil
okolojsoucí:
Nepřichází v úvahu pokud těch lidí bude dejme tomu 200 tak se stránka bude načítat cca 5s než vůbec Apache projede celý htaccess.
S pětkou souhlasím. Ale sekl ses minimálně o čtyři řády.

Nepřichází v úvahu, co když těch lidí bude 200? To bude pěkný guláš v tom array.
Nechápu, proč by v něm měl být guláš, zatímco v externím souboru ne.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: