"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

REQ: einfaches php script zum url-forwarding

Gex 28.09.2005 - 00:21 756 7
Posts

Gex

Oralapostel
Avatar
Registered: Jan 2001
Location: Piefkinesien
Posts: 3376
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
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
Code: PHP
header("location: http://www.o.v.e.r.clockers.at");

Aber du darfst davor nicht hinschreiben, was im Browser angezeigt wird...

z.B.:
works
Code: PHP
<html>
<body>
<?php
header("location: http://www.o.v.e.r.clockers.at");
?>
</body>
</html>

doesn't work
Code: PHP
<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
Avatar
Registered: Jan 2001
Location: Piefkinesien
Posts: 3376
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
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
Code: PHP
<?php
header("location: " . $_GET['fw']);
?>

Gex

Oralapostel
Avatar
Registered: Jan 2001
Location: Piefkinesien
Posts: 3376
genau so!
herzlichen dank :)

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von tomstig
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:
Code: PHP
<?php
  header("location: " . $_GET['fw']); 
?>
<html>
  <body>
    <a href="<?=$_GET['fw'] ?>">Click here to jump to your page</a>
  </body>
</html>

MAY work:
Code: PHP
<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:
Code: PHP
<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
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
Zitat von watchout
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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...
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz