Hallo ich habe vor kurzem PHP gelernt und einfach mal zur Übung ein Gästebuch geschrieben.
Wär schön, wenn ihr euch das mal anguckt und mir sagt, wie ihr es findet und ob es Fehlerfrei ist.
sry, dass es so unstrukturiert aussieht ich hoffe ihr werdet euch trotzdem die Mühe machen es zu lesen.
Wär schön, wenn ihr euch das mal anguckt und mir sagt, wie ihr es findet und ob es Fehlerfrei ist.
PHP-Code:
$mail = $_POST["mail"]; //Abfragen der email-Adresse
$hp = $_POST["hp"]; //Abfragen der Homepage
$eint = $_POST["eintrag"]; //Abfragen des Eintrages
$datum = date("d|m|Y|H|i"); //Abfragen des Datums
$zeitjetzt = explode("|",$datum);//Zerlegen des Datums zum Vergleich mit auf Datenbang gespeicherten Daten
$ip = "$REMOTE_ADDR"; //Abfragen der ip-Adresse zum Vergleich mit auf Datenbang gespeicherten ip-Adressen
$connect = mysql_connect("localhost","username","pass") or die ("fehler beim verbinden"); //Verbindung mit mysql-Server herstellen
mysql_select_db("73621") or die ("datenbank nicht gefunden"); //Auswählen einer mysql-Datenbank
$i; //setzen der Variable i, später wichtig für Spamschutz
$err1; //
$err2; //Setzen der error-Variablen.
$err3; //Werden für Farbliche Hervorhebung von Textfeldern,
$err4; //um Spam zu verhindern und um zu überprüfen ob alle Pflichtfelder ausgefüllt wurden benötigt.
$err5; //
$err1Info; //
$err2Info; //Setzen der error-info-Variablen um den User zu informieren, was er falsch gemacht hat
$err3Info; //und um diese Information auszugeben.
$err4Info; //
$err5Info; //
if($name==""){ //
$err1 = "border:2px solid red;"; //
$err1Info = "Das Feld \"Name\" ist ein Pflichtfeld! Bitte füllen sie es aus."; //
} //Überprüfen ob alle Pflichtfelder aus-
if($mail==""){ //gefüllt wurden und abändern der error-
$err2 = "border:2px solid red;"; //und error-info-variablen.
$err2Info = "Das Feld \"eMail\" ist ein Pflichtfeld! Bitte füllen sie es aus."; //
} //
if($eint==""){ //
$err4 = "border:2px solid red;"; //
$err4Info = "Das Feld \"Eintrag\" ist ein Pflichtfeld! Bitte füllen sie es aus."; //
} //
$sabfrage = "SELECT name,ip,datum FROM guestbook"; //
$ipdatumAbfragen = mysql_query($sabfrage); //abfrage von namen, ip und datum aus der Tabelle guestbook, gleichzeitige
while($row = mysql_fetch_object($ipdatumAbfragen)){ //einleitung des Spamschutzes
if($row->ip == $ip){ //Wenn die ip des Users gleich der gespeicherten ip einer Spalte aus der Tabelle guestbook ist:
$i++; //wird i um 1 erhöht
$zeitdbvar = $row->datum; //und das Datum aus der selben Splte wird in der Variable zeitdbvar gespeichert
$zeitdb = explode("|",$zeitdbvar); //um dann als array in der Variable zeitdb gespeichert zu werden.
if($zeitdb[0] == $zeitjetzt[0] && $zeitdb[1] == $zeitjetzt[1] && $zeitdb[2] == $zeitjetzt[2] && $zeitdb[3] == $zeitjetzt[3]){ //Nun wird überprüft, ob das zerlegte heutige Datum in der Variable zeitjetzt dem in der Spalte gespeicherten Zeit entspricht. Dies wird auf die Stunde genau gemacht.
$zeitdbplus5 = $zeitdb[4] + 5; //Dann wird die Minutenangabe der zerlegten Zeit aus der Datenbank mit 5 addiert und in der Variable zeitplus5 gespeichert.
if($zeitjetzt[4] < $zeitdbplus5 or $i == 5){ //Nun wird überprüft, ob die jetzige Minutenangabe um array zeitjetzt kleiner als die um 5 erhöhte Minutenangabe aus der Datenbank im array zeitplus5 ist.
$err5 = "1"; //wenn das der Fall ist wird die error-variable auf 1 , damit sie nicht "" ist
$err5Info = "Sie dürfen nur einen Eintrag in fünf Minuten und fünf Einträge am Tag machen."; //und die info zu dieser error-Variable gesetzt
}
}
}
}
echo "<form action=\"index.php?id=guestbooksende\" method=\"post\" name=\"gb\">
<table>
<tr>
<td>Name:</td><td><input type=\"text\" name=\"name\" value=\"$name\" style=\"$err1\"></td>
</tr>
<tr>
<td>email:</td><td><input type=\"text\" name=\"mail\" value=\"$mail\" style=\"$err2\"></td>
</tr>
<tr>
<td>Homepage:</td><td><input type=\"text\" name=\"hp\" value=\"$hp\" style=\"$err3\"></td>
</tr>
<tr>
<td>Eintrag:</td><td><textarea name=\"eintrag\" style=\"$err4\" cols=\"20\" rows=\"3\">$eint</textarea>
</tr>
<tr>
<td><input type=\"submit\" value=\"absenden\"></td>
</tr>
<tr>
<td colspan=\"2\">
<b>
<font color=\"red\">"; //dann wird das Gästebuchformular erneut ausgegeben, aber diesmal werden die Pflichfelder, die nicht ausgefüllt wurden rot markiert
if($err1 != ""){ //
echo $err1Info."<br>"; //
} //
if($err2 != ""){ //
echo $err2Info."<br>"; //
} //und die entsprechenden error-Informationen in roter Schrift
if($err3 != ""){ //ausgegeben.
echo $err3Info."<br>"; //
} //
if($err4 != ""){ //
echo $err4Info."<br>"; //
} //
if($err5 != ""){ //
echo $err5Info."<br>"; //
} //
if($err1=="" && $err2=="" && $err3=="" && $err4=="" && $err5=="") { //Jetzt wird überprüft, ob alle error-Variablen leer sind und, wenn das der Fall ist,
$eintrag="INSERT INTO guestbook (name,email,homepage,nachricht,ip,datum) VALUES ('$name','$mail','$hp','$eint','$ip','$datum')";//in die Datenbang als neue Spalte eingetragen.
$write= mysql_query($eintrag);
echo "Eintrag geschrieben!"; //zum Schluss wir dem user gesagt, das sein Eintrag geschrieben wurde.
}
//dann werden noch die schließenden HTML-Tags ausgegeben.
echo" </font>
</b>
</td>
</tr>
</table>
</form><hr>";
$abfrage = "SELECT * FROM guestbook ORDER BY id DESC"; //Am Ende werden alle Spalten aus der mysql-Datenbank abgefragt und in einer
$abfragen = mysql_query($abfrage); //Tabelle ausgeben.
echo "<table cellpadding=\"0\" cellspacing=\"0\">";
while($row = mysql_fetch_object($abfragen)){
$zeitdbvar = $row->datum;
$zeitdb = explode("|",$zeitdbvar);
echo "
<tr>
<td align=\"left\" style=\"background:#80C9FF;width:160px;height:20px\">$row->name</td>
<td align=\"right\" style=\"background:#80C9FF;width:430px;height:20px\">$zeitdb[0].$zeitdb[1].$zeitdb[2] - $zeitdb[3]:$zeitdb[4]</td>
</tr>
<tr>
<td style=\"background:gray;width:160px;font-size:11px;\">eMail:<br>$row->email<p>Homepage:<br>$row->homepage</td>
<td style=\"padding:5px;\" align=\"left\" valign=\"top\">$row->nachricht</td>
</tr>";
}
echo "</table>";
?>

Kommentar