Übergabe von Parametern an eine PHP-Datei
Enrico
- php
0 Viennamade0 Enrico0 Viennamade0 Enrico
Hallo "Nachtschichtler",
Ich bin echt kurz vor'm Verzweifeln, weil bei mir die Übergabe von Parametern an eine andere Datei nicht funktioniert.
Ich habe in der Datei "PHP.GaestebuchEintraegeLesen.php" pro ausgegebenem Eintrag einen Textlink "Gästebuch verwalten", der standardgemäss die Seite "PHP.GaestebuchAdministration.php" mit der Parameterkette "Aktion=Anmelden&FormularGesendet=0" aufruft:
<a href="PHP.GaestebuchAdministration.php?Aktion=Anmelden&FormularGesendet=0">Gästebuch verwalten</a>
Da es sich bei der Ausgabe der Einträge um kein Formular handelt, habe ich auch kein einleitendes <form>-Tag angegeben.
Die Datei "PHP.GaestebuchAdministration.php" fragt nun die übergebenen Parameter ab:
<?php
include ("PHP.FunktionenGaestebuch.php");
switch ($HTTP_POST_VARS ["Aktion"])
{
case "Anmelden":
{
if ($HTTP_POST_VARS ["FormularGesendet"] == 0)
AnmeldeformularAnzeigen ();
else
if (($HTTP_POST_VARS ["Kennung"] == "") && ($HTTP_POST_VARS ["Passwort"] == ""))
FormularLeer ();
else
if (($HTTP_POST_VARS ["Kennung"] == "") || ($HTTP_POST_VARS ["Passwort"] == ""))
FormularUnvollständig ();
else
if (($HTTP_POST_VARS ["Kennung"] != "...") || ($HTTP_POST_VARS ["Passwort"] != "..."))
AnmeldungFehlerhaft ();
else
AnmeldungErfolgreich ();
break;
}
... weitere Unterscheidungen ...
}
?>
Die includierte Datei "PHP.FunktionenGaestebuch.php" sorgt lediglich für die entsprechenden Bildschirmausgaben.
Warum werden die Aktionen nicht ausgeführt ?
Ich hatte vorher "$_POST" anstelle von "$HTTP_POST_VARS" verwendet, hat aber ebenfalls nicht funktioniert.
Ich versuche mich mittlerweile schon geschlagene 2 Stunden an der Lösung des Problemes, habe schon einige Seiten nachgeschlagen, ob ich vielleicht die Verbindung der zwei Parameter falsch gemacht habe, habe es auch schon mit der Übergabe nur eines Parameters versucht, aber alles erfolglos.
Vielen Dank für Eure Hilfe.
Gruss, Enrico
Hallo!
Ich hatte vorher "$_POST" anstelle von "$HTTP_POST_VARS" verwendet, hat aber ebenfalls nicht funktioniert.
Es ist besser $_POST zu verwenden, einerseits aus Sicherheitsgründen, andererseits werden künftige PHP-Versionen HTTP_POST_VARS nicht unterstützen.
$_POST nimmt aber nur Werte auf, die mit der post-Methode aus einem Formular übergeben wurden. Dein Script kann also nicht funktionieren. Denn Du übergibst einen Querystring.
Beste Grüße
Viennamade
Hallo Viennamade,
Danke für Deine Antwort. Hätte nicht gedacht, dass um diese Zeit noch jemand auf sei :o)
So, habe nun wieder "$_POST" anstatt "$HTTP_POST_VARS" eingesetzt und - auf Dein Stichwort "Querystring" hin (perfektes Stichwort !!!) - im Netz geforscht und folgende Anleitung gefunden:
<?php
$string = "wert1=zahl&wert2=wort";
parse_str ($string);
echo $wert1;
echo $wert2;
?>
Hab dies auch gleich ausprobiert und musste festellen, dass es für dieses Beispiel funktioniert, bei meiner Homepage aber leider noch immer nicht:
switch (parse_str ($_POST ["Aktion"]))
{
case "Anmelden":
{
if (parse_str ($_POST ["FormularGesendet"] == 0))
AnmeldeformularAnzeigen ();
else
if (parse_str (($_POST ["Kennung"] == "") && ($_POST ["Passwort"] == "")))
FormularLeer ();
else
if (parse_str (($_POST ["Kennung"] == "") || ($_POST ["Passwort"] == "")))
FormularUnvollständig ();
else
if (parse_str (($_POST ["Kennung"] != "...") || ($_POST ["Passwort"] != "...")))
AnmeldungFehlerhaft ();
else
AnmeldungErfolgreich ();
break;
}
... weitere Unterscheidungen ...
}
Ich weiss einfach nicht, wo der Fehler liegt, zumal ich jetzt, hoff ich zumindest :o) keine Fehler mehr haben dürfte.
Gruss, Enrico
Hallo!
Danke für Deine Antwort. Hätte nicht gedacht, dass um diese Zeit noch jemand auf sei :o)
So, habe nun wieder "$_POST" anstatt "$HTTP_POST_VARS" eingesetzt und - auf Dein Stichwort "Querystring" hin (perfektes Stichwort !!!) - im Netz geforscht und folgende Anleitung gefunden:
Gut, aber wie vorhin geschrieben; Du wirst in $_POST nur Variable aus Formularen finden.
Lies http://informatik.asn-graz.ac.at/quakephp/get.html, dort steht was Du brauchst.
Beste Grüße
Viennamade
Nochmals Hallo,
Hab nun alles umgeschmissen und das Problem mit versteckten Eingabefeldern lösen können... :-)
Trotzdem nochmal vielen Dank.
Gruss, Enrico