
Vorschläge für Erweiterungen des Quellcodes sind ebenfalls erwünscht.
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?php // Quellcode /* Error-Reporting*/ error_reporting(E_ALL); ini_set('display_errors',1); /* Datenbank - Login */ $db_host = "localhost"; $db_name= "test"; $db_login = "root"; $db_pass = "****"; /* Datenbank - Verbindung */ $db = mysql_connect($db_host,$db_login,$db_pass, $db_name) ; mysql_select_db($db_name, $db); /* Formular*/ echo ' <form action="formular.php" method="post"> Vorname: <input type="text" name="vorname"> Nachname: <input type="text" name="nachname"> <input type="submit" value="ok"> </form>'; /* Variablen */ $vname = (isset($_POST['vorname'])); $nname = (isset($_POST['nachname'])); /* Formularcode */ if($vname == '' and $nname == '') { echo ' Bitte fülle erst alle Felder aus!'; // Felderüberprüfung } else { $sql = "INSERT INTO formular SET Vorname = '".$_POST['vorname']."', Nachname = '".$_POST['nachname']."'"; mysql_query($sql) or die (mysql_error()); } ?> |
Es ist geläufig && dann zu nehmen wenn man && braucht, AND dann zu nehmen wenn man AND braucht, ist ja nicht dasselbe
|
|
PHP Quellcode |
1 |
if(ctype_alpha($_POST['vorname']) && ctype_alpha($_POST['nachname'])) { ... //insert |
Es ist geläufig && dann zu nehmen wenn man && braucht, AND dann zu nehmen wenn man AND braucht, ist ja nicht dasselbe
Das funktioniert zwar, ist aber nicht sonderbar logisch. isset() liefert bereits einen booleschen Wert, da ist ein Vergleich mit dem Leerstring weder notwendig noch sinnvoll. Folgende Codes sind gleichbedeutend:
Übrigens ist es allgemein geläufiger »&&« und »||« statt »and« und »or« zu verwenden.
. Leider bin ich noch nicht dazu zu kommen mir alles genau durchzulesen. Wird noch gemacht
.
das mit vereinheitlichen hätte ich mir für später aufgehoben.
Also soll ich das Variablen deklarieren weg lassen und die $_POST['var'] gleich in die If schleife per isset prüfen? Hab ich das richtig verstanden?
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
<?php // Quellcode /* Error-Reporting*/ //wenn alles läuft auskommentieren! error_reporting(E_ALL); ini_set('display_errors',1); /* Datenbank - Login */ $db_host = "localhost"; $db_name= "test"; $db_login = "root"; $db_pass = "****"; /* Datenbank - Verbindung */ $db = mysql_connect($db_host,$db_login,$db_pass, $db_name) ; mysql_select_db($db_name, $db); if(isset($_POST["submit"])) //Wenn das Formular abgeschieckt wurde { if(isset($_POST["firstName"]) && isset($_POST["lastName"]) && !empty($_POST["firstName"]) && !empty($_POST["lastName"])) //Erst prüfen ob die $_POST Daten existieren und dann prüfen ob sie leer sind { /* An dieser Stelle gibt es mehrere Möglichkeiten: ** 1. Man schreibt ein Suchmuster das prüft, ob die eingabe gültig ist. Nachteil: in der Regel komplex und zeitaufwändig ** 2. Man verwendet vorgefertigte Funktionen wie (oben Verlinkt) ctype_alpha. Nachteil: bei dieser Funktion darf kein Leerzeichen verwendet werden, was einen Doppelnamen nicht als gültige Eingabe zulassen würde ** 3. Man lässt die Eingabe "Escapen" was MySQL-Injection nahezu unmöglich macht. Nachteil: Bei manchen Funktionen muss man bei jeder Ausgabe der Werte das "Escapen" "rückgängig" machen... */ if((preg_match("/[A-Za-z ]*/", $_POST["firstName"]), $firstName) == 1) && (preg_match("/[A-Za-z ]*/", $_POST["lastName"]), $lastName) == 1) //Einfaches Suchmuster (ACHTUNG, enthält wahrscheinlich Fehler) { $sql = "INSERT INTO formular SET Vorname = '".$firstName[0]."', Nachname = '".$lastName[0]."'"; mysql_query($sql) or die (mysql_error()); } else { echo "Daten nicht korrekt! Nur buchstaben von a-z und lehrzeichen sind zulässig!"; exit(0); } if(ctype_alpha($_POST["firstName"]) && ctype_alpha($_POST["lastName"])) //Variante 2, bei Doppelnamen fehlerhaft!!! { $sql = "INSERT INTO formular SET Vorname = '".$_POST["firstName"]."', Nachname = '".$_POST["lastName"]."'"; mysql_query($sql) or die (mysql_error()); } else { echo "Daten nicht korrekt! Nur buchstaben von a-z sind zulässig!"; exit(0); } {//Version 3 (mein persöhnlicher Favourite $sql = "INSERT INTO formular SET Vorname = '".mysql_real_escape_string(((get_magic_quotes_gpc())?stripslashes($_POST["firstName"]):$_POST["firstName"]))."',".//vllt. eine Klammer zu fiel aber die macht es auch nicht kaputt "Nachname = '".mysql_real_escape_string(((get_magic_quotes_gpc())?stripslashes($_POST["lastName"]):$_POST["lastName"]))."'"; mysql_query($sql) or die (mysql_error()); } echo "Daten korrekt eingetragen! <a href='javascript:history.back()'>Zurück</a>"; } else { echo "Bitte korrekte Daten eingeben"! } else { /* Formular*/ echo ' <form action="formular.php" method="post"> Vorname: <input type="text" name="firstName"> Nachname: <input type="text" name="lastName"> <input type="submit" name="submit" value="ok"> </form>'; } ?> |
1. Ist es nicht dasselbe, warum hat ja Florian bereits gesagt...

|
|
PHP Quellcode |
1 |
if($a AND $b || $c)... |
|
|
PHP Quellcode |
1 |
if(($a AND $b) || $c) == if($a && $b || $c) == if(($a && $b) || $c) |