Textfelder mit PHP übergeben
Andreass
- php
Hallo,
ich habe eine grundsäzliche Frage, die ich jetzt ohne Hilfe nicht hinbekomme.
Ich habe auf einer Seite, nennen wir die Seite a.php. In dieser Seite sind zwei Textfelder mit unterschiedlichen Namen und ein Button.
Nun habe ich eine andere Seite, nennen wir die Seite b.php. Auf der Seite b.php sind auch zwei Felder und ein Button.
Auf Seite b.php ist ein Skript der eine MySQL Abfrage durchführt.
So eigentlich war es so vorgesehen, dass man direkt auf Seite b.php geht und dort die zwei Felder ausfüllt und dann auf dem Button drückt und damit wird dann auch die MySQL Abfrage durchgeführt. Ich will Euch nicht auf die Folter spannen. Es ist sowas wie ein Warenabfrage. Man kann damit gucken ob einige Waren auf Lager sind oder nicht.
Da sich einige darüber beschwert haben, dass man sich zur Seite durchzuklicken muss, habe ich die zwei Texfelder und den Button direkt auf meine Startseite a.php integriert. Nun will ich aber nicht die Seite b.php "zerstören" und den ganzen Code, der auf der Seite ist auf meine Startseite einfügen. Es ist wirklich sehr lang und würde nicht mehr durchschaubar werden.
Nun ist meine Frage, wie ich es hinbekomme.
Ich habe zwar sowas auf der Seite a.php versucht, hilft ja nicht wirklich weiter:
<form action="b.php?Textfeld1=<?PHP $_POST[Textfeld1ausaphp] ?>&Textfeld2=<?PHP $_POST[Textfeld2ausaphp] ?>&" action="GET">
Es wird zwar auf der Seite b.php in der Adresszeile die Sachen angezeigt was man in den Textfeldern aus Seite a.php eingegeben hat.
Aber genau daran sitze ich schon ein Tag, die Textfelder bleiben leer und der Skript auf der Seite b.php wird nicht ausgeführt.
Achso, habe ich vergessen zu erwähnen. In Textfeld1 steht immer der Artikelname. In Textfeld2 steht ein "Kundenpasswort", weil ich nicht will, dass jeder meine Artikel durchstöbert.
Und da habe ich auch ein Problem:
Auf Seite b.php wo auch das skript ist, wird der Passwort "verschlüsselt" also mit md5 "übertragen". Ich habe zwar auf der seite a.php sowas wie
$password=md5($_POST['Textfeld2']);
stehen, aber trotzdem wird auf seite b.php das passwort "unverschlüsselt" übertragen.
Daher meine zwei sorgen nochmal kurz:
1. Textfelder beleiben leer auf Seite b.php
2. Passwort wird nicht verschlüsselt übertragen
Vielen Dank.
Andreass
Lieber Andreass,
warum schreibst Du denn den ganzen Logik-Kram nicht in eine Datei inc.php, in der die ganzen Funktionalitäten in functions abgelegt sind, und die Du bequem sowohl auf a.php, als auch auf b.php inkludieren kannst? Das erhöht die Übersichtlichkeit in a.php und b.php und erleichtert das Korrigieren und Pflegen des Programmcodes.
Dazu wäre es höchst sinnvoll, HTML-Ausgabe und PHP-Programmlogik voneinander zu trennen. Stichwort: Templates. Erstelle HTML-Dateien, die Du als Vorlagen benutzt. Suche einmal hier im Archiv nach "Affenformular" und mir als Autor...
<form action="b.php?Textfeld1=<?PHP $_POST[Textfeld1ausaphp] ?>&Textfeld2=<?PHP $_POST[Textfeld2ausaphp] ?>&" action="GET">
Das ist kollosal fehlerträchtig! $variable
ist etwas völlig anderes als index
(ohne Dollarzeichen). Ersteres ist eine Variable (na, welche Überraschung!), zweiteres ist eine Konstante (ohne Dollarzeichen). Daher ist $variable[index]
in Deinem Fall falsch! Du meintest "index"
(als String)! Beachte auch das Fehler-Log Deines Testservers!!
- Textfelder beleiben leer auf Seite b.php
Dann trägst Du die dort erforderlichen Werte nicht ein.
- Passwort wird nicht verschlüsselt übertragen
Usereingaben werden immer im Klartext übertragen, es sei denn, Du verwendest nicht http, sondern das verschlüsselte https. Und wo ist jetzt Dein Problem?
Liebe Grüße,
Felix Riesterer.
echo $begrüßung;
Ich habe zwar sowas auf der Seite a.php versucht, hilft ja nicht wirklich weiter:
<form action="b.php?Textfeld1=<?PHP $_POST[Textfeld1ausaphp] ?>&Textfeld2=<?PHP $_POST[Textfeld2ausaphp] ?>&" action="GET">
Normalerweise gibt man im action nur das Ziel an und der Browser kümmert sich darum, die Werte der Formularelemente an das Ziel zu schicken. Man braucht dabei auf der Formularseite keinen verarbeitenden Code. Und method heißt method, nicht noch einmal action.
Es wird zwar auf der Seite b.php in der Adresszeile die Sachen angezeigt was man in den Textfeldern aus Seite a.php eingegeben hat.
Ja, und PHP stellt dir die Werte wie üblich in $_GET zur Verfügung.
Aber genau daran sitze ich schon ein Tag, die Textfelder bleiben leer und der Skript auf der Seite b.php wird nicht ausgeführt.
Dann machst du garantiert was falsch. Was es ist, weiß ich nicht, ich seh das ja nicht.
Auf Seite b.php wo auch das skript ist, wird der Passwort "verschlüsselt" also mit md5 "übertragen". Ich habe zwar auf der seite a.php sowas wie
$password=md5($_POST['Textfeld2']);
stehen, aber trotzdem wird auf seite b.php das passwort "unverschlüsselt" übertragen.
Dann müsstest du bereits auf a.php ein Affenformular machen, was erst einmal die Eingaben entgegennimmt, den MD5-Wert bildet und dann erst auf b.php weiterleitet. Besser fände ich, solche Informationen per POST zu versenden, wenn sie nicht in der URL auftauchen sollen. Dann kann a.php das Formular auch gleich an b.php schicken, ohne dass es noch was arbeiten muss.
echo "$verabschiedung $name";