Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Umleitung funktioniert nicht ???“

K

kid_robot

Guest

hallo leute,

habe folgendes problem: ich habe in meiner page eine switch-funktion eingebunden, damit man dann die neuigkeiten lesen kann. das script sieht so aus:
Code:
<?php
switch($_REQUEST['go'])
{
  case anfang:
  include("../html/anfang.htm");
  break;
  
  default:
  echo "Keine News vorhanden";
  break;
}
?>

so, um nun die news auf der page zu sehen, muss man folgende adresse besuchen: http://www.domain.de/?go=anfang

das klappt auch!

nun möchte ich aber, dass wenn man die seite (www.domain.de) besucht, dass sie automatisch umgeleitet wird. dazu habe ich folgenden code zwischen <head> und </head> eingefügt:
Code:
<?php
header("Location: http://www.domain.de/?go=anfang");
?>

dieser befehl klappt sonst immer aber dieses mal irgendwie nicht?! beim aufruf der seite www.domain.de ersheint folgende fehlermeldung:

Fehler: Umleitungsfehler
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.


weiß vielleicht jemand, warum diese fehlermeldung kommt? was habe ich falsch gemacht?


danke im vorraus!
 

blackout

Schaf im Wolfspelz

der header ist der header und nicht der steht-im-html... also schreib ihn auch nicht ins html.
header-befehle müssen vor dem laden des dokuments gegeben werden, sonst sind sie sinnlos und verursachen nur fehler/warnungen. daher fängt dein dokument mit <?php header... ?> an und mit nix anderem (kein doctype, keine zeichensatzdeklaration, kein sonstwas), denn das kommt hinterher.
 

2ter_Heiko

Nicht mehr ganz neu hier

Nach dem Befehl:
Code:
<?php
header("Location: http://www.domain.de/?go=anfang");
?>
darf kein Code mehr ausgeführt werden, desshalb danach mit exit; beenden:
Code:
<?php
header("Location: http://www.example.com/"); /* Browser umleiten */
exit; /*Nachfolgenden Code beenden */
?>
 
K

kid_robot

Guest

hmz, habe es versucht. immer noch dasselbe problem.

der browser meint ja, dass die anfrage so umgeleitet wird, dass sie nie enden kann?!

heiko, der tipp von dir klappt leider auch nicht.

das komische ist ja, wenn ich nen link zu dem pfad (domain.de/?go=anfang) mache, dann klappt alles und es wird alles angezeigt, was angezeigt werden soll.

danke schon mal für die schnellen antworten!

das problem muss daran liegen, dass php diesen umleitungsbefehl nicht korrekt ausführen kann. und zwar weil in der pfadangabe "?go=news" steht. denn sonst klappt der umleitungsbefehl!


hilfe :(
 
K

kid_robot

Guest

also wenn ich den umleitungsbefehl weglasse, dann funktioniert dieser pfad, also wenn ich ihn manuell eingebe. aber mit dem umleitungsbefehl klappt es ja nicht mal, wenn man den pfad manuell eingibt!

:eek:
 

Wonderboy

Nicht mehr ganz neu hier

Das mit dem "exit;" ist sinnlos, weil nach der Umleitung eh nichts mehr darunter ausgeführt wird.
Du produzierst da eine Endlosschleife. Deswegen steht da ", dass sie nie beendet werden kann"...

Mal davon ausgegangen, dass du eine index.php als DirectoryIndex hast. wenn du also auf www.domain.de gehst wird automatisch die index.php geladen. In der index.php steht wiederum eine Anweisung, dass wie auf www.domain.de/?go=anfang umleiten soll, ergo auf www.domain.de/index.php?go=anfang
Das kann ja nie enden. Du musst also eine Schleife einbauen, die das verhindert.

Ich hoffe ich bin nicht zu müde und hab das richtig verstanden

[edit]Ich würd die Weiterleitung ganz weglassen und einfach
Code:
if(!isset($_GET['go'])) {
    $go = 'anfang';
}
else {
    $go = addslashes($_GET['go']);
}
nehmen
 

bLuTm8

Aktives Mitglied

mit deiner vereinfachung (nur der parameter aber nicht das dokument) verwirrst du deinen redirect.
raten kann der mit sicherheit nicht ...

also schreib es vollständig, dann findet der redirect auch was er sucht:

domain.de/index.cgi?go=anfang

oder was auch immer für ein dokument (php,shtml,asp...)
 
K

kid_robot

Guest

@ blutm8cht: ja, habe schon beides versucht, das ist anscheinend nicht der grund.

@ wonderboy: habe den befehl eingefügt, er ladet aber nur die übliche seite, also www.domain.de. habe aber die abfrage ein bisschen geändert und dann hat es geklappt!

hier das script:
Code:
<?php
if(!isset($_GET['go'])) {
	[b]header("Location: http://alectric.al.funpic.de/www.minkontrol.de/html/index.htm?go=anfang");[/b]
}
else {
	$go = addslashes($_GET['go']);
}
?>

also ich verstehe das script so: wenn die variable "go" nicht existiert, dann leitet er auf die angebene seite um. sonst fügt er ein slash-zeichen und "?go=anfang" in dem pfad ein.

so richtig verstehen tue ich das nicht. ich denke mal, dass er den else-teil ausführt, oder? und auch wenn er den else-teil ausführt, woher weiß das programm, dass in dem pfad "?go=anfanfg" angefügt werden muss? da steht doch nichts von "anfang"! in dem switch-teil habe ich nur einen "case", kann es deswegen sein?

ich möchte nicht nur, dass es funktionert, sondern ich will es verstehen. wäre echt dankbar für weitere hilfe.

danke schonmal an alle, danke danke :)
 

bLuTm8

Aktives Mitglied

eigentlich müsstest du es sogar ganz anders machen (hab auch eine stunde darüber gebrütet und recherchiert)


der headerredirect "kann" nur auf eine andere domain umleiten (oder ein verzeichnis), aber NICHT parameter auswerten.

das kann nur serverseitig geschehen.



also du leitest wie gehabt um und serverseitig muss die indexseite den parameter auslesen (HTTP_GET), auswerten und daraufhin entsprechend agieren (zb sich selbst aufrufen mit angehängtem parameter)



zumindest hab ich das beim nachlesen so verstanden
 
K

kid_robot

Guest

also wie gesagt, das script funktioniert nun bei mir. eine erläuterung dazu reicht mir :)
 

bLuTm8

Aktives Mitglied

na in etwa so:


1) du rufst die seite wie gehabt mit parameter (?go=..) auf
2) index.htm:
[php:1:43425c675e]
<html>
<head>
...
</head>
<body>
<?php
$para = isset($_GET['go']) ? $_GET['go'] : '';
if ($para != '') {
header("Location: index.htm?go=$para");
exit;
} else {
?>

der default-html-content parameter

<?php
}
?>

</body>
</html>
[/php:1:43425c675e]





PS: ups das gibt ne recursive endlosschleife :oops:

also direkt an die stelle der go-parameter-auswertung springen
 

Wonderboy

Nicht mehr ganz neu hier

@kid_robot:
Das script was ich oben gepostet habe kommt ohne Weiterleitung aus. Ich bin mal davon ausgegangen, dass es dir nicht darauf ankommt, dass das ?go=anfang im der Addressleiste erscheint. Wenn doch, musst du das wirklich mit der Umleitung machen.

Wenn nicht ist mein codeschnipsel wohl eine bessere Lösung. Zur Erläuterung:
Wenn die Variable $_GET['go'] nicht gesetzt ist wird der Variable $go der Wert "anfang" zugewiesen. Wenn die Variable $_GET['go'] jedoch einen Wert hat bekommt ihn die Variable $go übergeben (die Funktion addslashes() lass ich mal weg).
Dazu ist noch zu sagen, dass die Variablen $_GET['go'] und $go nichts miteinander zu tun haben (wenn register_globals(?) in der php.ini 0 hat, eigentlich standart). Es ist meistens besser Übergabevariablen, egal ob per POST oder GET sofort zu verarbeiten. Das macht in den meisten Fällen das spätere Arbeiten einfacher und sicherer.
Gibt sicher noch elegantere Wege, aber damit fährst du schon gut und sicher :)

[edit]du musst dann im Rest vom Script natürlich dein $_REQUEST['go'] durch $go ersetzen.
 
K

kid_robot

Guest

ui, danke für die ausführlichen antoworten, echt nett von euch! hat mir echt sehr weitergeholfen!

FETTES THX
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.189
Beiträge
2.582.075
Mitglieder
67.259
Neuestes Mitglied
SaschMasch1312
Oben