Fehler bei Datenbank ausgabe
Xen
- php
Guten Morgen Community,
ich bastel mir gerade ein kleines Registrierungs-Skript in PHP mit MYSQL Datenbank. Nun habe ich ein kleines Problem mit der Ausgabe des Skriptes.
Ich hoffe mir kann jmd ein kleinen Anstoß und Hinweis geben warum oder welcher Fehler sich hinter der Zeile befindet.
Folgender Fehler wird ausgegeben: Parse error: syntax error, unexpected '"', expecting ',' or ';' in ....
Dies ist die Zeile:
<td style=\"border-bottom: #FFFFFF 2px;\"><strong>".$f['vorname']." ".$f['name']." <a href=\"mailto:".$f['email']."\" target=\"_blank\"><img src=\"images/email.gif\" border=\"0\"></a></td>
Ok habe das Problem gelöst:
Flasch: ".$f['vorname']."
Richtig; '.$f['vorname'].'
Ok habe das Problem gelöst:
:-)
Jedoch ein kleine Frage noch:
Ich habe hier die Überprüfung des Captcha und die Überprüfung der Pflichtfelder. Dies funktioniert auch alles, allerdings bekomm ich nur die Fehlermeldung angezeigt, wenn der Captcha falsch oder nicht eingegeben wurde. Bei nicht ausfüllen z.B. von Name wird eine weiße Seite angezeigt.
Hier mal der Code:
if ($CAPTCHA_EnteredText == $CAPTCHA_RandomText and isset($_POST['txtCode']) == true and isset($_SESSION['CAPTCHA_RndText'])){
$captcha = true;
if ($vorname != "" && $name != "" && $adresse != "" && $plz != "" && $stadt != "" && $telefon != "" && $email != "")
// Hier wird die Captcha aus der Session mit der aus dem Formular ueberprueft
{
// Eintrag in die Datenbank mit mysql_escape_string um SQL Injections zu verhindern
mysql_query("INSERT INTO predigt (vorname,name,adresse,plz,stadt,telefon,fax,email,datum,ip)
VALUES (
'".mysql_escape_string($vorname)."',
'".mysql_escape_string($name)."',
'".mysql_escape_string($adresse)."',
'".mysql_escape_string($plz)."',
'".mysql_escape_string($stadt)."',
'".mysql_escape_string($telefon)."',
'".mysql_escape_string($fax)."',
'".mysql_escape_string($email)."',
'".time()."',
'".$_SERVER['REMOTE_ADDR']."')");
echo '<p class=blaubold>Vielen Dank für Ihre Nachricht</p>
<p>Die Nachricht wurde erfolgreich gespeichert.</p>
<a href="predigt.php">zurück</a>';
}
}
else
{
echo '<p class=blaubold>Fehler!</p>
<p>Bitte füllen Sie alle Pflichtfelder aus.</p>
<a href="predigt.php">zurück</a>';
}
}
Hi!
Ich habe hier die Überprüfung des Captcha und die Überprüfung der Pflichtfelder. Dies funktioniert auch alles, allerdings bekomm ich nur die Fehlermeldung angezeigt, wenn der Captcha falsch oder nicht eingegeben wurde. Bei nicht ausfüllen z.B. von Name wird eine weiße Seite angezeigt.
Du verwendest eine Menge Variablen, deren Herkunft in dem gezeigten Code nicht ersichtlich ist. Das nicht mehr aktuelle Feature register_globals verleitet gern zu solchem Vorgehen. Das error_reporting auf E_ALL (und display_errors auf on) zu stellen, hilft unter anderem nicht vorhandene Variablen aufzuspüren.
Du verwendest die veraltete Funktion mysql_escape_string(). Verwende stattdessen mysql_real_escape_string().
Du betreibst keinerlei Fehlerauswertung. Datenbanken neigen dazu, unter bestimmten Umständen Fehler zu signalisieren. Werte die Funktionsergebnisse aus anstatt nur die Gutvariante zu betrachten.
Schau genau nach und überlege dir, was in den Alternativfällen passiert. Das äußere if beispielsweise hat ein else, das innere nicht. Wenn du nicht weißt, wie sich dein Programm tatsächlich verhält, bau ein paar echo-Ausgaben mit eindeutigem Text ein, so dass du sehen kannst, an welchen Stellen der Programmfluss vorbeikommt.
Lo!
<td style="border-bottom: #FFFFFF 2px;"><strong>".$f['vorname']." ".$f['name']." <a href="mailto:".$f['email']."" target="_blank"><img src="images/email.gif" border="0"></a></td>
Schick mal zwei drei Zeilen drüber und drunter mit.