| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

08-02-2010, 16:21
|
|
Lord-Napoleon
Registrierter Benutzer
|
|
Registriert seit: Jan 2003
Beiträge: 272
|
|
Problem mit $_POST[]
Hallo zusammen,
momentan habe ich das Problem, das einige Variablen leer sind. obwohl sie vorher im Formular einen Inhalt hatten.
formular.html
PHP-Code:
form action="register_save.php" method="post"> <div id="table_head"><br><b>Registrierung - Accountinformation</b></div> <div id="table_content"><br><table width="80%"> <tr> <td>Benutzername</td> <td><input class="<?php echo $errorClass['user']; ?>" value="<?php echo $_POST['user']; ?>" type=text name=user></td> </tr> <tr> <td>E-Mail</td> <td><input class="<?php echo $errorClass['mail']; ?>" value="<?php echo $_POST['mail']; ?>" type=text name=mail></td> </tr> <tr> <td>E-Mail (Wdh)</td> <td><input class="<?php echo $errorClass['mail1']; ?>" value="<?php echo $_POST['mail1']; ?>" type=text name=mail1></td> </tr> <tr> <td>Passwort</td> <td><input class="<?php echo $errorClass['passwd']; ?>" value="<?php echo $_POST['passwd']; ?>" type=password name=passwd></td> </tr> <tr> <td>Passwort (Wdh)</td> <td><input class="<?php echo $errorClass['passwd1']; ?>" value="<?php echo $_POST['passwd1']; ?>" type=password name=passwd1></td> </tr> </table></div> <div id="table_footer"></div>
register_save.php
PHP-Code:
<?php
print_r($_POST);
$errorFields = array('user', 'mail', 'mail1', 'passwd', 'passwd1');
$error = FALSE; foreach($errorFields as $key => $value) { if(empty($_POST[$errorFields[$key]])) { $error = TRUE; $errorClass[$value] = 'errorField'; $errorMessage = 'ist leer'; } }
if($error == TRUE) {
include("html/regerror.html"); include("html/registrieren.html"); } else {
if(md5(strtoupper($_POST['captcha'])) == $_SESSION['captcha']) { if(!empty($_POST['user']) && !empty($_POST['mail']) && !empty($_POST['mail1']) && !empty($_POST['passwd']) && !empty($_POST['passwd1'])) { if($_POST['passwd'] == $_POST['passwd1'] || $_POST['mail'] == $_POST['mail1']) {
Ausgabe vom Seitenquelltext:
Code:
Array ( [user] => [mail] => muh [mail1] => muh [passwd] => [passwd1] => dsfsdf [captcha] => )
Hat jemand ne Ahnun warum dies so ist?
|

08-02-2010, 16:23
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
HTML-Attribute gehören in Anführungszeichen, das sind aber absolute HTML-Grundlagen. Bitte erst HTML lernen, bevor du PHP programmierst.
Außerdem missbrauchst du eine Tabelle für Layout-Zwecke. Dafür gibts aber schon seit Jahren CSS.
http://de.selfhtml.org/html/
http://de.selfhtml.org/css/
|

08-02-2010, 16:25
|
|
Lord-Napoleon
Registrierter Benutzer
|
|
Registriert seit: Jan 2003
Beiträge: 272
|
|
Das erklärt trotzdem nicht, warum einige Variablen leer sind.
|

08-02-2010, 16:30
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Woher weißt du, dass sie leer sind? Über die $errorField- Prüfung im Skript oder durch die Ausgabe des $_POST-Arrays? Im letzteren Falle sind sie vielleicht gar nicht leer, sondern enthalten nur Leerzeichen, was von empty() natürlich nicht berücksichtigt wird.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

08-02-2010, 16:46
|
|
Lord-Napoleon
Registrierter Benutzer
|
|
Registriert seit: Jan 2003
Beiträge: 272
|
|
Über $errorField & $_POST Ausgabe.
|

08-02-2010, 16:47
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Zitat:
Zitat von Lord-Napoleon
Das erklärt trotzdem nicht, warum einige Variablen leer sind.
|
Verwende var_dump() statt print_r(), dann sieht man besser ob sie wirklich leer sind.
|

08-02-2010, 16:51
|
|
Lord-Napoleon
Registrierter Benutzer
|
|
Registriert seit: Jan 2003
Beiträge: 272
|
|
array(6) {
["user"]=>
string(0) ""
["mail"]=>
string(1) "1"
["mail1"]=>
string(1) "1"
["passwd"]=>
string(0) ""
["passwd1"]=>
string(1) "2"
["captcha"]=>
string(0) ""
}
|

08-02-2010, 16:57
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Und der HTML-Code deines Formulars ist valide? Im geposteten Codeabschnitt fehlt z. B. das < beim form-Element und das schließende Tag fehlt ebenfalls. Am besten jagst du es erstmal durch den W3C Validator und korrigierst den HTML-Code. Dann sehen wir weiter.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

09-02-2010, 09:39
|
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 2.759
|
|
Mir sticht jetzt auf Anhieb mal das hier ins Auge
PHP-Code:
if(empty($_POST[$errorFields[$key]])){
erscheint mir komisch, kann eigentlich so nicht den gewünschten empty-Vergleich bringen - aber ob es das alleine ist, vermag ich jetzt auf Anhieb nicht zu sagen...
EDIT:
Stop - bin auf dem Holzweg, wobei die Aufdröselung des Array mittels foreach nach $key=>$value und dann doch wieder der Zugriff per $errorFields[$key] auf den Wert statt einfach $value zu nehmen schon seltsame Vorgehensweisen sind. Aber manche fangen halt nen Fisch, werfen ihn anschliessend zurück ins Wasser um ihn dann wieder zu fangen *gg*.
__________________
Drelingdo
Krabonse
Simmannamando
Geändert von Quetschi (09-02-2010 um 09:44 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|