REQ: einfaches php script zum url-forwarding
Gex 28.09.2005 - 00:21 756 7
Gex
Oralapostel
|
tja ich kann's nicht besser beschreiben, bin kein begnadeter coder ich suche ein script, das ich mir auf meinen webspace lege. das heisst z.b. "forward.php" jetzt möchte ich http://meine.domain.de/forward.php?...overclockers.at anklicken können, und das script leitet mich ohne umschweife auf oc.at um. ich schätze mal, das ist mit php ziemlich einfach zu lösen... aber ich kann halt kein PHP wer kann helfen?
|
tomstig
OC Addicted
|
header("location: http://www.o.v.e.r.clockers.at");
Aber du darfst davor nicht hinschreiben, was im Browser angezeigt wird... z.B.: works <html>
<body>
<?php
header("location: http://www.o.v.e.r.clockers.at");
?>
</body>
</html>
doesn't work <html>
<body>
Sie werden weitergeleitet
<?php
header("location: http://www.o.v.e.r.clockers.at");
?>
</body>
</html>
hth
Bearbeitet von tomstig am 28.09.2005, 00:32
|
Gex
Oralapostel
|
oh, vielen dank für deine mühe ich hab mich wohl etwas missverständlich ausgedrückt: ich möchte die URLs, auf die weitergeleitet wird, nicht fest im script integrieren. das script sollte einfach auf jede beliebige adresse weiterleiten, die ich in der adresszeile über "forward.php?fw=http://www.beliebige-adresse.de" angebe.
|
tomstig
OC Addicted
|
<?php
header("location: " . $_GET['fw']);
?>
|
Gex
Oralapostel
|
genau so! herzlichen dank
|
watchout
Legendundead
|
Aber du darfst davor nicht hinschreiben, was im Browser angezeigt wird... Sorry, aber das is' Blödsinn. Es darf vor einem Header keine Ausgabe erfolgen - Jedes Zeichen das gesendet wird ist eine Ausgabe, also auch HTML-Code. Oft geht das Ganze im Buffer unter und es geht sich dann noch aus - aber genau dann gibts die Probleme, die man nie findet... Willst du also doch HTML-Text anzeigen (Normalerweise wird bei header-Weiterleitung der Rest des HTML-Files garnicht geladen, aber manche Browser unterstützden die Weiterleitung nicht, also ist es doch sinnvoll noch einen kurzen HTML-Text auszugeben.) muss dieser Code VOR allen Ausgaben stehen. Um jetzt korrekt anzugeben mit Beispielen: Works: <?php
header("location: " . $_GET['fw']);
?>
<html>
<body>
<a href="<?=$_GET['fw'] ?>">Click here to jump to your page</a>
</body>
</html>
MAY work: <html>
<body>
<?php
header("location: " . $_GET['fw']);
?>
<a href="<?=$_GET['fw'] ?>">Click here to jump to your page</a>
</body>
</html>
Will NOT work / i.e throws Error: <html>
<body>
<?php
flush();
header("location: " . $_GET['fw']);
?>
<a href="<?=$_GET['fw'] ?>">Click here to jump to your page</a>
</body>
</html>
Ich will keinen niedermachen, aber die Aussage war schlicht falsch und ich wollte das klarstellen.
|
tomstig
OC Addicted
|
Ich will keinen niedermachen, aber die Aussage war schlicht falsch und ich wollte das klarstellen. Zur Kenntnis genommen Ich hab halt die Erfahrung gemacht, dass auch bei HTML-"Ausgabe" header() funktioniert. Wahrscheinlich ist das in die gleiche Kategorie mit Strings und Variablen zu werfen - funktioniert zwar, ist aber falsch... Ich werde in Zukunft versuchen, das zu vermeiden.
|
watchout
Legendundead
|
nein, bitte lies genau den oberen post von mir durch - es KANN funktionieren, ist aber nur dem Output-Buffer zu verdanken. Wenn du dein Projekt jetzt sagen wir zuhause auf dem Testserver läuft und der ein OB-Setting von 4kB hat, und du hast vor deinem header(...); 3kB Zeichen Ausgabe (HTML, Text, wwi), dann wird das gehen weil alles noch im Buffer ist und nicht zum Client gesendet wurde. Sagen wir du lädst dein Projekt jetzt auf den Server und der hat - aus welchem Grund auch immer - nur 2kB Output-Buffer - da werden schon Zeichen vor dem header gesendet. Aber du wirst nie draufkommen warum dein Script am Server plötzlich nicht funktioniert, weil du von falschen Annahmen ausgehst.
Viel schlimmer noch kann es sein, wenn du einen dynamischen Text/HTML-Code vor deiner header() Funktion ausgibst. Manchmal gehts manchmal nicht - Das kann sehr frustrierend werden...
|