» »

Vpis na stran samo za določene IP-je

Vpis na stran samo za določene IP-je

Digo991 ::

Imam težavo pri omejevanju vpisa z Ip-ji. v bazo podatkov (v pgAdmin III) sem vnesel IP-je katerim bom dovolil vpis na svoj forum. Tu pa se mi zatakne. Narejeno imam že celotno login, register formo, ki dela kot mora. Zdaj ko pa bi rad dodal omejitev z IP-ji pa nevem kako naj to vključim v mojo PHP kodo. Mi lahko kdo pomaga?

Hvala za odgovor.

usoban ::

IP klienta lahko dobis iz

$_SERVER['REMOTE_ADDR']


kako bos omejil? Pogledal bos v bazo ce je IP na listi dovoljenih. Kje bos omejil? To pa ne vem, odvisno a hoces omejit samo postanje, ali tudi branje.

Zgodovina sprememb…

  • spremenil: usoban ()

Digo991 ::

Ip-je vseh klientov že imam vnešene v bazi, zato ne rabim pridobiti IP naslovov. Omejil bi rad VPIS na stran, kar pomeni, da če se IP tistega, ki se vpisuje oz. registrira ne ujema z IP-jem, ki je vnešen v bazi podatkov (pgAdmin III), se ne more vpisati oz. registrirati.

_Dormage_ ::

Sej ti je lepo odgovoril.
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

Tako dobiš host ip. Potem narediš query po IPjih v bazi in, če ga najdeš na v bazi ga spustiš skozi prijavo.

Digo991 ::

Nerabim pridobiti nobenega IP-ja, ker že vse imam. V tem pa je problem, da mi nikakor ne uspe narediti tega.
Non-stop mi javlja napake za headerje oz. sploh ne pride do baze.

Koda izgleda takole:

$ip = 'SELECT ip FROM fin.forum_ip';
$result = pg_query($ip);
$zapis = pg_fetch_assoc($result);

if (!$zapis) {
header('Location: protectedip.php');
}
else {
header('Location: index.php');
}

Zgodovina sprememb…

  • spremenilo: Digo991 ()

IceBoX ::

Ja kako boš vedel ali se uporabnik x lahko prijavi ali ne? Najprej boš pridobil njegov IP in nato pogledal če ta IP obstaja v bazi. Če obstaja, dovoliš vstop, drugače ne.
Huh...

Digo991 ::

Ha, sploh nisem pomislil na to :) Se pravi bi morala koda izgledati nekako takole: ?

$user_ip = ($_SERVER['REMOTE_ADDR']);
$ip = 'SELECT ip FROM fin.forum_ip WHERE ip = \''.pg_escape_string($user_ip).'\'';
$result = pg_query($ip);
$zapis = pg_fetch_assoc($result);

if (!$zapis) {
header('Location: protectedip.php');
}
else {
header('Location: index.php');
}

Ali lahko ta file (userip.php) preprosto includam v login.php in register.php?

_Dormage_ ::

Ja ideja je prava, če pa zgornja stvar dela ali ne boš pa sam vedu bolj.
Pa preveri, da imaš v bazi IPje v istem formatu kot ga vrne
$_SERVER['REMOTE_ADDR']

Digo991 ::

Zgornja koda mi ne deluje :/ Nikakor ne najdem rešitve...

IP-ji v bazi so v formatu cidr, prikazan je kot 111.111.111.111/32.

Digo991 ::

Oz. koda deluje, vendar me stalno redirecta na protectedip.php, čeprav imam v bazi vnešen svoj IP.

vorantz ::

si preveru kaj ti sploh vrne?

Digo991 ::

Kako naj to preverim?

Sploh ne pride do baze, ker mi nonstop redirecta na protectedip.

klemen93 ::

echo $_SERVER['REMOTE_ADDR'];

Potem pa uredi ta ip tako, da ga boš lahko primerjal s tistimi v bazi.

Digo991 ::

Zakaj mi vrne čisto drug IP, kot mi ga pokaže na myipaddress.com?

Kako to misliš, da ga uredim? Ali je problem tudi v tem, da imam v bazi tip IP-jev "cidr", ki na koncu prikaže še /32?

vorantz ::

očitno ne veš kaj un 32 dela na koncu
ta ti pove, da iščeš range ip-jev in ne samo enega
tko, da tvoj sql query sploh ne more delat

Digo991 ::

Kaj pa naj naredim potem?

vorantz ::

aja sm mal pozabu...32 na koncu v bistvu pomeni samo 1 ip
pol al spremeni un ip ki ga dobiš v cidr zapis in pol naredi sql query al pa mej v bazi navadne ip-je
v tvojem primeru se mi zdi bol primerno da maš v bazi navadne ipje

Digo991 ::

Stvar je začela delovati! :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

JavaScript v PHP-ju

Oddelek: Izdelava spletišč
61035 (820) drola
»

[php] Knjiga gostov

Oddelek: Izdelava spletišč
293158 (2361) darix
»

[PHP] Kako blokirat IP

Oddelek: Programiranje
172112 (1697) CaqKa
»

PHP - kako dobiti host

Oddelek: Programiranje
91232 (1112) pac3k
»

anketa z vec moznostmi

Oddelek: Izdelava spletišč
121626 (1505) Packač

Več podobnih tem