Pflichtfelder und Syntax

bomberpilotmp3

Erfahrenes Mitglied
Hallo, ich habe ein kleines Problem.

Ich habe verscheidene Felder die in einer MySQL Tabelle eingetragen werden sollen. Nun ist es so, das von 5 Felder nicht alle bzw keiner dieser Felder Pflichtangaben sind, und eigendlich sogesehen freigelassen werden können.

Soweit so gut, aber alle dieser 5 Felder haben eine gewisse Überprüfung auf richtigkeit bzw. Korrekte Syntax. Das bedeutet, das zwar alle Felder keine Pflichtfelder sind, jedoch möchte ich diese auf die richtige Syntax Prüfen, zb. von einer E-Mail oder MSN Adresse.

Leider funktioniert es überhaupt nicht. Kann mir einer dabei helfen alle Felder zu Überprüfen und dennoch als keine Pflichtfelder zu machen?
Mein versuch scheiterete nach meheren Versuchen. Hier mein PHP Code bzw Ausschnitt meines Codes:

PHP:
if (isset($_POST['button'])) {
        if (!empty($_POST['USER_ICQ'])) {
            if (strlen($_POST['USER_ICQ']) < 6) {
                $SYSTEM_MESSAGE[1] = 'Die ICQ Nummer muss aus mindestens <u>6 Zeichen</u> bestehen!<br />';
                $ERROR_LOG = FALSE;
            } elseif (strlen($_POST['USER_ICQ']) > 10) {
                $SYSTEM_MESSAGE[1] = 'Die ICQ Nummer darf nur aus höchstens <u>10 Zeichen</u> bestehen!<br />';
                $ERROR_LOG = FALSE;
            } elseif (!preg_match('/^[0-9]{6,10}$/i',$_POST['USER_ICQ'])) {
                $SYSTEM_MESSAGE[1] = 'Die ICQ Nummer enthält Ungültige Zeichen. Bitte benutzen Sie nur Zaheln und/oder Bindesstriche!<br />';
                $ERROR_LOG = FALSE;
            } else {
                $_POST['USER_ICQ'] = $_POST['USER_ICQ'];
                $ERROR_LOG = TRUE;
            }
        } /* ------------------------------------------------------------------------------------------------------------------------ */
        if (!empty($_POST['USER_MSN'])) {
            if (strlen($_POST['USER_MSN']) < 8) {
                $SYSTEM_MESSAGE[1] = 'Die MSN Adresse muss aus mindestens <u>8 Zeichen</u> bestehen!<br />';
                $ERROR_LOG = FALSE;
            } elseif (strlen($_POST['USER_MSN']) > 150) {
                $SYSTEM_MESSAGE[1] = 'Die MSN Adresse darf nur aus höchstens <u>150 Zeichen</u> bestehen!<br />';
                $ERROR_LOG = FALSE;
            } elseif (!preg_match('/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_]+\.[a-z]{2,4}$/i',$_POST['USER_MSN'])) {
                $SYSTEM_MESSAGE[1] = 'Die von Ihnen eingegebende MSN Adresse ist leider ungültig. Bitte versuchen Sie es noch einmal!<br />';
                $ERROR_LOG = FALSE;
            } else {
                $_POST['USER_MSN'] = $_POST['USER_MSN'];
                $ERROR_LOG = TRUE;
            }
        } /* ------------------------------------------------------------------------------------------------------------------------ */
        if (!empty($_POST['USER_YAHOO'])) {
            if (strlen($_POST['USER_YAHOO']) < 8) {
                $SYSTEM_MESSAGE[1] = 'Die Yahoo Adresse muss aus mindestens <u>8 Zeichen</u> bestehen!<br />';
                $ERROR_LOG = FALSE;
            } elseif (strlen($_POST['USER_YAHOO']) > 150) {
                $SYSTEM_MESSAGE[1] = 'Die Yahoo Adresse darf nur aus höchstens <u>150 Zeichen</u> bestehen!<br />';
                $ERROR_LOG = FALSE;
            } elseif (!preg_match('/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_]+\.[a-z]{2,4}$/i',$_POST['USER_YAHOO'])) {
                $SYSTEM_MESSAGE[1] = 'Die von Ihnen eingegebende Yahoo Adresse ist leider ungültig. Bitte versuchen Sie es noch einmal!<br />';
                $ERROR_LOG = FALSE;
            } else {
                $_POST['USER_YAHOO'] = $_POST['USER_YAHOO'];
                $ERROR_LOG = TRUE;
            }
        } /* ------------------------------------------------------------------------------------------------------------------------ */
        if (!empty($_POST['USER_HOMEPAGE'])) {
            if (strlen($_POST['USER_HOMEPAGE']) < 5) {
                $SYSTEM_MESSAGE[1] = 'Die Homepage muss aus mindestens <u>6 Zeichen</u> bestehen!<br />';
                $ERROR_LOG = FALSE;
            } elseif (strlen($_POST['USER_HOMEPAGE']) > 75) {
                $SYSTEM_MESSAGE[1] = 'Die Homepage darf nur aus höchstens <u>75 Zeichen</u> bestehen!<br />';
                $ERROR_LOG = FALSE;
            } elseif (!preg_match('/^(http|https)+:\/\/[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+\.[a-z|\/]{2,4}$/i',$_POST['USER_HOMEPAGE'])) {
                $SYSTEM_MESSAGE[1] = 'Die von Ihnen eingegebende Homepage Adresse ist leider ungültig. Bitte versuchen Sie es noch einmal!<br />';
                $ERROR_LOG = FALSE;
            } else {
                $_POST['USER_HOMEPAGE'] = $_POST['USER_HOMEPAGE'];
                $ERROR_LOG = TRUE;
            }
        } /* ------------------------------------------------------------------------------------------------------------------------ */
        if ($ERROR_LOG) {
            // Mach das was du sollst, eintragen :)
        }
}
 
Also ersteinmal musste $ERROR_LOG auch vor den If-Abfragen auf true setzen, denn sonst kann es ja nicht true sein am ENDE auch wenn alles korrekt ausgefüllt ist.

Zweitens solltest du ganz am Ende des Scripts überprüfen, ob $ERROR_LOG == true, wenn ja dann tu etwas gutes, wenn nein, dann gebe die Error-Nachricht aus, warum.

Außerdem würde ich die Error-NAchrichten in einem Array sammeln. Wenn du dann nachher nur noch checkst ob das Array leer is dann sparst du dir die ganze Sache mir $ERROR_LOG ;-)

MFG Nilson
 
Zurück