Avatar billede carstengp Nybegynder
07. december 2003 - 16:58 Der er 24 kommentarer og
2 løsninger

Et redirect script, som tjekker IP

jeg har brug for et script af en art, som kan følgende:

- Det skal tjekke den IP, som folk kommer fra.
- Hvis IP'en er registreret, skal vedkommende redirectes til en URL.
- Hvis IP'en ikke er registreret, skal ´siden åbne som normalt.

(Registreret = blacklistet... Skal gerne kunne skrive flere IP-numre ind efterhånden. Evt. en tekstfil, som jeg kan lægge på serveren, som der slås op i)

Jeg har adgang til PHP, men jeg har ikke forstand på SQL.
Avatar billede raffar Juniormester
07. december 2003 - 23:26 #1
Du kunne gøre sådan

<?
if ($REMOTE_ADDR = "xxx.xxx.xxx.xxx") {
  header("location: filnavn_der_skal_redirectes_til.htm");
}
?>


Dette svarer yderligere lige dit spørgsmål.
http://www.eksperten.dk/spm/243840
Avatar billede carstengp Nybegynder
07. december 2003 - 23:56 #2
Ja, jeg kan godt bruge din version, men hvordan sætter jeg flere IP'er ind?

Det link du referer til har jeg prøvet, men det virker ikke, det der skrives.
Desuden linker de til et færdigt resultat, som heller ikke findes mere :-(

Men kan du fortælle mig, hvordan jeg sætter flere IP'er ind i den kode der, eller hvordan jeg får den til at slå op i en txt-fil, så er du dagens mand!
Avatar billede roenving Novice
08. december 2003 - 00:03 #3
if ($REMOTE_ADDR = "xxx.xxx.xxx.xxx"||$REMOTE_ADDR = "xxx.xxx.xxx.xxx") {
Avatar billede raffar Juniormester
08. december 2003 - 00:07 #4
Nu kom jeg for sent :)
Du kan se på det link jeg lagde hvor dea_pg har et godt eksempel på løsning, der inkluderer brug af .txt fil.
Avatar billede carstengp Nybegynder
08. december 2003 - 00:12 #5
jeg prøvede lige at lægge koden ud på min server... men der er altså et lille problem. For det er alle IP'er, som bliver redirectet, hvis man bruger den der kode... der må skal være en "else" funktion i også? Eller hvad?
Avatar billede roenving Novice
08. december 2003 - 00:15 #6
if ($REMOTE_ADDR == "xxx.xxx.xxx.xxx"||$REMOTE_ADDR == "xxx.xxx.xxx.xxx") {
Avatar billede carstengp Nybegynder
08. december 2003 - 00:16 #7
prøv selv her: http://www.grineflip.dk/test/test.php
Jeg har kun skrevet min egen IP ind i koden, så det skulle kun være mig der bliver sendt til "test.html" og derefter får åbnet "www.grineflip.dk"
Avatar billede carstengp Nybegynder
08. december 2003 - 00:18 #8
alle andre burde vel se PHP-filen?
Avatar billede roenving Novice
08. december 2003 - 00:19 #9
Fik du den med sammenligningstegnet med ?-)
Avatar billede carstengp Nybegynder
08. december 2003 - 00:20 #10
kan jeg så bare fortsætte?:

if ($REMOTE_ADDR == "xxx.xxx.xxx.xxx"||$REMOTE_ADDR == "xxx.xxx.xxx.xxx"||$REMOTE_ADDR == "xxx.xxx.xxx.xxx") {
Avatar billede carstengp Nybegynder
08. december 2003 - 00:21 #11
det eneste der står i koden lige nu er:

<?
if ($REMOTE_ADDR = "80.196.154.126") {
  header("location: test.html");
}
?>

Testvindue
Avatar billede roenving Novice
08. december 2003 - 00:23 #12
Sammenligningstegn i php er == !-)

Et enkelt lighedstegn er en tildelingsoperator, dvs. at variablen tildeles de forskellige adresser efterhånden, og da det lykkes, returnerer den første sand og redirecter derfor ...
Avatar billede carstengp Nybegynder
08. december 2003 - 00:28 #13
roenving... jeg fatter ingenting!
Kan jeg sætte mere end to sammen?

Hvorfor redirectes alle IP'er, når det kun er min egen jeg har sat ind?
Avatar billede carstengp Nybegynder
08. december 2003 - 00:29 #14
er det fordi der skal to lighedstegn i den kode jeg har på nu?
Avatar billede roenving Novice
08. december 2003 - 00:30 #15
Du har ikke fået sat dobbelte lighedstegn, som er sammenligningstegnet i php !-)

-- og du kan sætte så mange sammen, som det er praktisk, i princippet uden ende, men der er nogen begrænsninger i maximal linjelængde, som jeg ikke kender !o]

<?
if ($REMOTE_ADDR == "80.196.154.126"||$REMOTE_ADDR == "xxx.xxx.xxx.xxx"||$REMOTE_ADDR == "xxx.xxx.xxx.xxx") {
  header("location: test.html");
}
?>
Avatar billede carstengp Nybegynder
08. december 2003 - 00:32 #16
okay... nu har jeg fattet pointen... kan jeg så evt. sætte den samme kode på igen? f.eks:

<?
if ($REMOTE_ADDR == "80.196.154.126"||$REMOTE_ADDR == "xxx.xxx.xxx.xxx"||$REMOTE_ADDR == "xxx.xxx.xxx.xxx") {
  header("location: test.html");
}
?>

<?
if ($REMOTE_ADDR == "80.196.154.126"||$REMOTE_ADDR == "xxx.xxx.xxx.xxx"||$REMOTE_ADDR == "xxx.xxx.xxx.xxx") {
  header("location: test.html");
}
?>
Avatar billede roenving Novice
08. december 2003 - 00:34 #17
-- så længe du gør det før der er skrevet html-kode, så ja !-)
Avatar billede carstengp Nybegynder
08. december 2003 - 00:34 #18
okay, smid lige et svar så, og tak!
Avatar billede roenving Novice
08. december 2003 - 00:35 #19
Velbekomme '-)

-- og havde det ikke været for raffars kode havde jeg ikke kunnet hjælpe dig !-)
Avatar billede carstengp Nybegynder
08. december 2003 - 00:37 #20
Okay, men du rettede jo fejlen i den, og du har dog hjulpet mest.
Jeg fordeler pointene som jeg synes det er rimeligt! :-)
Avatar billede grunken Nybegynder
08. december 2003 - 00:37 #21
-og så husk lige at i alt efter php version 4.1, der er register_globals ikke sat til som default, så det må anbefales at du laver dit script omtrent sådan!


$ip = $_SERVER['REMOTE_ADDR'];

if($ip=="xxx.xxx.xxx.xxx" || o.s.v.){
header("location: test.html");
}
Avatar billede carstengp Nybegynder
08. december 2003 - 00:39 #22
grunken... okay, virker det så osse i de tidligere versioner?
Avatar billede roenving Novice
08. december 2003 - 00:40 #23
-- nok ikke nogen dårlig pointe grunken smider ind over !-)

-- og du fordeler selvfølgelig, som du synes !o]

Tak for points ;~}
Avatar billede raffar Juniormester
08. december 2003 - 00:42 #24
Tak for points..

Jeg fand et andet eksempel på netter der gør brug af switch. Måske har det interesse at se et andet alternativ.

<?php

// Adding the ^ at the front of an IP blocks any IP that starts with
// See $ip_blocked_3 for example

// Add the blocked IP(s) below
$ip_blocked = "111.12.12.12";    // Blocks a single IP (111.12.12.12)
$ip_blocked_2 = "111.12.12.12";  // Blocks a single IP (111.12.12.12)
$ip_blocked_3 = "^111.12.";      // Any IP that starts with 111.12. bann em

// hmmmm, how about switch function...
switch ($REMOTE_ADDR)  // If Remote Addres...
{
case "$ip_blocked":    // equals blocked IP
Header("Location: blocked.php");  // send him to the blocked page
break;
case "$ip_blocked_2":    // equals blocked IP
Header("Location: blocked.php");  // send him to the blocked page
break;
case "$ip_blocked_3":    // equals blocked IP
Header("Location: blocked.php");  // send him to the blocked page
}
?>
Avatar billede carstengp Nybegynder
08. december 2003 - 00:44 #25
okay, det ser da osse interesant ud raffar... takker!
Avatar billede carstengp Nybegynder
08. december 2003 - 00:45 #26
det var rent faktisk lige sådan noget jeg var ude efter...
Så kan man sende den ene IP det ene sted hen og den anden et andet sted hen.

Min mening var faktisk, at provokere dem, som spammer min gæstebog og lign.
Det er der da rig mulighed for med den kode *LOL*
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester