Ich versuche z.Z. ein Formular zu erstellen, mit dem ich was in eine Datenbank eintragen kann. Ich habe diesen Code aus einem Tutorial, da ich sowas bisher noch nicht gemacht habe. Es funktioniert auch alles soweit, nur habe ich das Problem, das man auch "Absenden" kann, wenn das Formular leer ist. Selbst wenn man die Seite nur neu lädt, wird das Script ausgeführt und es werden leere Felder in die Datenbank geschrieben. Könnte mir jemand sagen, wie ich das verhindern kann.
Alles anzeigen
Quellcode
- <?php
- $db_host = "localhost";
- $db_user = "";
- $db_pass = "";
- $db_name = "";
- if (isset( $_POST['eintragen'] ))
- {
- // Maskierende Slashes aus POST entfernen
- $_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;
- // Inhalte der Felder aus POST holen
- $vorname = $_POST['vorname'];
- $geschlecht = $_POST['geschlecht'];
- $alter = (int) $_POST['alter'];
- $fuehrerschein = isset( $_POST['fuehrerschein'] ) ? 1 : 0;
- /* ************************************************************************************************ */
- /* *** Hier sollten und MUESSEN die Benutzereingaben geprueft werden um Schadcode abzufangen!!! *** */
- /* ************************************************************************************************ */
- // Sind alle Eingaben durch die Validierung gekommen werden sie in die DB geschrieben
- // Verbindung oeffnen und Datenbank ausweahlen
- $conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );
- if ($conID)
- {
- mysql_select_db( $db_name, $conID );
- }
- // Anfrage zusammenstellen der an die DB geschickt werden soll
- $sql = "INSERT INTO `traumprojekt`
- (`vorname`, `geschlecht`, `alter`, `fuehrerschein`)
- VALUES(
- '" .mysql_real_escape_string( $vorname ). "',
- '" .mysql_real_escape_string( $geschlecht ). "',
- " .$alter. ",
- " .$fuehrerschein. "
- )";
- // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle
- mysql_query( $sql );
- // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde
- if (mysql_affected_rows() == 1)
- {
- echo "<h3>Der Datensatz wurde hinzugefügt!</h3>";
- // Hier kann weiterer Code stehen der ausgefuehrt werden soll
- // wenn ein Eintrag erfolgreich war. z.B. Email an den Admin schicken
- // der ueber den neuen Eintrag informiert
- }
- else
- {
- echo "<h3>Der Datensatz konnte <span class="hinweis">nicht</span> hinzugefügt werden!</h3>";
- // Hier koennen Massnahmen ergriffen werden die ueber den Misserfolg informieren
- // wie z.B. den Benutzer darueber zu informieren, dem Admin eine Mail schicken
- // damit er sich um den Fehler kuemmern kann, etc pp
- }
- }
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <title>Formularinhalt in eine Datenbank schreiben</title>
- </head>
- <body>
- <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formular" id="formular">
- Vorname: <input type="text" name="vorname" id="vorname" />
- Geschlecht: <input type="radio" name="geschlecht" id="geschlecht_1" value="männlich" checked="checked" />Männchen <input type="radio" name="geschlecht" id="geschlecht_2" value="weiblich" />Weibchen
- Alter: <select name="alter" id="alter"><?php for ($i=1; $i<121; $i++) { echo "<option>{$i}</option>"; } ?></select>
- Führerschein: <input type="checkbox" name="fuehrerschein" id="fuehrerschein" />
- <input type="submit" name="eintragen" id="eintragen" value="Abschicken" />
- </body>
- </html>