Daten werden nicht in Datenbank gespeichert
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aussehen
bild
code
einsteiger
eintrag
eintragen
erneut code
fehler
info
kategorie
rezept
sagen
steige
string
typ
url
versuchen
zeile
zubereitung
zutaten
-
Hallo !
Habe für meine Seite ein Script programmiert, womit man eingegebene Daten in meine Datenbanktabelle speichert.
Irgendwie ist da noch ein Fehler drin, ich finde keinen Fehler.
Wenn man das Formular abschickt, und alle Pflichtfelder und den Sicherheitscode ausgefüllt hat, kommt nur eine weiße Seite. Es wird auch nichts in die DB eingetragen.
Wenn ich ein Pflichtfeld nicht ausfülle, kommt ein Fehler. Also da klappt alles, nur das Speichern klappt nicht.
Hier das Script:
<?php if(isset($_POST['submit'])) { require('../admin/sql.php'); session_start(); function encrypt($string, $key) { $result = ''; for($i=0; $i<strlen($string); $i++) { $char = substr($string, $i, 1); $keychar = substr($key, ($i % strlen($key))-1, 1); $char = chr(ord($char)+ord($keychar)); $result.=$char; } return base64_encode($result); } $sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921"); $sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe); if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){ unset($_SESSION['rechen_captcha_spam']); $rezeptname = mysql_real_escape_string($_POST['rezeptname']); $zutaten = mysql_real_escape_string($_POST['zutaten']); $zubereitung = mysql_real_escape_string($_POST['zubereitung']); $kategorie = mysql_real_escape_string($_POST['kategorie']); $bild = mysql_real_escape_string($_POST['bild']); $infos = mysql_real_escape_string($_POST['infos']); $fehler = false; if(trim($zutaten) == "") { echo "<b><font color=\"red\">Bitte geben Sie die Zutaten an.</font></b><br>"; $fehler = true; } if(trim($zubereitung) == "") { echo "<b><font color=\"red\">Bitte geben Sie eine Zubereitung ein.</font></b><br>"; $fehler = true; } if(trim($rezeptname) == "") { echo "<b><font color=\"red\">Bitte geben Sie einen Rezeptnamen ein.</font></b><br>"; $fehler = true; } if(trim($kategorie) == "") { echo "<b><font color=\"red\">Bitte geben Sie eine Kategorie an.</font></b><br>"; $fehler = true; if (!$fehler) { $eintrag = "insert into rezeptvorschlaege (rezeptname, zutaten, zubereitung, kategorie, bild, infos) values ('".$_POST['rezeptname']."', '".$_POST['zutaten']."', '".$_POST['zubereitung']."', '".$_POST['kategorie']."', '".$_POST['bild']."', '".$_POST['infos']."')"; $eintragen = mysql_query($eintrag); } if($eintragen == true) { echo " <p><b><font face='Arial' color='#008000' size='4'>Vielen Dank für Ihren Rezepteintrag !</font></b></p> <p><font face='Arial' color='#008000'>Nach einer kurzen Überprüfung erscheint Ihr Rezept in der Rezeptübersicht.</font></p> <p> </p> <p><font face='Arial' size='4'><a href='rezept_eintragen.php'>Noch ein Rezept eintragen</a></font></p> <p> </p> <p><font face='Arial' size='4'><a href='index.php'>Zurück zu den Rezepten</a></font></p> "; } } } else { echo '<b><font color=\"red\">Der Sicherheitscode ist leider falsch. Bitte versuche es erneut !</font></b><br>'; } } ?>
Könnt Ihr da vielleicht mal drüberschauen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hinter
fehlt eine }, welche du hinterif(trim($kategorie) == "") { ... $fehler = true;
gesetzt hast.if($eintragen == true) { ... }
Zudem würde ich dir von der Zeile
abraten, da böse User da einiges anstellen könnten.$eintrag = "insert into rezeptvorschlaege (rezeptname, zutaten, zubereitung, kategorie, bild, infos) values ('".$_POST['rezeptname']."', '".$_POST['zutaten']."', '".$_POST['zubereitung']."', '".$_POST['kategorie']."', '".$_POST['bild']."', '".$_POST['infos']."')";
lg Ole
Beitrag zuletzt geändert: 7.8.2011 19:00:28 von ole-reglitzki -
ole-reglitzki schrieb:
hinter
fehlt eine }, welche du hinter$fehler = true;
gesetzt hast.if($eintragen == true) { ... }
Zudem würde ich dir von der Zeile
abraten, da böse User da einiges anstellen könnten.$eintrag = "insert into rezeptvorschlaege (rezeptname, zutaten, zubereitung, kategorie, bild, infos) values ('".$_POST['rezeptname']."', '".$_POST['zutaten']."', '".$_POST['zubereitung']."', '".$_POST['kategorie']."', '".$_POST['bild']."', '".$_POST['infos']."')";
lg Ole
Erstmal danke für deine Antwort !
Wie könnte ich die Zeile denn sicherer machen? -
Mit mysql in php an sich kenne ich mich nicht aus, ich könnte dir höchstens sagen, wie es mit PDO aussehen würde (wenn du noch Einsteiger bist, steige bitte auf PDO um, könnte dir später das lernen eines anderen Datenbank-Typen ersparen).
EDIT: Zu PDO kannst du es hier sehen
Beitrag zuletzt geändert: 7.8.2011 19:04:49 von ole-reglitzki -
ole-reglitzki schrieb:
Mit mysql in php an sich kenne ich mich nicht aus, ich könnte dir höchstens sagen, wie es mit PDO aussehen würde (wenn du noch Einsteiger bist, steige bitte auf PDO um, könnte dir später das lernen eines anderen Datenbank-Typen ersparen).
EDIT: Zu PDO kannst du es hier sehen
Habe mein Script so geändert:
<?php if(isset($_POST['submit'])) { require('../admin/sql.php'); session_start(); function encrypt($string, $key) { $result = ''; for($i=0; $i<strlen($string); $i++) { $char = substr($string, $i, 1); $keychar = substr($key, ($i % strlen($key))-1, 1); $char = chr(ord($char)+ord($keychar)); $result.=$char; } return base64_encode($result); } $sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921"); $sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe); if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){ unset($_SESSION['rechen_captcha_spam']); $rezeptname = mysql_real_escape_string($_POST['rezeptname']); $zutaten = mysql_real_escape_string($_POST['zutaten']); $zubereitung = mysql_real_escape_string($_POST['zubereitung']); $kategorie = mysql_real_escape_string($_POST['kategorie']); $bild = mysql_real_escape_string($_POST['bild']); $infos = mysql_real_escape_string($_POST['infos']); $fehler = false; if(trim($zutaten) == "") { echo "<b><font color=\"red\">Bitte geben Sie die Zutaten an.</font></b><br>"; $fehler = true; } if(trim($zubereitung) == "") { echo "<b><font color=\"red\">Bitte geben Sie eine Zubereitung ein.</font></b><br>"; $fehler = true; } if(trim($rezeptname) == "") { echo "<b><font color=\"red\">Bitte geben Sie einen Rezeptnamen ein.</font></b><br>"; $fehler = true; } if(trim($kategorie) == "") { echo "<b><font color=\"red\">Bitte geben Sie eine Kategorie an.</font></b><br>"; } $fehler = true; if (!$fehler) { $eintrag = "insert into rezeptvorschlaege (rezeptname, zutaten, zubereitung, kategorie, bild, infos) values ('".$_POST['rezeptname']."', '".$_POST['zutaten']."', '".$_POST['zubereitung']."', '".$_POST['kategorie']."', '".$_POST['bild']."', '".$_POST['infos']."')"; $eintragen = mysql_query($eintrag); } if($eintragen == true) { echo " <p><b><font face='Arial' color='#008000' size='4'>Vielen Dank für Ihren Rezepteintrag !</font></b></p> <p><font face='Arial' color='#008000'>Nach einer kurzen Überprüfung erscheint Ihr Rezept in der Rezeptübersicht.</font></p> <p> </p> <p><font face='Arial' size='4'><a href='rezept_eintragen.php'>Noch ein Rezept eintragen</a></font></p> <p> </p> <p><font face='Arial' size='4'><a href='index.php'>Zurück zu den Rezepten</a></font></p> "; } } } else { echo '<b><font color=\"red\">Der Sicherheitscode ist leider falsch. Bitte versuche es erneut !</font></b><br>'; } ?>
Aber es klappt immernoch nicht. Ist da noch ein Fehler drin? -
Ich weiß nicht, ob php funktionen in einer IF-Abfrage zulässt, bezweifle ich aber.
Das könnte eine mögliche Fehlerursache sein -
Kann noch jemand den Code durchschauen, ob da irgendwo noch ein Fehler drin ist?
-
hab noch einmal nachgeguckt...
du hast die Klammer eine Zeile zu früh gesetzt.
Wenn
dort steht, ist es klar, dass er dort nie greift.$fehler = true; if (!$fehler) {
lg -
ole-reglitzki schrieb:
hab noch einmal nachgeguckt...
du hast die Klammer eine Zeile zu früh gesetzt.
Wenn
dort steht, ist es klar, dass er dort nie greift.$fehler = true; if (!$fehler) {
lg
Also wie soll der Code genau da aussehen?
Wo soll die Klammer hin?
EDIT: Habs schon selber hinbekommen! Vielen Dank für deine Hilfe ;)
Beitrag zuletzt geändert: 7.8.2011 20:50:26 von davy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage