# Eintrag ins Gästebuch: Wie kann ich einen bestimmten Besucher (Email) sperren?



## Tangstedt (25. Juli 2007)

Ich habe das Freeware Gästebuch (gaestebuch.zip) von http://mylittlehomepage.net auf einer Kundenseite installiert. Ein prima Tool, das sogar einen einfach Spamschutz hat.

Mein Problem: Ein spezieller User macht jeden Tag unerwünschte Einträge. Kann ich ausgewählte User (ich habe ja die Email-Adresse) vom Eintrag sperren? Wenn ja, wie?

Ich habe leider keine Ahnung von PHP und bin schon stolz darauf, das Gästebuch an die Gegebenheiten der Seite angepasst zu haben.

Wenn es also irgendwie möglich ist, hätte ich gern einen Codeschnipsel, den ich einbinden kann.

Vielen Dank für eure Mühe

Karin


----------



## Iches (25. Juli 2007)

Du kannst natürlich sowas hier machen:


```
if($_POST[email]!="foo@bar.com") 
{
// Eintragen in die Datenbank
]
```

Nur derjenige kann natürlich seine E-Mail Adresse ändern, sowiso seinen Namen usw.


----------



## Jan Seifert (25. Juli 2007)

Evtl. hilft dir dieser Schnipsel weiter, ob er besonders elegant ist, weiß ich nicht, ist zu spät für sowas 


```
// Die Funktion kannst du dir irgendwohin weg schreiben,
// wo du leicht wieder ran kommst. Dann kannst du die 
// Adressen leicht bearbeiten
function checkNoneValidEmail($input)
{
    $noneValidEmail = array(
                            // Hier kannst du beliebig viele E-Mail Adressen hinzufügen,
                            // getrennt durch ein Komma (,)
                            "meine@email.de",
                            "deine@email.de"
                            );
    // Hier wird geprüft, ob die E-Mail Adresse auf der Liste
    // steht, und der Eintrag geblockt werden "muss"
    if(array_keys($noneValidEmail,$input)) return false;
    else return true;
}
// Und beim wegschreiben des Beitrag
// kannst du über diese IF-Abfrage prüfen,
// ob die E-Mail zugelassen wird, oder nicht
if(checkNoneValidEmail("unsere@email.de"))
{
    // Eintrag in die Datenbank
}
```


----------



## Dr Dau (25. Juli 2007)

Hallo!

Vom sperren der Mail-Adresse wird er sich wohl kaum abhalten lassen.
Wie Iches schon gesagt hat, kann er sich eine neue Adresse zulegen (wenn er nicht eh schon mehrere hat) und dann ungehindert weitermachen.
Vermutlich hat er auch keine feste IP, es bringt also auch nichts die IP zu sperren.

Du (bzw. Dein Kunde) könntest ihn aber abmahnen.
Eine Mail (Adresse ist ja bekannt) währe der erste Schritt.
Schreibt ihm dass er es künftig unterlassen soll Einträge in das Gästebuch vorzunehmen.
Andernfalls werdet ihr weitere Schritte gegen ihn vornehmen.
Ein Hinweis dass seine IP (inkl. dem Zeitpunkt) gespeichert wird und diese ggf. für Ermittlungszwecke herangezogen wird, rundet die ganze Sache noch ab.

Gruss Dr Dau


----------



## Tangstedt (27. Juli 2007)

Bin immer noch an dem Thema dran.

Wie jetzt festgestellt habe, gibt der Typ ungültige emails an (wildes Kauderwelsch mit einem et-Zeichen drin). Ich kann ihn also auch nicht persönlich anschreiben und ihn nur übers Gästebuch abmahnen.

Das finde ich wenig elegant, weil dann ja viele mitlesen.

Kann ich so was implementieren wie einen Bestätigungscode?  D.h. Der Eintrag ins Gästebuch wird erst gespeichert, wenn die Leute einen Link bestätigt haben, der an ihre gültige email geschickt wurde?

Das würde die Einträge auch nicht verhindern, aber ich hätte zumindest eine gültige Email. Der Typ und seine Frau schreiben einfach beleidigendes Zeug gegen die Website-Besitzerin rein. Ich lösche die Beiträge inzwischen kommentarlos raus, sitze aber nicht 24 Stunden vor dem Gerät.

Meine Hoffnung ist, dass die einfach aufgeben, wenn die Beiträge schnell genug rausgelöscht werden. Lieber wäre mir aber irgendeine Form der Überprüfung.

Ich danke euch für eure Hilfe


----------



## andy72 (27. Juli 2007)

Gibt da noch die Möglichkeit, die Mail-Domain per checkdnserr() zu testen. erst, wenn sie existiert lässt du den Eintrag zu. Damit ist zumindest mal sichergestellt, dass er einen Account auf einem GÜLTIGEN Mailserver hat.

Einen Bestätigungscode kannst du eigentlich nur in form eines Captcha einbauen, hierzu gibt es bereits fertige (kostenlose) Scripte. Dies ermöglicht Deinem GB nicht zugespamt zu werden von Bots, die die Server aufsuchen um dort Müll zu hinterlassen.

LG
Andy


----------



## Dr Dau (27. Juli 2007)

Ein Bestätigungslink (nicht Bestätigungscode) währe eine Möglichkeit.
Ich meine dass es dazu hier schon Beispiele gibt.
Allerdings müssen dann alle den Bestätigungslink anklicken..... was sich u.U. negativ auf die Anzahl der Gästebucheinträge auswirken könnte.

@andy72, eigentlich kann man sich die Arbeit mit checkdnserr() sparen.
Damit wird ja nur geprüft ob die Domain existiert..... aber nicht wem sie gehört.
Mit anderen Worten: es bringt garnichts wenn der Typ eine "geklaute" Mailadresse verwendet. 
Von Mailadressen bei GMX & Co. mal ganz abgesehen.


----------



## andy72 (27. Juli 2007)

Stimmt ...an geklaute Adressen hab ich gerade ned gedacht 
ABER: es gab doch in PHP 'ne Funktion,die den MX-Record holt, oder ? *im Gehirn rumsuch* ...damit wäre ja zumindest mal sicher, dass die Domain eine Mail-Domain ist und nix generiertes von einem Bot - die nehmen ab und zu auch gerne mal ne komplette Fake-Adresse


----------



## Dr Dau (27. Juli 2007)

Keine Ahnung ob es solch eine PHP-Funktion gibt.
Würde aber auch nicht wirklich etwas bringen, denn wie schon gesagt könnte er ja eine "geklaute" Mail-Adresse verwenden.
Es gibt im Internet ja genug Seiten die z.b. ein Impressum haben, an eine gültige Mail-Adresse zu kommen ist also kein Problem.


----------



## Flex (27. Juli 2007)

Es gibt die Funktion [phpf]getmxrr[/phpf] allerdings sagt php.net selbst:



> Note:  This function should not be used for the purposes of address verification. Only the mailexchangers found in DNS are returned, however, according to » RFC 2821  when no mail exchangers are listed, hostname  itself should be used as the only mail exchanger with a priority of 0.



Von daher würde ich davon auch eher Abstand halten.
Den Bestätigungscode per E-Mail für ein Gästebuch fände ich auch etwas übertrieben.

Gegen menschliche Spammer kann man leider wenig unternehmen, da diese mit ein wenig Wissen und Verständnis so gut wie jede Sperre umgehen können.
Das einzige was du machen könntest, ist eine Liste anlegen mit IP und genauem Zeitpunkt des Zugriffs und einen Rechtsanwalt das ganze zu übergeben, wenn es wirklich Spam ist.


----------



## Dr Dau (27. Juli 2007)

Es ist ja kein Spam, sondern beleidigender Text.
Ich kenne den Inhalt ja nicht, aber evtl. würden hier Dinge wie Beleidigung, üble Nachrede, Geschäftsschädigung (wenn es sich um eine Firma handelt) usw. greifen.
Die IP und der Zeitpunkt werden bereits vom Gästebuch erfasst.
Er müsste sich diese Daten für die betroffenen Beiträge also nur raussuchen.
Bevor Beiträge gelöscht werden, sollte aber unbedingt eine Beweissicherung (z.b. Screenshots) stattfinden.
Um so mehr Beweise/Zeugen man hat, um so besser. 
Schliesslich muss, wenn es denn vor Gericht kommen sollte, der Richter auch die Schwere der vorgeworfenen Tat beurteilen können um danach die Höhe der Strafe festlegen zu können.


----------



## Tangstedt (27. Juli 2007)

Hmmm, ich bin in dieser Sache wirklich ratlos. Ich kann das Gästebuch natürlich ganz entfernen - so lange, bis die Leute es aufgegeben haben.

Die Beleidigungen und Anfeindungen hören leider nicht auf. Alle halbe Stunde muss ich eine Mail entfernen. Ich will mich eigentlich auch nicht herablassen, darauf zu antworten.

Ich kann ihnen leider nicht persönlich antworten, da sie weder ihren Namen, noch ihre Email nennen. Deshalb die Idee mit der IP.

@Dr. Dau: du schreibst, dass die IP ausgelesen und gespeichtert wird. Wo?

Muss ich php explizit auffordern, diese Daten zu sichern? Ich weiß, dass ich mir die IP bei der Verwendung von Formularen anzeigen lassen kann. Aber die habe ich natürlich nicht als php code sondern als Formular, generiert von Frontpage.

Da diese Leute aber feige sind, wäre ein Bestätigungslink sicher schon ein kleine Hürde. Dass es dann auch weniger Einträge ins Gästebuch gibt, würde weniger stören, als die unsäglichen Anfeindungen.

Kann mir bitte jemand sagen, welchen Code ich eingeben muss, um mit jedem Eintrag die entsprechenden Daten zu sichern?

Danke, dass ihr euch so viel Mühe gebt!
Karin


----------



## Michael Engel (27. Juli 2007)

Du kannst auch das Gästebuch auf moderiert umbauen, das jeder Post erst freigeschaltet werden muss. Vielleicht würden sie dann aufhören weil es eh keiner Liest?


----------



## Dr Dau (27. Juli 2007)

Tangstedt hat gesagt.:


> @Dr. Dau: du schreibst, dass die IP ausgelesen und gespeichtert wird. Wo?


In der "guestbook.dat". 
Die Datei kannst Du Dir mit jedem Editor (z.b. Notepad) ansehen.


----------



## Tangstedt (27. Juli 2007)

@ Dr. Dau: He, das ist genial. Hab mir die Guestbook.dat gleich gespeichert. Die entsprechenden Leute (heute allein 12 Einträge) haben immer die gleiche IP.

Kann mir jetzt bitte jemand sagen, wie ich (Code ) die IP im script erfasse und entsprechend sperren kann. 

Vielen vielen Dank

Karin


----------



## andy72 (28. Juli 2007)

Im PHP findest Du die IP des Users in der Variable $_SERVER['REMOTE_ADDR']
das datum mit date("Y-m-d H:i:s") und das speicherst Du wahlweisein einer Datenbank oder in einer Datei mit folgendem Code:

```
$fp = fopen("gblog.txt", "a+");
fwrite($fp, date("d.m.Y H:i:s")." Uhr: ".$_SERVER['REMOTE_ADDR']."\n");
fclose($fp);
```

LG
Andy


----------



## Watusimann (28. Juli 2007)

Hallo Karin,

Das wäre das gleiche Prinzip wie mit den Mailadressen. Die bereits vorhandene function von Herrn Seifert muß nur etwas umgeschrieben werden.

```
function checkBadIP($input)
{
    $badIP = array(
                            // Hier kannst du beliebig viele IP hinzufügen,
                            // getrennt durch ein Komma (,)
                            "xx.xxx.x.x....",
                            "xxxx.x.x...xx..."
                            );
    // Hier wird geprüft, ob dieIP auf der Liste
    // steht, und der Eintrag geblockt werden "muss"
    if(array_keys($badIP,$input)) return false;
    else return true;
}
// Und beim wegschreiben des Beitrag
// kannst du über diese IF-Abfrage prüfen,
// ob die IP zugelassen wird, oder nicht
$ip = $_SERVER['REMOTE_ADDR']; // <- Die IP des Eintragenden
if(checkBadIP($ip))
{
    // Eintrag in die Datenbank
}  

/* Um kein Ärger zubekommen ... die Ursprungs-Funktion stammt von Jan Seifert und wurde verändert - Ist also nicht mein Gedankengut */
```


----------



## Acriss (28. Juli 2007)

Wie wärs, wenn du einen Filter einbaust, jeder Post, der ein Schimpfwort o.ä. enthält, wird automatisch nicht gepostet.
Würde das deine Probleme lösen?


----------



## Flex (28. Juli 2007)

Ein solcher Filter wird momentan von daddz und fanste programmiert und ist um einiges schwerer als du dir das vorstellst.
Eine einfache Blacklist kann nämlich bereits durch ein Leerzeichen oder ein Sternchen umgangen werden.

FaDz Filter


----------



## Acriss (28. Juli 2007)

Ist mir bewusst,
aber man kann diese ja mit ein Programmieren^^


----------



## Jan Seifert (28. Juli 2007)

Watusimann hat gesagt.:


> Hallo Karin,
> 
> Das wäre das gleiche Prinzip wie mit den Mailadressen. Die bereits vorhandene function von Herrn Seifert muß nur etwas umgeschrieben werden.


Zwangsweise kurz Offtopic:
a) Darfst du mich gerne Jan nennen.
b) Wird es sicher kein Ärger geben, und solche "Quellenangaben" müssen bei mir sicher nicht sein, sonst kann man den schlechten Code noch nachverfolgen


----------



## Watusimann (28. Juli 2007)

[ OFF ] Hallöchen Jan  [ /OFF ]

Zum Thread... Die Sperrung der IP würde nur funktionieren, wenn der Eintragende eine feste IP hat. Sollte nach 24 Std. der Eintragende eine neue IP erhalten, ist diese Variante unwirksam. Dann könnte man auf das BAD-WORDS-Project zurück greifen. Wäre meines Erachtens nach die beste Idee.


----------



## Tangstedt (28. Juli 2007)

Hallo Leute,

habe das Skript von Watusimann/Jan eingebaut - und es funktioniert wunderbar! 
Der Typ hatte gleich heute früh die erste Mail drin und gestern nacht 24.00 Uhr die letzte. die IP-Adressen von gestern abend und heute früh waren gleich. Wollen wir doch hoffen, dass das so bleibt!

Ich habe ihn übrigens nicht einfach gesperrt, sondern leite ihn zu http://www.******.com um 

Hätte zu und zu gern sein Gesicht gesehen...

Dann habe ich noch versucht, das Script in die index.html einzubauen und ihn daran zu hindern, die Seite überhaupt betreten zu können. Aber das funktioniert leider nicht.

Ich vermute mal, dass er erst etwas schreiben muss, um die IP zu hinterlegen

Kann ich, wenn ich die IP kenne, den User auf eine bestimmte meiner Seiten umleiten?
Ich dachte da z.B. an ein zweites Gästebuch, das nur er beschreiben kann, das auch nur er zu sehen bekommt.

Das würde ihn in dem Glauben lassen, seine Beiträge zu veröffentlichen. In Wahrheit liest das keiner. Nur ich. Und es würde ihn davon abhalten eine Lösung zu suchen, die Sperrung der IP zu umgehen...

Aber so bin ich schon mal total begeistert!

Vielen Dank
Karin

Edit von Jan: Link verfremdet


----------



## Jan Seifert (28. Juli 2007)

Ich weiß zwar nicht, wie genau du das Gästebuch lädst, aber falls du es per include machst, könntest du die Funktion so aufrufen:


```
if(checkBadIP($ip))
{
    include('richtigesGaestebuch.php');
}
else
{
    include('falschesGaestebuch.php');
}
```
Oder du schickst ihn mit einem [phpf]header[/phpf]-Befehl weiter:

```
if(checkBadIP($ip))
{
    header("Location: richtigesGaestebuch.php");
    die();
}
else
{
    header("Location: falschesGaestebuch.php");
    die();
}
```

PS: Den Link hab ich mal vorsorglich verfremdet


----------

