Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

$_post - Anfängerfragen....

Hallo,

ich versuche gerade mich in php reinzufinden, hab nun leider gleich mal ein Problem:


Das Ding kommt bei folgender Seite bei (!isset($_POST['submit'])) immer wieder zum Schluß, daß nix in $_POST['submit']
drin sei und gibt mir "nixdrin" aus.

<form action="<?php echo basename($PHP_SELF) ?>" method="post">
...//textfields usw...
<input type="submit" name="submit" value="Login" class="button">
</form>
<?php>
if(!isset($_POST['submit']))
{echo 'nixdrin'}
else
{echo 'Was din'}
?>

Könnte das evtl. an Einstellungen in der php.ini liegen?
Falls es an register_globals = Off liegen könnte, das isses nich, das steht auf on, aber wer weiß, vl. hab ich das ja falsch verstanden...

Ich hoffe mal, daß ihr weiterhelfen könnt.


Vielen Dank denn mal,

Thorsten

Hier gehts zum Orginal Eintrag "$_post - Anfängerfragen...." im Forum

Antworten

Hast du das Formular schon einmal abgeschickt?

Sonst versuch mal folgendes:
Code:                   In Zwischenablage kopieren (nur IE)
1">




2.

[PHP]<?php
// irgendwelches php-Zeugs
?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
...//textfields usw...
<input type="submit" name="submit" value="Login" class="button" />
</form>
<?php
/*
Die Ausführung des Skriptes wartet nicht darauf,
dass der Benutzer was mit dem Formular tut.
So ist das bei http/php nicht vorgesehen.
D.h. das Skript rödelt bei jeder Anfrage von oben nach unten durch.
klar, dass bei der ersten Anfrage dann "nixdrin" ausgegeben wird
*/
if(!isset($_POST['submit']))
{ echo 'nixdrin'; }
else
{ echo 'Was din'; }
?>[/CODE]


3.

also... an register_globals liegts nicht! Stell es trotzdem mal auf off! Ansonsten könntest du auch die variable $_POST[submit] aucb mit $submit aufrufen!
dann...warum machst du basename($PHP_SELF) ? mach am besten nur $PHP_SELF!

Teste doch einfach mal ein anderes feld... Dann siehst du ja an was es liegen könnte!


4.

bitte beachten, dass $PHP_SELF bei register_globals=off auch nicht mehr verfügbar ist.
Wird es dann verwendet, erzeugt php eine Warnung und gibt an der Stelle nichts aus.
Die üblichen browser interpretieren action="" als 'zurück an Absender'; das ist ja auch gewollt, aber so nicht korrekt ;)
=> $_SERVER['PHP_SELF'] verwenden
siehe auch: http://www.php.net/manual/en/reserved.variables.php


5.

Zitat:
VolkerK postete
[PHP]<?php
// irgendwelches php-Zeugs
?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
...//textfields usw...
<input type="submit" name="submit" value="Login" class="button" />
</form>
<?php
/*
Die Ausführung des Skriptes wartet nicht darauf,
dass der Benutzer was mit dem Formular tut.
So ist das bei http/php nicht vorgesehen.
D.h. das Skript rödelt bei jeder Anfrage von oben nach unten durch.
klar, dass bei der ersten Anfrage dann "nixdrin" ausgegeben wird
*/
if(!isset($_POST['submit']))
{ echo 'nixdrin'; }
else
{ echo 'Was din'; }
?>[/CODE]
Danke erstmal für eure Antworten, ich glaube, ich habe irgendwo doch nen Problem, der nix mitm Quellcode zu tun hat, wenn bei Volker der Code tut (Entnehme ich dem Zitat im Quellcode)

Das mit dem Abschicken ist mir völlig klar, ich programmiere normalerweise mit Jsp, und auch da werden Requests verwendet...
Mein Problem ist, daß nach dem Submit immer noch nix im $_POST['submit']) steht.
Gibt es eigentlich irgendwie einen Servermod, mit dem man debuggen könnte? Ich bin von Java so verwöhnt, ich kann gar nicht mehr ohne, wie macht ihr das? Zum Beispiel ist ne echo-Ausgabe schlecht, wenn im $_POST['submit']) null drinsteht. Das gibt er nicht als String ("null") an den Client aus.
Vielleicht könnt ihr mir da ein paar eurer Tricks verrraten...


Danke nochmal für die Mühe!


6.

Wo genau aus Volkers Post entnimmst du denn, dass das Script bei ihm anders läuft als bei dir?
Zitat:
/*
Die Ausführung des Skriptes wartet nicht darauf,
dass der Benutzer was mit dem Formular tut.
So ist das bei http/php nicht vorgesehen.
D.h. das Skript rödelt bei jeder Anfrage von oben nach unten durch.
klar, dass bei der ersten Anfrage dann "nixdrin" ausgegeben wird
*/

Also genau hat er damit gemeint das die Variable $_POST['submit'] LEER SEIN MUSS weil das Script sich nämlich schon längst abgearbeitet hat bis überhaupt Irgengdjemand den Submit Button hätte drücken können.
Die Lösung deines Problems ist recht Simpel.


formular.php
Code:                   In Zwischenablage kopieren (nur IE)
2">

verarbeiten.php
Code:                   In Zwischenablage kopieren (nur IE)
3">




7.

Hoppla vielleicht hab ich das jetzt auch falsch verstanden. Versuchst du vielleicht so zu prüfen ob in gewissen feldern deines formulars eingaben gemacht wurden? Submit wäre da zwar ein blödes beispiel aber man muss sich ja schliesslich mal erkundigen.


8.

Hi Foggy, Fetzer und Volker,

Erst mal noch vielen, vielen Dank für eure Hilfe, am Ende habe ich dann geschnallt, daß $_POST['submit']) == ?submit, damit ging es eben dann auch, das Problem ist, daß jemand die Seiten vorgeschrieben hatte und ich eigentlich den Datenbankram machen sollte und bei mir liefs nich. Bin eben ab heute zum ersten Mal mit php beschäftigt und dachte mir, es wäre gut, neben jsp auch php mal zu lernen, sonst hätte ichs eben in Java gemacht. Nur zum 100. Mal daselbe ist auch nicht gut, darum habe ich entschieden, mal php zu versuchen. Ich bin auch schon gespannt, was ich am Ende für ein Resumee ziehen werde bzgl. jsp vs. php.
Im Moment bin ich klar noch für jsp wegen debuggingmöglichkeiten und klare Objektorientiertheit, wobei php halt mit nem Haufen Standartfunktionen zu glänzen scheint, ohne daß es nötig ist, sich ewig in fremde Klassen einzuarbeiten (man schaue sich bloß mal md5() o.ä. an....)

Bevor ich aber jetzt lüge, ist es wirklich unmöglich, in php zu debuggen (vor allem Variablen zur Laufzeit zu beobachten) oder hab ich nur wieder keine Ahnung?


Lieber Gruß,

Thorsten


9.

Nein, Debuggen in PHP ist schon möglich. Vernünftige IDEs wie z.B. Maguma haben auch alles nötige dafür schon eingebaut. Aber ich möchte dir auch Recht geben: Java ist für große Projekte wesentlich besser geeignet als PHP, wobei ich aber eher Servlets meine als JSP - JSP selbst kann ich nicht ausstehen :)


10.

@ Oliver Albers:
Da hast du Recht, jsp ist auch irgendwie ein wenig ... billig, aber es spart gerade unter Produktionsdruck schon ne Menge Zeit und ist auch um einiges übersichtlicher als Servlets (oder ich hab immer nocht nicht die richtige Weise gefunden, Code einzurücken...ich mag es halt, dieses stressige out.print durch %> zu ersetzen...und die Logik dahinter steckt ja eh im Bean oder im Servlet. Daher geht der Spaß am programmieren durch zu viel html sehen nicht ganz verloren...

Jedenfalls informier ich mich mal wegen Maguma...danke sehr!


11.

Maguma ist doch kostenlos oder?

Wenn du en richtig professionellen dubugger suchst, solltest du dich mal nach PHPEd umschauen. hab damit gute erfahrungen gemacht. Auch nicht schlecht, aber vom Preis her wahrscheinlich zu hoch ist Zend! Das ist aber dann das Non-Plus-Ultra ( auf deutsch: das beste auf m Markt :-) )


Hier gehts zum Orginal Eintrag "$_post - Anfängerfragen...." im Forum
 
phpforum.de | Impressum | Handy Bundles