[PHP] Variablen ohne Formular übergeben ...
-
Hallo zusammen,
das Folgende soll ein Login-Script werden:
<?php session_start(); include('var_inc.php'); if ((!isset($partnerID)) OR (!isset($password)) OR (!isset($userID))) { header("Location:".$alternative); } $conn = mysql_connect($dbserver,$dbuser,$dbpass); if (!$conn) { die ("Connection to DB failed!"); } mysql_select_db($dbname,$conn); $query = "SELECT PASSWORD FROM USER WHERE USERID = '".$userID."'"; $result = mysql_query($query,$conn); $result = mysql_fetch_array($result,MYSQL_ASSOC); mysql_close($conn); // Falls die Eingegebenen IDs nicht zu einem gültigen User führen ... if (!$result) { // Hier noch eine Fehlermeldung mitgeben ... header("Location:".$alternative); } else { // Ansonsten ... $passwd = $result["PASSWORD"]; if ($passwd <> $password) { // Hier noch eine Fehlermeldung mitgeben ... header("Location:".$alternative); } else { session_register('userID'); header ("Location:".$site); } } ?>
Ich würde gerne an den mit "// Hier noch eine Fehlermeldung mitgeben ..." markierten Stellen eine Variable mit einer Fehlermeldung versehen, so dass im Fehlerfall die Alternativseite $alternative diese Meldung darstellen kann. Geht das überhaupt und wenn ja, wie?
Danke!
-
hmm wie wärs an die location anhängen?
also ich machs so:
header("location: test.php?variablenname=hieristderanhang");
wenn du einen string anhängst, musst du urldecoden...
ansonsten kannst du eine zahl und danach eben auswählen...
weitere variablen mit & verknüpfung anhängen
im nächsten script einfach variablenname als globale runterholen und dann mit
$variablenname verwenden...
-
Erst mal danke doch wenn man dies so macht, dann sieht man ja die Meldung in der Adressleiste ... das würde ich gerne unterbinden.
-
Warum denn ?
Ich mein die Fehlermeldung wird eh ausgegeben, dadurch hast du ja keine Nachteile ausser dasn jemand den URL String manipulieren kann und sich dann selbst eine eigene Fehelrmeldung generiert Das ist wie der iframe trick mit der eingenen Festplatte, nur ein wenig difiziler
-
-
@Joel: Sieht einfach unprofessionell aus ... gibt es wirklich keine Möglichkeit das hinzubekommen?
-
Vielleicht lässt sich mit Cookies was machen ...
-
cengis: mach' es wie gestern besprochen über zahlen, dann hastdu keine strings im query
mady: ich habe cookies immer deaktiviert... ich mag sie nicht.. ist geschmackssache, aber ich finde sie nervig ...
-
@cengis oder stell dein design einfach um und lade an der stelle eine fehlerseite ein mit exit; damit der folgecode nicht ausgeführt wird.
so mach ich es immer.
dann musst du eben alles in eine seite tun und nicht weiterschicken zu verschiedenen, ist sowieso designhübscher und platzsparender..
die einzuladene fehlerseite kannst du dann als eine art template produzieren, in ne funktion packen und mit verschiedenen meldungen und gleichem outfit nutzen.
superhübsch
-
Hallo,
Du hast doch eh mit session_start() eine Session aufgemacht. Je nach Serverkonfig setzt die Funktion ein Cookie oder aber stellt Dir zumindest eine eindeutige Session-ID zur Verfügung. Du kannst "in" einer Session auch Werte speichern. Die werden dann auf dem Server zu der generierten Session-ID gespeichert.
Je nach Serverkonfiguration gibt es da unterschiedliche Möglichkeiten.
Schau einfach mal in die PHP-Online-Doku. Dort ist das relativ gut beschreiben. Statt dem "Counter"-Beispiel kannst Du IMHO auch Arrays da reinsetzen. Somit kannst Du dann beliebig viele Fehlermeldungen hinterlegen und muß bei deinem Location-Header nur die Session-ID dranhängen. Wenn Du die Session über Cookies verwaltest, könntest Du Dir das auch noch ersparen, aber somit hättest Du zumindest schon 2 User aus dieser Diskusion von der Nuztzung ausgeschlossen. Ich mag die Kekse nämlich auch nicht so gerne.
Frank