phpbar.de logo

Mailinglisten-Archive

[php] URL mitsamt Parameter ermitteln

[php] URL mitsamt Parameter ermitteln

Tobias Krais krais at bats.ch
Die Sep 21 07:44:10 CEST 2004


Hi Nico,

> > Aber es folgt schon das nächste Problem: ich habe 3 files: index.php,
> > login.php und logout.php (Code das letzten beiden unten). In letzeren 2
> > Files steht dann:
> > header("Location:". $_SERVER[REQUEST_URI]);
> > was dann natürlich die Folge hat, dass das login.php file aufgerufen
> > wird. Also sollte ich die login.php und das logout.php in die index.php
> > integrieren. Das mache ich mit einem if(login = "yes") oder eben
> > if(logout = yes). Dann sagt er aber immer redirectionlimit for URL is
> > exceeded...

Ich habe das Problem jetzt anders gelöst: ich übergebe die benötigten
Variablen einfach an login.php und logout.php. So komme ich immer wieder
zu genau dem Datensatz zurück, von dem aus ich mich eingeloggt habe.

Danke für deine Hilfe!

Grüssle, Tobias

> 
> Dein Problem: Du rufst die login.php immer mit sich selbst auf. Was du willst: login.php schickt zur *vorherigen* Seite zurück. Du musst also eine zusätzliche Variable einbauen, die im *Loginformular* mit $_SERVER['Request_URI'] gefüllt ist (man bedenke auch die Anführungszeichen um Request_URI...). Diese Variable musst du dann anstelle von $_SERVER['Request_URI'] in der login.php benutzen. Derzeit rufst du login.php auf und sagst: Geh zu der Seite, deren Adresse $_SERVER['Request_URI'] ist. In $_SERVER['Request_URI'] steht immer die Adresse der *aktuellen* Seite. Schlussfolgerung: Du rufst immer wieder das Loginscript auf. Und nochmal. Und nochmal. Und nochmal... Die Schleife ergibt sich wahrscheinlich hier:
> 
> > $sql = "SELECT ".
> >     "Id, Nickname, Nachname, Vorname ".
> >   "FROM ".
> >     "benutzerdaten ".
> >   "WHERE ".
> >     "(Nickname like '".$_REQUEST["name"]."') AND ".
> >     "(Kennwort = '". ($_REQUEST["pwd"])."')";
> > $result = mysql_query ($sql);
> >
> > if (mysql_num_rows ($result) > 0)
> > {
> >   // Benutzerdaten in ein Array auslesen.
> >   $data = mysql_fetch_array ($result);
> >
> >   // Sessionvariablen erstellen und registrieren
> >   $_SESSION["user_id"] = $data["Id"];
> >   $_SESSION["user_nickname"] = $data["Nickname"];
> >   $_SESSION["user_nachname"] = $data["Nachname"];
> >   $_SESSION["user_vorname"] = $data["Vorname"];
> >
> >   header ("Location:". $_SERVER['REQUEST_URI']);
> > }
> > else
> > {
> >   header ("Location:". $_SERVER['REQUEST_URI'] . "&fehler=1");
> > }
> 
> Lass mich raten: Du übergibst die Variablen per Post, hast in $_SERVER['Request_URI'] dadurch ausschließlich http://server.example/login.php stehen. Nach dem Setzen der Session geht das auch gut, aber dann passiert folgendes: http://server.example/login.php wird aufgerufen, $_REQUEST['name'] steht nicht zur Verfügung (woher auch?), es erfolgt die Weiterleitung auf http://server.example/login.php&fehler=1. Hier auch: $_REQUEST['name'] nicht verfügbar, Weiterleitung auf http://server.example/login.php&fehler=1&fehler=1 usw.
> BTW: Ersetze $_REQUEST soweit das geht durch einen besseren Variablennamen, also $_GET für GET-Formulare oder POST, wenns ein POST-Formular ist.
> BTW²: WHERE ( Nickname like '" . $REQUEST['name'] . "' ) macht keinen Sinn, da du keine Suchmuster benutzt. Nimm einen einfachen Zeichenkettenvergleich, der läuft auch ohne Berücksichtigung von Groß- und Kleinschreibung ab.
> mfg
> Nico
> 
> -- 
> www.buchtips.net - Rezensionen online
-- 
Tobias Krais
IT-Administration Zentrum BATS
Tel +41-(0)61-6909-319
Fax +41-(0)61-6909-315
Infos zu Technikfolgen im Bereich Bio- und Gentechnik: http://www.bats.ch


php::bar PHP Wiki   -   Listenarchive