Weiterleitung in PHP?

hanka

hanka

Mitglied
Hi Leute,

ich beschäftige mich grad mit einem Webprojekt.
Gearbeitet wird dort mit Typo3, ich kann aber momentan nur ein wenig PHP.. naja, geht ja theoretisch auch.

Meine Frage ist folgende:
Gibt es eine Möglichkeit nach einer if-Abfrage bei einem bestimmten Fall auf eine andere Unterseite weiter zu leiten?
Hab schon ne Menge dazu gegoogelt, finde aber immer nur
Code:
Header("Location: http://www.beispiel.de")
was bei mir aber dummerweise nicht funktioniert.

Gibt es in PHP eine andere Möglichkeit, oder muss ich da umdenken und mir etwas anderes ausdenken?

Schonmal danke für jegliche helfende Antwort.
Gruß,
hanka
 
Code:
header("Location: url.de");
Wichtig ist, dass es klein geschrieben wird und das vorher noch keine Daten an den Referrer gesendet wurden. Das bedeutet kein echo oder sonstiges darf vornedran sein.
 
Vielleicht nicht soooo der Burner, sollte aber auch funktionieren:

Code:
<head>
....
<?
if($blablub){
   print("<meta http-equiv=\"refresh\" content=\"1; URL=http://www.beispiel.de\">\n");
   //Im Body vllt. noch bei Bedarf den Link...
}
?>
....
</head>
 
Problem wird wohl hier folgendes sein:
Ich komme an den Headbereich einfach nicht dran, da ich nur einzelne Unterseiten bearbeiten kann.
Eigentlich sind das noch nichtmal richtige Unterseiten, sondern nur einzelne Unterteile der Unterseiten.

Edit:
Code:
Warning: Cannot modify header information - headers already sent by (output started at /***.php:71) in /***.php(55) : eval()'d code on line 120

Schade.., dann muss ich mir wohl son tolles Typo3-Buch zu gemüte führen..
 
Zuletzt bearbeitet:
Tja, da musste entweder den Typo3-Quelltext verändern oder die HTML-Variante von daboss benutzen.
 
Code:
headers already sent
Da wurde bereits was übermittelt - vor dem besagten Header-Aufruf darf überhaupt nichts übermittelt werden.
Aber ich denke sowas kann man sicher auch per HTML regeln. Auch für ne normale HTML-Seite gibt es (ich glaube im Body-Tag) eine Möglichkeit für Umleitung. Frag jetzt aber bitte nicht, wie es genau geht, da musste schon a bissle googeln ;).
 
Alternativ kannst du natürlich auch mit Javascript weiterleiten... Dann hast du keine Probleme mit dem Header, dafür mit Leuten die JS deaktiviert haben...

Ps: Ich weiss, das JS keine Alternative zu PHP ist, aber vllt. ist es eine Alternative in der momentanen Situation.
 
Ja, JS wollte ich eigentlich nicht benutzen, hab das aber mal eingebaut, damit es wenigstens auf einigen Rechnern funktioniert. So als Notlösung.

Aber mal ne andere Frage..,
wenn ich die gepostete HTML-Lösung integrieren möchte, kann ich das doch nur imm <head>-Bereich machen, oder besteht die Möglichkeit sozusagen im <body> nochmal dazwischen irgendwo ein <head> einzufügen?

Denn wie gesagt, auf den Header habe ich absolut keinen Zugriff, kann und darf daran auch nichts ändern, da ich nur einen kleinen Teil für ein größeres Projekt beitragen soll.

Vielen herzlichen Dank für die geposteten Antworten.
Hat mir da teilweise schon gut weitergeholfen.
THX :))
 
hab nur überflogen

Header allrady send bedeutet du hast vorher schon ein
<HEAD> </HEAD>
das muss raus.
 
wenn ich die gepostete HTML-Lösung integrieren möchte, kann ich das doch nur imm <head>-Bereich machen, oder besteht die Möglichkeit sozusagen im <body> nochmal dazwischen irgendwo ein <head> einzufügen?
Vielleicht per IFrame ?
 
Ihr fangt an alles zu verwechseln :D

"Headers already sent" bezieht sich auf die PHP-Lösung (header("Location: url.de")). Die kann er ja jetzt anscheinend nicht nutzen da er keinen Zugriff auf den Quellcode von Typo3 hat.

Die zweite Möglichkeit die er hat, ist eine HTML-Weiterleitung:
<meta http-equiv="refresh" content="1; URL=http://www.beispiel.de">

Diese HTML-Weiterleitung sollte per Definition im <head>-Bereich stehen (ist ein Meta-Tag) funktioniert aber auch genausogut im <body>.

Code:
<body>
Sie werden in 3 Sekdunden weitergeleitet.
<meta http-equiv="refresh" content="3; URL=http://www.beispiel.de">
</body>

<meta http-equiv="refresh" content="0; URL=http://www.beispiel.de"> bewirkt eine sofortige Umleitung.


Am saubersten wäre allerdings die PHP-Lösung
 
Zuletzt bearbeitet:
sorry, nur überflogen,
aber hast recht nächste mal genau lesen!
 
Habe nun den Meta-Tag eingebaut und es funktioniert.
THX@ALL :)
 
Du kannst auch PHP so konfigurieren dass er die Ausgabe puffert. Das musst du dann natürlich vor der ersten Ausgabe machen.
 
So zB:
PHP:
<?php ob_start(); ?>
<h1>blablupp</h1>
<?php
   if($bedingung==true) {
      header("Location: http://www.unixboard.de"); exit();
   }
   ob_end_flush();
?>
bla bla bla
So wird alles vor der if-clause gepuffert, und erst nach der if ausgegeben.
 
Zuletzt bearbeitet:
So zB:
PHP:
<?php ob_start(); ?>
<h1>blablupp</h1>
<?php
   if($bedingung==true) {
      header("Location: http://www.unixboard.de"); exit();
   }
   ob_end_flush();
?>
bla bla bla
So wird alles vor der if-clause gepuffert, und erst nach der if ausgegeben.

Es wird alles von ob_start() bis ob_end_flush() gepuffert.
 
Zurück
Oben