Umleitung auf andere seite funktioniert nicht wirklich..

TerraX10

Mitglied
Hi,

habe mal wieder ein kleines Problem.
Zunächst einmal ich möchte eine Weiterleitung einrichten die den user nach dem login direkt auf eine andere Seite weiterleitet als die, die im standard festgesetzt ist.

hab zwar schon ein paar dinge rumgetestet aber irgendwie passt das alles nicht so wie ichs gern haben möchte...

z.B. mit
PHP:
 <meta http-equiv="refresh" content="0; URL=http://blablaba.com">

hab ich das problem das man ja dann irgendwie auf der seite auf die man weitergeleitet wurde festsitz und nichmehr rauskommt, da die seite sich irgendwie ständig neu läd.
(Gibts da vllt einfach irgendwie ne möglichkeit, das nach einmaligem ausführen zu stoppen?)


und mit
PHP:
header("location: blalabalbalba.com");
bekomm ich den fehler das die umleitung irgendwie fehlschlug...

Hoffe ihr könnt mir irgendwie weiterhelfen :)

Mfg
 
Zitat von http://php.net/manual/de/function.header.php

Beachten Sie, dass Sie die Funktion header() aufrufen müssen, bevor Sie irgendeine andere Art von Ausgabe (seien es normale HTML-Tags, Leerzeilen in einer Datei oder von PHP) zum Client schicken.

Falsch:
PHP:
<html>
<?php
/* Dies wird einen Fehler provozieren. Beachten Sie die vorangehende Ausgabe,
 * die vor dem Aufruf von header() erzeugt wird */
header('Location: http://www.example.com/');
?>

Richtig:

PHP:
<?php
header('Location: http://www.example.com/');
?> 

<html>
 
Zuletzt bearbeitet:
@ maniac

Da kommt dann....

Fehler: Umleitungsfehler

Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
Dieses Problem kann manchmal auftreten, wenn Cookies deaktiviert oder abgelehnt werden.
 
Zeig mal deinem Code.
Der Fehler wird wohl nicht die Umleitung selber sein sondern die Art wie du sie einsetzt.

Da ja umgeleitet werden soll nachdem sich ein User eingeloggt hat, muss es ja in etwa so aussehen:

PHP:
if ($login == TRUE) {
    header('Location:die_neue_seite.php');
} else {
    // Code um das Anmeldeformular anzuzeigen
}
 
wollte einfach nur ne kleine umleitung ins login script einbauen...^^

PHP:
	  $strtotime1 = strtotime ("now");
	  $strtotime2 = strtotime ($AppUI->user_pass_date);
 
 
$result = ($strtotime1 - $strtotime2)/(3600*24);
 
if ($result >= 90 ){
	
echo ("Die Änderung ihres Passwortes liegt länger als 90 Tage zurück. Sie werden in wenigen Sekunden automatisch weitergeleitet...."),"\n";
	
 
<meta http-equiv="refresh" content="5; URL=http://.....com">
}
 
Wenn du es so lösen willst, dann musst du die meta-Angaben in den Header der Datei schreiben.

PHP:
<head>
<title>Meine Seite</title>
<meta keine Ahnung>
<?php
// Code um die Zeitspanne zu berechnen
$strtotime1 = strtotime ("now"); 
$strtotime2 = strtotime ($AppUI->user_pass_date); 
$result = ($strtotime1 - $strtotime2)/(3600*24);

if ($result >= 90 ) {

?>

<meta http-equiv="refresh" content="90; URL=http://www.deine_seite.com">

<?php
}
?>
<body>
<?php
if ($result >= 90) {     
    echo "Die Änderung ihres Passwortes liegt länger als 90 Tage zurück. Sie werden in wenigen Sekunden automatisch weitergeleitet.\n"; 
}
?>
</body>
 
Danke schon mal :)



Wie würdest du, dass hier den lösen?

Ich bin in php wirklich noch ziemlich frisch hinter den ohren^^ bin nur en praktikant un hab mich halt in den code bissel eingelesen...

Und bis dahin fand ich die lösung am einfachsten aber ich lass mich gern eines bessern beleeren :)
 
Wenn Du eine Umleitung per http-header machst, darf danach nichts mehr stehen. Also muss es bspw. so heißen:

PHP:
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.example.com/");
exit();
 
Hast du es mit meinem Beispiel? Gehen tut es damit auf jeden Fall.

Was ich Knallkopf nur verdreht habe sind die Sekunden für die Weiterleitung. Ich habe was von "90" gelesen und dachte die Weiterleitung soll erst nach 90 Sekunden stattfinden.

Mach also aus der 90 wieder die 5 die du hattest und füge den Code dann in die Seite ein.

Hier nochmal eine "komplette" Seite damit du besser siehst wo und wie du es einbauen musst:


PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>
	<title>Titel</title>

	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
	<meta name="description" content="" />
	<meta name="author" content="" />
	<meta name="keywords" content="" />

<?php
// Code um die Zeitspanne zu berechnen
$strtotime1 = strtotime ("now");
$strtotime2 = strtotime ("06.12.2010 16:21:00");
$result = ($strtotime1 - $strtotime2)/(3600*24);

if ($result >= 90 ) {

?>
	<meta http-equiv="refresh" content="5; URL=http://www.deine_seite.com">
<?php } ?>
<body>
<?php
if ($result >= 90) {
    echo "Die Änderung ihres Passwortes liegt länger als 90 Tage zurück. Sie werden in wenigen Sekunden automatisch weitergeleitet.\n";
} else {
?>
<h1>Hier kommt der ganze restliche HTML Code hin, der sonst so auf der Seite erscheinen soll.</h1>
<?php } ?>
</body>
</html>
 
Zurück