Gästebuch-Fehler
waterpolo-nico
- php
0 RazR 19930 Tom0 waterpolo-nico0 Tom
0 steckl
Hallo zusammen,
ich habe ein "Gästebuch" geschreiben. Und nun noch einen Fehler, den ich nicht herausbekomme.
<html>
<head>
<title>
Angst
</title>
<script type="text/javascript">
function click (e) {
if (!e)
e = window.event;
if ((e.type && e.type == "contextmenu") || (e.button && e.button == 2) || (e.which && e.which == 3)) {
if (window.opera)
window.alert("Sorry: Diese Funktion ist deaktiviert.");
return false;
}
}
if (document.layers)
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = click;
document.oncontextmenu = click;
</script>
</head>
<body bgcolor="#B4DAFF">
<div style="text-align:center;">
<br><br>
</p>
<?php
define("USER","schwarzwaldelche");
define("HOST","localhost");
define("PW","");
define("DB","schwarzwaldelche");
$tabellenname="angst";
$abgeschickt=$_POST['abgeschickt'];
if($abgeschickt==1) {
$nickname=$_POST['nickname'];
$text=$_POST['text'];
if(strlen($text)<10) {
$error="Der Text muss mindestens 10 Zeichen lang sein.<br>";
}
if(strlen($nickname)<4) {
$error.="Der Nickname muss mindestens 4 Zeichen lang sein.<br>";
}
if(strlen($text)>10 && strlen($nickname)>4) {
$abgeschickt=2;
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$ip = getenv("REMOTE_ADDR");
$sql="INSERT INTO ".$tabellenname."(nickname,text,ip) VALUES('$nickname','$text','$ip')";
mysql_query($sql);
unset($sql);
}
else {
echo $error;
echo '<form action="#" method="POST">';
echo 'Nickname<br><input type="text" value="'.$nickname.'" name="nickname"><br>';
echo 'Kommentar:<br><textarea name="text">'.$text.'</textarea><br>';
echo '<input type="hidden" name="abgeschickt" value="1"><input type="submit"></form>';
}
}
if($abgeschickt!=1 && $abgeschickt!=2) {
echo '<form action="#" method="POST">';
echo 'Nickname<br><input type="text"name="nickname"><br>';
echo 'Kommentar:<br><textarea name="text"></textarea><br>';
echo '<input type="hidden" name="abgeschickt" value="1"><input type="submit"></form>';
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$sql="SELECT * FROM ".$tabellenname." ORDER BY ID DESC";
$ausgabe=mysql_query($sql);
while($row=mysql_fetch_assoc($ausgabe)) {
echo '<div style="text-align:center;"><table border="0" text="#DD6622"><tr><td><u><b><font face color="#DD6622">Geschrieben von:</td></b></u><td><font face color="#DD6622">'.$row['nickname'].'</td></tr>';
echo '<br><u><b><tr><td><font face color="#DD6622"><u><b>Kommentar:</td></b></u><td><font face color="#DD6622">'.$row['text'].'</td></tr></table><br>';
}
}
if($abgeschickt==2) {
echo "<br>Danke für deinen Kommentar!<br>";
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$sql="SELECT * FROM ".$tabellenname." ORDER BY ID DESC";
$ausgabe=mysql_query($sql);
while($row=mysql_fetch_assoc($ausgabe)) {
echo '<div style="text-align:center;"><table border="0" text="#DD6622"><tr><td><u><b><font face color="#DD6622">Geschrieben von:</td></b></u><td><font face color="#DD6622">'.$row['nickname'].'</td></tr>';
echo '<br><u><b><tr><td><font face color="#DD6622"><u><b>Kommentar:</td></b></u><td><font face color="#DD6622">'.$row['text'].'</td></tr></table><br>';
}
}
?>
</div>
</font>
</body>
</html>
Zeile 75 ist ein Fehler.
hier ist es hochgeladen: http://schwarzwaldelche.sc.funpic.de/
Der Fehler wird nicht daran liegen, dass ich das Passwort nicht eingetragen habe, den das habe ich nachträglich rausgemacht, damit es geheim bleibt...
Ich bitte um eure Hilfe...
lg
waterpolo-nico
Laut Fehlermeldung liegt ein MySQL- Fehler vor...
d.h., dass irgendwas mit der MySQL- Verbindung oder Abfrage nicht stimmt...
Überprüfe mal alle MySQL- Abfragen oder ändere mal Zeile 74
durch:
$ausgabe=mysql_query($sql) or die(mysql_error());
Poste dann mal, welcher Fehler ausgegeben wird.
MFG,
RazR 1993
Hallo,
es kommt:
Table 'schwarzwaldelche.angst' doesn't exist
aber vielleicht liegt es daran, dass ich bei dmeinem Anbieter funpic.de noch das falsche eingestellt habe. Ich schaue gerade mal.....
Das bedeutet, dass die Tabelle, die du abrufst nicht existiert... geh in dein phpmyadmin und lege Sie an
habe ich gerade gemerkt, danke.... dadruch,d ass das mein erstes gästebuch ist, das ich selbe rgeschreiben habe, habe ich nun Probleme auch noch die tabelle zu machen.
Ich muss eintragen:
Feld:
Typ: zur auswahl stehen mehrere Möglichkeiten
Länge/Set:
Kollation:zur auswahl stehen mehrere Möglichkeiten
Attribute: -unsigned / -unsigned zerofill / - on update current timestamp
Null not : -null / -not null
Standart:
Extra: -auto increment
5 Felder zum auswählen:
-Primärschlüssel
-Index
-Unique
Sind das allgemine Angaben für die Tabelle, sodass es mir jemand erklären kann, für was die felder sind?
Hallo nochmal,
so, jetzt habe ich es geschafft, dass die ganzen Fehlermeldungen weg sind: http://schwarzwaldelche.sc.funpic.de/index51.php . Ich habe jetzt jedoch das Problem, dass es trotzdem noch nicht eght. Wenn ich was eintragen möchte und dann abschicke, passiert nichts - nur die Seite wird neu geladen, jedoch ohne veränderung danach.
Was habe ich falsch gemacht? Hier nochmal der Code - indem das Passwort rausgemacht worden ist...
<html>
<head>
<title>
Angst
</title>
<script type="text/javascript">
function click (e) {
if (!e)
e = window.event;
if ((e.type && e.type == "contextmenu") || (e.button && e.button == 2) || (e.which && e.which == 3)) {
if (window.opera)
window.alert("Sorry: Diese Funktion ist deaktiviert.");
return false;
}
}
if (document.layers)
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = click;
document.oncontextmenu = click;
</script>
</head>
<body bgcolor="#B4DAFF">
<div style="text-align:center;">
<br><br>
</p>
<?php
define("USER","schwarzwaldelche");
define("HOST","localhost");
define("PW","");
define("DB","schwarzwaldelche");
$tabellenname="ssvf";
$abgeschickt=$_POST['abgeschickt'];
if($abgeschickt==1) {
$nickname=$_POST['nickname'];
$text=$_POST['text'];
if(strlen($text)<10) {
$error="Der Text muss mindestens 10 Zeichen lang sein.<br>";
}
if(strlen($nickname)<4) {
$error.="Der Nickname muss mindestens 4 Zeichen lang sein.<br>";
}
if(strlen($text)>10 && strlen($nickname)>4) {
$abgeschickt=2;
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$ip = getenv("REMOTE_ADDR");
$sql="INSERT INTO ".$tabellenname."(nickname,text,ip) VALUES('$nickname','$text','$ip')";
mysql_query($sql);
unset($sql);
}
else {
echo $error;
echo '<form action="#" method="POST">';
echo 'Nickname<br><input type="text" value="'.$nickname.'" name="nickname"><br>';
echo 'Kommentar:<br><textarea name="text">'.$text.'</textarea><br>';
echo '<input type="hidden" name="abgeschickt" value="1"><input type="submit"></form>';
}
}
if($abgeschickt!=1 && $abgeschickt!=2) {
echo '<form action="#" method="POST">';
echo 'Nickname<br><input type="text"name="nickname"><br>';
echo 'Kommentar:<br><textarea name="text"></textarea><br>';
echo '<input type="hidden" name="abgeschickt" value="1"><input type="submit"></form>';
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$sql="SELECT * FROM ".$tabellenname." ORDER BY ID DESC";
$ausgabe=mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_assoc($ausgabe)) {
echo '<div style="text-align:center;"><table border="0" text="#DD6622"><tr><td><u><b><font face color="#DD6622">Geschrieben von:</td></b></u><td><font face color="#DD6622">'.$row['nickname'].'</td></tr>';
echo '<br><u><b><tr><td><font face color="#DD6622"><u><b>Kommentar:</td></b></u><td><font face color="#DD6622">'.$row['text'].'</td></tr></table><br>';
}
}
if($abgeschickt==2) {
echo "<br>Danke für deinen Kommentar!<br>";
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$sql="SELECT * FROM ".$tabellenname." ORDER BY ID DESC";
$ausgabe=mysql_query($sql);
while($row=mysql_fetch_assoc($ausgabe)) {
echo '<div style="text-align:center;"><table border="0" text="#DD6622"><tr><td><u><b><font face color="#DD6622">Geschrieben von:</td></b></u><td><font face color="#DD6622">'.$row['nickname'].'</td></tr>';
echo '<br><u><b><tr><td><font face color="#DD6622"><u><b>Kommentar:</td></b></u><td><font face color="#DD6622">'.$row['text'].'</td></tr></table><br>';
}
}
?>
</div>
</font>
</body>
</html>
Hello,
$con = mysql_connect(HOST,USER,PW);
if ($con)
{
if (mysql_select_db(DB))
{
$sql = "SELECT * FROM ".$tabellenname." ORDER BY ID DESC";
$ausgabe = mysql_query($sql, $con);
if ($ausgabe)
{
while($row = mysql_fetch_assoc($ausgabe))
{
## Daten abholen
}
}
else
{
# keine Ergebnismenge erhalten
# mysql_error($con) auswerten
}
}
else
{
# Datenbank konnte nicht angesprochen werden
# mysql_error($con) auswerten
}
mysql_close($con);
}
else
{
# keine Verbindung zum Datenbankserver möglich
}
So, oder so ähnlich, sollte dieser Abschnitt aussehen.
Am besten baust Du Dir eine Funktion daraus, die bei Auftreten eines Fehlers nach dem Schließen der DB-Connection mit einem Fehlerwert abbricht.
Liebe Grüße aus dem Cyberspace
Tom vom Berg
Hello,
Nachtrag: Die Auswertung des Datenbankstatus solltest Du nicht unbedingt auf dem User-Bildschirm ausgeben, sondern in Log-File schreiben. Der User braucht nur zu wissen, dass eine datenabfrage im Moment nicht möglich ist.
Und dann solltest Du die Datenbeschaffung und -verarbeitung von der Ausgabeaufbereitung und der Ausgabe trennen. Code, der in dieser "embedded-Methode" geschrieben weird, lässt sich ganz schwer überschauen, warten und erweitern.
Liebe Grüße aus dem Cyberspace
Tom vom Berg
Hallo nochmal,
so, jetzt habe ich es geschafft, dass die ganzen Fehlermeldungen weg sind: http://schwarzwaldelche.sc.funpic.de/index51.php . Ich habe jetzt jedoch das Problem, dass es trotzdem noch nicht eght. Wenn ich was eintragen möchte und dann abschicke, passiert nichts - nur die Seite wird neu geladen, jedoch ohne veränderung danach.
Was habe ich falsch gemacht? Hier nochmal der Code - indem das Passwort rausgemacht worden ist...
<html>
<head>
<title>
Angst
</title>
<script type="text/javascript">
function click (e) {
if (!e)
e = window.event;
if ((e.type && e.type == "contextmenu") || (e.button && e.button == 2) || (e.which && e.which == 3)) {
if (window.opera)
window.alert("Sorry: Diese Funktion ist deaktiviert.");
return false;
}
}
if (document.layers)
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown = click;
document.oncontextmenu = click;
</script>
</head>
<body bgcolor="#B4DAFF">
<div style="text-align:center;">
<br><br>
</p>
<?php
define("USER","schwarzwaldelche");
define("HOST","localhost");
define("PW","");
define("DB","schwarzwaldelche");
$tabellenname="ssvf";
$abgeschickt=$_POST['abgeschickt'];
if($abgeschickt==1) {
$nickname=$_POST['nickname'];
$text=$_POST['text'];
if(strlen($text)<10) {
$error="Der Text muss mindestens 10 Zeichen lang sein.<br>";
}
if(strlen($nickname)<4) {
$error.="Der Nickname muss mindestens 4 Zeichen lang sein.<br>";
}
if(strlen($text)>10 && strlen($nickname)>4) {
$abgeschickt=2;
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$ip = getenv("REMOTE_ADDR");
$sql="INSERT INTO ".$tabellenname."(nickname,text,ip) VALUES('$nickname','$text','$ip')";
mysql_query($sql);
unset($sql);
}
else {
echo $error;
echo '<form action="#" method="POST">';
echo 'Nickname<br><input type="text" value="'.$nickname.'" name="nickname"><br>';
echo 'Kommentar:<br><textarea name="text">'.$text.'</textarea><br>';
echo '<input type="hidden" name="abgeschickt" value="1"><input type="submit"></form>';
}
}
if($abgeschickt!=1 && $abgeschickt!=2) {
echo '<form action="#" method="POST">';
echo 'Nickname<br><input type="text"name="nickname"><br>';
echo 'Kommentar:<br><textarea name="text"></textarea><br>';
echo '<input type="hidden" name="abgeschickt" value="1"><input type="submit"></form>';
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$sql="SELECT * FROM ".$tabellenname." ORDER BY ID DESC";
$ausgabe=mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_assoc($ausgabe)) {
echo '<div style="text-align:center;"><table border="0" text="#DD6622"><tr><td><u><b><font face color="#DD6622">Geschrieben von:</td></b></u><td><font face color="#DD6622">'.$row['nickname'].'</td></tr>';
echo '<br><u><b><tr><td><font face color="#DD6622"><u><b>Kommentar:</td></b></u><td><font face color="#DD6622">'.$row['text'].'</td></tr></table><br>';
}
}
if($abgeschickt==2) {
echo "<br>Danke für deinen Kommentar!<br>";
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$sql="SELECT * FROM ".$tabellenname." ORDER BY ID DESC";
$ausgabe=mysql_query($sql);
while($row=mysql_fetch_assoc($ausgabe)) {
echo '<div style="text-align:center;"><table border="0" text="#DD6622"><tr><td><u><b><font face color="#DD6622">Geschrieben von:</td></b></u><td><font face color="#DD6622">'.$row['nickname'].'</td></tr>';
echo '<br><u><b><tr><td><font face color="#DD6622"><u><b>Kommentar:</td></b></u><td><font face color="#DD6622">'.$row['text'].'</td></tr></table><br>';
}
}
?>
</div>
</font>
</body>
</html>
Hello,
so, jetzt habe ich es geschafft, dass die ganzen Fehlermeldungen weg sind:
http://schwarzwaldelche.sc.funpic.de/index51.php
Ich habe jetzt jedoch das Problem, dass es trotzdem noch nicht geht.
Du hast vor allem das Problem, dass Du die Hinweise nicht berücksichtigt hast und den Code rund um die Datenbankzugriffe immer noch nicht angepasst hast.
versuche,
Liebe Grüße aus dem Cyberspace
Tom vom Berg
hi,
als ich gerade dabei war, deine tipps umzusetzen, ist mir aufgefallen - dass das "gästebuch" bei einigen funktioniert - bei anderen nicht. Weißt du an was das liegen könnte?
Hi,
$nickname=$_POST['nickname'];
$text=$_POST['text'];
mysql_connect(HOST,USER,PW);
mysql_select_db(DB);
$ip = getenv("REMOTE_ADDR");
$sql="INSERT INTO ".$tabellenname."(nickname,text,ip) VALUES('$nickname','$text','$ip')";
mysql_query($sql);
unset($sql);
Du schreibst User-Eingaben ohne sie zu überprüfen in das Sql-Query und lässt dieses dann ausführen. Das ist grob fahrlässig. Informiere dich zum Thema SQL-Injection.
Ich würde dieses Script lieber schnell wieder von deiner Webseite nehmen, solange du das nicht ausgebessert hast, sonst zerschießt dir noch jemand deine Datenbank.
mfG,
steckl