POST und GET funktioniert nicht
Marcel
- php
Hallo,
Ich hab ein Formular und ein Php-skript erstellt.
Das Formular sendet die Daten mit der POST-Methode an die Php-datei.
index.html
...
form action="test.php" method="POST">
Name: <input type="text" name="test" /><br />
<input type="submit" value="senden"/>
</form>
...
test.php
<?php
$test = $_POST['test'];
echo $test;
?>
Wenn ich einen Text eingebe auf den Submit-Button klicke, öffnet
sich nur eine leere Seite!!!
Weiß jemand wieso das nicht funktioniert???
Die Version von PHP ist 5.2.5
Hello,
Ich hab ein Formular und ein Php-skript erstellt.
Das Formular sendet die Daten mit der POST-Methode an die Php-datei.index.html
...
<form action="test.php" method="POST">
Name: <input type="text" name="test" /><br />
<input type="submit" value="senden" />
</form>
test.php
<?php
echo htmlspecialchars($_POST['test']);
?>
Wenn ich einen Text eingebe auf den Submit-Button klicke, öffnet
sich nur eine leere Seite!!!Weiß jemand wieso das nicht funktioniert???
Da fehlte eine öffnende spitze Klammer beim <form>
Da fehlte ein Leerzeichen hinter "senden"
Da fehlte die passende Kodierung für den HTML-Kontext
Da war eine Variablenkope zuviel
Eventuell fehlt noch eine Behandlung bezüglich Magic Quotes
Hast Du denn als Document-Type auch XHTML gewählt?
Harzliche Grüße aus
Sankt Andreasberg
und Guten Rutsch
Tom
Ich würde eher fragen ob sein Apache/PHP beim start Fehler ausgibt.
ZWar fielen mir die Fehler mit der Spitzklammer auch auf, aber ohne die Klammer hätte er das ding sowieso nicht absenden können von daher ist es irrelevant für die Lösung und war wohl nur ein versehen.
grüsse
Hello,
Ich würde eher fragen ob sein Apache/PHP beim start Fehler ausgibt.
Da stimme ich Dir vollkommen zu.
Wenn error_reporting nicht passt und display_errors auf sonstwas steht, dann kommt nur eine weiße Seite, wenn ein PHP-Fehler aufgetreten ist.
Wir haben außerdem gar nicht gefragt, ob Marcel überhaupt den Quelltext der Response angeschaut hat, oder nur das vermeintlich gerenderte Bild im Browser...
Harzliche Grüße aus
Sankt Andreasberg
und Guten Rutsch
Tom
»» »» Ich würde eher fragen ob sein Apache/PHP beim start Fehler
ausgibt.
PHP gibt bei mir keine Fehler aus.
Im Quelltext steht nur der HTML Text und nicht der Text, den PHP
ausgeben soll.
Hello,
»» »» Ich würde eher fragen ob sein Apache/PHP beim start Fehler
ausgibt.PHP gibt bei mir keine Fehler aus.
Im Quelltext steht nur der HTML Text und nicht der Text, den PHP
ausgeben soll.
Es ist doch schon mal ein Erfolg, wenn der PHP-Code nicht mehr im ausgelieferten Quellcode steht...
Harzliche Grüße aus
Sankt Andreasberg
und Guten Rutsch
Tom
Es ist doch schon mal ein Erfolg, wenn der PHP-Code nicht mehr im ausgelieferten Quellcode steht...
Nein, der Test der mit "echo htmlspecialchars($_POST['test']);"
ausgegeben werden soll steht nicht im Quelltext!!!!
Das der PHP-Code nicht im Quelltext steht ist klar!!
echo $begrüßung;
Es ist doch schon mal ein Erfolg, wenn der PHP-Code nicht mehr im ausgelieferten Quellcode steht...
Nein, der Test der mit "echo htmlspecialchars($_POST['test']);"
ausgegeben werden soll steht nicht im Quelltext!!!!
Das der PHP-Code nicht im Quelltext steht ist klar!!
Wenn das für dich klar ist, dann ist das ja schön und gut. Warum sollte es aber für andere klar sein, die keinen Einblick in deinen Server haben?
Fang doch mal mit einfachen Dingen an. Gib einen Text aus, der fest im PHP-Code steht:
echo "ein Text";
Was auch immer klappen sollte, und was dir nebenbei noch wertvolle Informationen zur Konfiguration PHPs ausgibt, ist ein
phpinfo();
Dort siehst du (ziemlich weit unten) unter anderen die Werte, die dir durch ein Formular zur Verfügung stehen. Ansonsten gehört es zu den Grundlagen jeder Fehlersuche, sich Kontrollausgaben der beteiligten Werte zu machen. Ein echo reicht für einfache Fälle, doch genauer gibt dir die Funktion var_dump() einen Wert aus. Während ein echo manchmal gar keine Ausgabe erzeugt, was bei null, false oder einem Leerstring der Fall ist, siehst du mit var_dump() immer etwas, da es dir auch den Typ eines Wertes ausgibt. Und immer auch in die Quelltext-Ansicht schauen, denn manchmal unterdrückt der Browser eine Ausgabe, wenn diese wie ein HTML-Tag aussieht.
Wenn du dir nun die Ausgabe von phpinfo() anschaust, so du eine bekommst, prüfe bitte die Werte für display_errors und error_reporting. Das error_reporting sollte beim Entwickeln immer auf E_ALL stehen, damit dir nicht die Hinweise auf Lesezugriffe auf nicht existierende Variablen verschwiegen werden. Durch diese Meldungen offenbaren sich neben Tippfehlern auch Hinweise auf mögliche Angriffsstellen unter Ausnutzung des Features register_globals.
Das PHP-Handbuch hat in seinem Anhang eine Liste aller Konfigurationsdirektiven nebst Verweis auf einen Erläuterungstext. Dort kannst du die eben erwähnten Direktiven finden und dich über sie informieren.
Es wurde ja schon erwähnt, dass ein
$variable = $_POST['variable'];
überflüssig ist. Solche Konstrukte sieht man leider zu Hauf in allerlei Scripten. Der gewünschte Wert steht bereits in $_POST['variable']. Er muss nicht "abgeholt" werden, das hat PHP schon vor dem Script-Start getan und ihn dort bereitgestellt. $variable lässt sich vielleicht im weiteren Verlauf einfacher tippen als $_POST['variable'], doch andererseits sieht ein $variable auch weniger gefährlich aus als ein $_POST['variable']. Wenn du das mit dem Formular zum Laufen bekommen hast, lass doch mal die Funktion htmlspecialchars() weg und gib in das Formular-Eingabefeld ein
<script>alert(42)</script>
ein. Schau dir auch den HTML-Quelltext an. Dann wiederhol den Versuch mit htmlspecialchars(), so wie es Tom notiert hat. Nun dürftest du gesehen haben, was diese Funktion macht, und hoffentlich auch erkannt haben, dass es wichtig ist, sie für alle Ausgaben von Werten in Richtung HTML zu verwenden, besonders jedoch für die Werte, die der Benutzer eingegeben hat, und dass man deswegen diese Benutzereingaben nicht durch Umkopieren in einfache Variablen verschleiern sollte.
Das was für HTML und htmlspecialchars() im Speziellen gilt, lässt sich zu einem Lehrsatz verallgemeinern:
Ausgaben müssen stets und ohne Ausnahme für den jeweiligen Ausgabekontext behandelt werden.
Die häufigsten Kontexte im Webumfeld und darauf spezialisierte Funktionen sind:
Außerdem ist es noch wichtig, das Feature Magic Quotes zu kennen. Auf der verlinkten Seite ist beschrieben, was es macht, wofür es gedacht ist, aber auch was es für Nachteile mit sich bringt, und wie man es deaktivieren kann. Nachdem du den Ausgabewerte-gemäß-Kontext-behandeln-Lehrsatz kennengelernt hast, und ihn hoffentlich überall berücksichtigst, brauchst du dieses Feature nicht mehr.
So, das war das Äquivalent zum Stewardessenballett im Flugzeug. Und nun viel Erfolg bei deinem Einstieg in die PHP-Programmierung.
echo "$verabschiedung $name";
Danke
Der echo Befehl funktioniert, aber $_POST('test'); hat keinen Wert.
var_dump($_POST['test']); gibt NULL aus!!
Noch eine Frage:
Soll ich die php.ini-dist oder php.ini-recommended verwenden?
Im Internet steht, dass man php.ini-dist verwenden soll, aber
da bei mir die POST (und GET) Methode nicht funktioniert,
kann es vieleicht daran liegen, dass ich die php.ini-recommended
verwenden muss???
echo $begrüßung;
Soll ich die php.ini-dist oder php.ini-recommended verwenden?
Im Internet steht, dass man php.ini-dist verwenden soll,
Das glaube ich nicht, denn wenn sich bisher kein Hinweis darauf findet, dass die reccommended empfohlen ist, dann kommt er nun mit meinem Posting. Die dist hat teilweise noch veraltete Einstellungen, die aber für schlampig programmierte Anwendungen benötigt werden (wobei es besser wäre, auf deren Verwendung zu verzichten oder sie umzuprogrammieren). Die recommended ist auf alle Fälle die zukunftssichere. Wenn deine Anwendung mit der läuft, dann läuft sie im Prinzip auf jeder Konfiguration problemlos. Schau dir die Unterschiede am Anfang der recommended im Abschnitt "About this file" an.
da bei mir die POST (und GET) Methode nicht funktioniert,
kann es vieleicht daran liegen, dass ich die php.ini-recommended
verwenden muss???
Weder die eine noch die andere haben einen Einfluss auf deinen Fehler. Du greifst auf $_POST zu, das in jedem Fall funktionieren muss. Der Fehler ist garantiert an anderer Stelle zu finden.
echo "$verabschiedung $name";
echo $begrüßung;
Soll ich die php.ini-dist oder php.ini-recommended verwenden?
Im Internet steht, dass man php.ini-dist verwenden soll,Das glaube ich nicht, denn wenn sich bisher kein Hinweis darauf findet, dass die reccommended empfohlen ist, dann kommt er nun mit meinem Posting. Die dist hat teilweise noch veraltete Einstellungen, die aber für schlampig programmierte Anwendungen benötigt werden (wobei es besser wäre, auf deren Verwendung zu verzichten oder sie umzuprogrammieren). Die recommended ist auf alle Fälle die zukunftssichere. Wenn deine Anwendung mit der läuft, dann läuft sie im Prinzip auf jeder Konfiguration problemlos. Schau dir die Unterschiede am Anfang der recommended im Abschnitt "About this file" an.
da bei mir die POST (und GET) Methode nicht funktioniert,
kann es vieleicht daran liegen, dass ich die php.ini-recommended
verwenden muss???Weder die eine noch die andere haben einen Einfluss auf deinen Fehler. Du greifst auf $_POST zu, das in jedem Fall funktionieren muss. Der Fehler ist garantiert an anderer Stelle zu finden.
echo "$verabschiedung $name";
Mit PHP 4.4.7 funktioniert $_POST, $_GET und phpinfo() ;-)
Hello,
Weder die eine noch die andere haben einen Einfluss auf deinen Fehler. Du greifst auf $_POST zu, das in jedem Fall funktionieren muss. Der Fehler ist garantiert an anderer Stelle zu finden.
Vielleicht ist POST generell verboten? Soll es ja geben, dass jemand an der Einstellung manipuliert hat. Aber kann man das mit GET auch machen? Dann könnte doch gar keine Ressource mehr ausgeliefert werden.
Harzliche Grüße aus
Sankt Andreasberg
und Guten Rutsch
Tom
echo $begrüßung;
Der echo Befehl funktioniert, aber $_POST('test'); hat keinen Wert.
Bitte achte auf die richtigen Klammertypen. Für Zugriffe auf Array-Elemente verwendet man [], was du ja im folgenden Beispiel richtig machst.
var_dump($_POST['test']); gibt NULL aus!!
Verwende nicht so viele Satzzeichen (!!) sondern deinen Verstand. Versuche dann bitte sämtliche Hinweise in meinem vorigen Posting nachzuvollziehen, besonders den vom error_reporting, und den vom phpinfo(). Außerdem kann man nicht nur Array-Elemente sondern auch das komplette Array zur Kontrolle ausgeben lassen: var_dump($_POST). Für Arrays gibt es außerdem noch print_r(), das eine etwas übersichtlichere Ausgabe erzeugt, dafür jedoch nicht so präzise wie var_dump() ist. In beiden Fälle empfiehlt es sich, vorher ein <pre> auszugeben, oder in die HTML-Quelltext-Ansicht zu schauen.
Wenn du weder mit phpinfo() noch mit der Ausgabe von $_POST deine Eingabe findest, dann läuft etwas anderes verkehrt.
echo "$verabschiedung $name";
Hi,
»» »» Ich würde eher fragen ob sein Apache/PHP beim start Fehler
ausgibt.PHP gibt bei mir keine Fehler aus.
Es waere evtl. einfacher, dir weiterzuhelfen, wenn du explizit sagen wuerdest, dass du die Hinweise bzgl. error_reporting und display_errors auch zur Kenntnis genommen und deren Werte kontrolliert hast ...
MfG ChrisB
Hi Tom,
sollte so auf jedenfall funktionieren :-)
<html>
<head>
</head>
<body>
<form action="test.php" method="POST">
<input type="text" name="test">
<input type="submit" value="senden">
</form>
</body>
</html>
<?php
$test = $_POST['test'];
echo $test;
?>
Gruß Patti