Hallo zusammen
Ich habe wieder einmal ein kleineres Problem. Und zwar wird mein Gästebuch seit letzte Woche regelrecht zugespamt. Gestern abend habe ich die PHP-Datei gesperrt, ihr also nur das Recht "Lesen" erteilt. Heute morgen hatte ich über 14 Spameinträge. Es wurde mir also direkt in die Datenbank einträge geschrieben, ohne über die PHP-Seite zu gehen.
Mein Gästebuch ist folgendermassen aufgebaut:
ich habe eine PHP-Datei, welche auf eine Datenbank zugreift (bei mir ein .txt), in welcher die Gästebucheinträge gespeichert werden.
Kann ich die Datenbank irgendiwie verschlüsseln oder sonst irgend einen Schutz einbauen?
Wenn ihr die Seite anschauen wollt: Gästebuch
Hier noch der Code für das Gästebuch. Habe ich im Internet gefunden und ein bisschen abgeändert:
(habe ein paar Zeilen aus dem Code entfernen müssen, damit ich ihn posten konnte)
Ich habe wieder einmal ein kleineres Problem. Und zwar wird mein Gästebuch seit letzte Woche regelrecht zugespamt. Gestern abend habe ich die PHP-Datei gesperrt, ihr also nur das Recht "Lesen" erteilt. Heute morgen hatte ich über 14 Spameinträge. Es wurde mir also direkt in die Datenbank einträge geschrieben, ohne über die PHP-Seite zu gehen.
Mein Gästebuch ist folgendermassen aufgebaut:
ich habe eine PHP-Datei, welche auf eine Datenbank zugreift (bei mir ein .txt), in welcher die Gästebucheinträge gespeichert werden.
Kann ich die Datenbank irgendiwie verschlüsseln oder sonst irgend einen Schutz einbauen?
Wenn ihr die Seite anschauen wollt: Gästebuch
Hier noch der Code für das Gästebuch. Habe ich im Internet gefunden und ein bisschen abgeändert:
PHP:
<div id="inhalt_mitte">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gästebuch</title>
<script type="text/javascript">
function eingaben_ueberpruefen() {
if(document.eingabe.Name.value == "Name" || document.eingabe.Name.value.lenght < 4){
document.getElementById("Name").style.backgroundColor="#FFFFB9";
alert("Bitte geben Sie Ihren Namen ein!");
return false;
}
else if(document.eingabe.Email.value.length < 10 || document.eingabe.Email.value.indexOf ('@',0) == -1 || document.eingabe.Email.value.indexOf ('.',0) == -1){
document.getElementById("Email").style.backgroundColor="#FFFFB9";
alert("Bitte geben Sie eine gültige E-Mail-Adresse ein.");
return false;
}
else if(document.eingabe.Kommentar.value == "" || document.eingabe.Kommentar.value == "Kommentar" || document.eingabe.Kommentar.value.lenght < 10){
document.getElementById("Kommentar").style.backgroundColor="#FFFFB9";
alert("Bitte geben Sie einen Kommentar ein!");
return false;
}
else
return true;
}
</script>
<style type="text/css">
/* Hier können Sie Schriftgröße, Schriftart und Farbe einstellen */
.smilie_gesichtsfarbe{
background-color: #FFFF00;
}
.eingabe{ /*Eingabefelder definieren*/
border: solid 2px #C0C0C0;
}
.textfeld{ /*Textfeld*/
border: solid 2px #C0C0C0;
}
.button{ /*Buttons definieren*/
font-size: 14px;
font-weight: bold;
color: #0000FF;
background-color: #808080;
}
body, table{ /*Textfeld*/
font-family: Verdana, Arial;
font-size: 12px;
}
hr{ /*Abtrennung von Eingabe, Einträge und Seiten, Login*/
border: 0px;
border-top: solid 2px #FFFFFF;
border-bottom: solid 2px #FFFFFF;
margin: 10px 20px 10px 0px;
}
#gbook a{ /*Namen bei Einträge, Links */
font-family: Verdana, Arial, Sans-Serif;
font-size: 12px;
font-weight: bold;
text-decoration: None;
color: #FFFFFF;
}
#gbook a:visited{
color: #FFFFFF;
}
#gbook a:hover{
color: #FFFFFF;
text-decoration: none;
}
</style>
</head>
<body>
<h3><u>Gästebuch</u></h3>
<?php
# E-Mail-Adresse
$an = "[email protected]";
# Homepage-Name
$homepagename = "Harmonie Schwarzenburg";
# Einträge pro Seite
$Anzeige = 11;
?><h4><div id="gbook"><?php
if ($_POST){
// Variablen-Inhalt holen
$Name = $_POST[Name];
$Email = $_POST[Email];
$Kommentar = $_POST[Kommentar];
$Homepage = $_POST[Homepage];
// IP einlesen
$lgb = fOpen("gb_lastip.txt","r");
$gb_lip = fGets($lgb, 255);
fClose($lgb);
$ip = $_SERVER["REMOTE_ADDR"];
if (!empty($Name) && !empty($Email) && !empty($Kommentar) && $gb_lip != $ip){
// Kommentar filtern
$Kommentar = strip_tags(htmlentities(stripslashes(stripcslashes(trim($Kommentar)))));
$Kommentar = str_replace("\\r", "", $Kommentar);
$Kommentar = str_replace("\\n", "", $Kommentar);
$Kommentar = str_replace("|", "", $Kommentar);
$Name = strip_tags(htmlentities($Name));
$Name = str_replace("|", "", $Name);
if ($Homepage != ""){
$Homepage = " »<a href=\"http://$Homepage\" target=\"_blank\">$Homepage</a>";
}
// Eintrag zusammenstellen
$Eintrag = "» <a>$Name</a> - <small title=IP:$ip>" . date("d.m.Y/H:i") . "</small>$Homepage<br>$Kommentar|\n";
// Eintrag in GB schreiben
$Datei = fOpen("gaestebuch-daten.txt", "a+");
fWrite($Datei,$Eintrag);
fClose($Datei);
// E-Mail versenden
$betreff = "Gästebucheintrag: $homepagename";
@mail($an, $betreff, $Kommentar, "From: $Name <$Email>");
// Danke
echo "<p><strong>Vielen Dank $Name, für den Gästebuch-Eintrag.</strong></p>";
// IP speichern
$lgb = fOpen("gb_lastip.txt","w");
fPuts($lgb,"$ip");
fClose($lgb);
}
}
else{
?></div></h4>
<!-- ** Eingabefelder für Gästebuch ** -->
<form action="<?php echo $_SERVER['PHP_SELF'] ?>?seite=0" method="post" name="eingabe" onSubmit="return eingaben_ueberpruefen(this.form)">
<div style="position: absolute; top: 40px; left: 20px">
<h4><strong>Name:</strong></h4>
</div>
<div style="position: absolute; top: 50px; left: 120px">
<input type="text" size="50" name="Name" id="Name" class="eingabe" title="Name" onFocus="this.style.backgroundColor='#FFFFFF';"><br>
</div>
<div style="position: absolute; top: 75px; left: 20px">
<h4><strong>E-Mail:</strong></h4>
</div>
<div style="position: absolute; top: 85px; left: 120px">
<input type="text" size="50" name="Email" id="Email" title="E-Mail" class="eingabe" onFocus="this.style.backgroundColor='#FFFFFF';"><br>
</div>
<div style="position: absolute; top: 110px; left: 20px">
<h4><strong>Homepage:</strong></h4>
</div>
<div style="position: absolute; top: 120px; left: 120px">
<h4>
<i>http://</i><input type="text" size="42" name="Homepage" id="Homepage" title="Homepage" class="eingabe" onFocus="this.style.backgroundColor='#FFFFFF';"><small>(Optional)</small><br>
</h4>
</div>
<div style="position: absolute; top: 150px; left: 20px">
<h4>
<?php include("smilies/smilies.txt"); ?>
</h4>
</div>
<div style="position: absolute; top: 290px; left: 20px">
<h4><small>Um Missbrauch zu vermeiden, wird die IP-Adresse gespeichert.</small></h4><br><br>
<input type="reset" class="button">  
<input type="submit" value="Eintragen" class="button">
</div>
</form>
<br>
<div style="position: absolute; top: 400px; left: 20px" id="gbook"> <!-- Einträge ausgeben -->
<h4>
<?php
}
$a = 0; //Anzahl Seiten
$seite = ((isset($_GET["seite"])) ? $_GET["seite"] : 0); //Anfangsseite wenn nichts angeklickt wurde
// Einträge auslesen
$fp = fOpen("gaestebuch-daten.txt", "r");
$Inhalt = fRead($fp, filesize("gaestebuch-daten.txt"));
fClose($fp);
$Inhalt = explode("|", $Inhalt);
if (count($Inhalt) > 0){
$Inhalt = array_reverse($Inhalt);
$eintraege = count($Inhalt); $eintraege--;
echo "<hr><b>$eintraege</b> Einträge - Seite: ";
// Seitenlinks erstellen
for ($zaehler = 0; $zaehler < count($Inhalt); $zaehler = $zaehler + $Anzeige){
$a++;
echo "<a href=\"" .$_SERVER['PHP_SELF'] ."?seite=$zaehler\">" .(($zaehler == $seite) ?"<b>" .$a ."</b>" :$a) ."</a> \r";
}
echo "<hr>\r";
// GB-Ausgabe
for ($c = $seite; $c < ($seite + $Anzeige); $c++){
if (@$Inhalt[$c] != "" && $c > 0){
echo "<p>" . ($c) . " ";
echo ersetze_smilie($Inhalt[$c]);
}
}
}
<p> </p>
<hr>
</div>
<div align=center id="gbook" style="position: relative; left: 450px">
<a href="gaestebuch-editor.php">Login</a>
</div>
</body>
</html>
</div>