PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bestimmte ip-adressen umleiten


matin
08.11.2005, 00:34:15
hallo,

ich bin ziemlicher newbi in sachen php und würde gerne wissen, wie man bestimmte ip-adressen mit php umleiten kann. so nach dem motto "wenn die ip-adresse 123.456.77.88 ist, dann soll die datei domainxy.com/deine-datei.php geöffnet werden, wenn die ip anders ist, dann soll domainxy.com/standard.php geöffnet werden.

die ip auslesen und in eine variable speichern schaff ich schon, auch einen einfachen echo befehl dazu schaff ich. aber wie würde die weiterleitung aussehen. folgendes hab ich schon:

<?
print getenv("REMOTE_ADDR");
?>
<?
$ipadresse ="$REMOTE_ADDR";
echo "Ihre IP ist: $ipadresse";
?>
<?
if($ipadresse == "123.456.789.10")
{
echo "Hallo matin!";
}
?>

|Coding
08.11.2005, 00:55:56
Hi!

Das erreichst Du mit der header-Funktion. Siehe dazu: http://php.net/header

matin
08.11.2005, 09:20:06
besten dank. hab folgendes gemacht, funktioniert aber nicht ... wo liegt der fehler?

<?
$ipadresse ="$REMOTE_ADDR";
echo "Ihre IP ist: $ipadresse";
?>
<?
if($ipadresse == "123.123.456.789")
{
echo "Du bist nicht matin ;o)";
}
?>
<?
if($ipadresse == "777.888.999.55")
{
header("Location: http://www.aufdiesedomainsollgeleitetwerden.com/");
exit;
}
?>

feuervogel
08.11.2005, 10:44:39
du hast vor dem aufruf eine ausgabe, das ist der fehler. das sagt dir aber sicher auch die seite im handbuch.

mein tipp ist: schreib in die 1. zeile deines scriptes

ob_start( "ob_gzhandler" );

und in die letzte

ob_end_flush();

matin
08.11.2005, 13:25:02
besten dank! hab's hingekriegt mit:

<?
$ipadresse ="$REMOTE_ADDR";
?>
<?
if($ipadresse == "123.456.789.000")
{
header("Location: http://www.zieldomain.com/");
exit;
}
else
{
echo "Du bist nicht matin! ;o)";
}
?>

hatte den fehler gemacht, das ganze in den "body" zu packen - hab das ganze dann einfach in eine leere datei gepackt ...

xabbuh
08.11.2005, 13:26:29
Gewöhne dir übrigens an, die superglobalen Arrays (http://de3.php.net/manual/en/language.variables.predefined.php) zu benutzen, was in deinem Fall bedeutet, dass du $_SERVER['REMOTE_ADDR'] statt $REMOTE_ADDR verwenden musst.

matin
08.11.2005, 14:17:59
danke für den hinweis. hab mir die seite auf php.net durchgelsen, versteh davon leider die hälfte überhaupt nicht - bin ziemlich neu auf dem gebiet und php.net schreibt erläuterungen so, dass man sich dabei schon etwas besser auskennen muss.

heißt das nun, dass der von mit verwendete code bei anderen rechnern nicht funktioniert?

matin
08.11.2005, 14:37:46
... das blöde ist, dass folgender code aber nicht funktioniert!?!?

<?
$ipadresse ="$_SERVER['REMOTE_ADDR']";
?>
<?
if($ipadresse == "123.456.789.000")
{
header("Location: http://www.zieldomain.com/");
exit;
}
else
{
echo "Du bist nicht matin! ;o)";
}
?>

StefanL
08.11.2005, 15:12:44
Du hast einen Fehler in der ersten Zeile deines Codes:
$ipadresse ="$_SERVER['REMOTE_ADDR']";
hier sind die Anführungszeichen nach der Zuweisung (Gleichheitszeichen) falsch, entweder lässt du sie einfach weg oder machst es so:

<?php
if($_SERVER['REMOTE_ADDR'] == "123.456.789.000") {
header("Location: http://www.zieldomain.com/");
exit;
} else {
echo "Du bist nicht matin! ;o)";
}
?>

meikel (†)
08.11.2005, 15:23:33
Du hast einen Fehler in der ersten Zeile deines Codes:
$ipadresse ="$_SERVER['REMOTE_ADDR']";
Das ist ein Syntaxerror, bei dem das Script beendet wird. Stutzig machen sollte allerdings, daß die Fehlerausgabe offenbar komplett ausgeschaltet wurde. Suboptimale Voraussetzung, um Scripte zu testen.

sysop
08.11.2005, 23:46:07
da ich davon ausgehe, dass du die seite mit den superglobalen array nicht lesen konntest, weil alles auf englisch war...
das ganze nochmal auf deutsch (http://de3.php.net/manual/de/language.variables.predefined.php)

meikel (†)
09.11.2005, 00:56:26
da ich davon ausgehe, dass du die seite mit den superglobalen array nicht lesen konntest, weil alles auf englisch war...
das ganze nochmal auf deutsch (http://de3.php.net/manual/de/language.variables.predefined.php)
Das fehlt auch noch:
http://de3.php.net/manual/de/language.types.string.php#language.types.string.parsing.simple
// Funktioniert nicht; verwenden Sie geschweifte Klammern. Das
// erzeugt einen Parser-Fehler.
echo "Eine Banane ist $früchte['Banane'].";

matin
09.11.2005, 08:01:51
da ich davon ausgehe, dass du die seite mit den superglobalen array nicht lesen konntest, weil alles auf englisch war...
das ganze nochmal auf deutsch (http://de3.php.net/manual/de/language.variables.predefined.php)

... hatte mir die deutsche seite rausgesucht, aber da sind zu viele begriffe drin, die mich nur verwirren, weil ich sie nicht verstehe. trotzdem danke.

xabbuh
09.11.2005, 21:16:15
Fang doch erstmal mit dem Tutorial (http://tut.php-q.net) an. Auch da wird auf das Thema register_globals und Superglobals eingegangen.