[HACK] Email Adressen kodieren um SPAM-Mails zu verhindern

Post Reply
User avatar
CrazyBread
Master Bludit
Posts: 73
Joined: Tue Jan 19, 2016 9:51 pm
Location: Germany
Has thanked: 4 times
Been thanked: 5 times
Contact:

Hallo zusammen,

Vorneweg: Reicht es, meine Beiträge nur im Deutschen Forum zu posten oder soll ich Änderungen / Plugins / Themes im
Englischen und Deutschen Bereich veröffentlichen? Diesen Beitrag habe ich nämlich auch im englischen Forum veröffentlicht.

Nun aber zum Thema:
Ich habe die Datei '[ROOT]/kernel/abstract/content.class.php' erweitert.

In der Funktion "content" rufe ich meine Funktion auf um die im Text enthaltenen Mailadressen zu finden und zu kodieren.

Code: Select all

Line 103 $content = $this->getField('content');
Line 104 $content = $this->htmlizeEmails($content);
Nachfolgend meine Mailadressen (einfach nach der Funktion "content" einfügen):

Code: Select all

	//Finds email addresses in content
	//Replace every email address with HTML-ASCII Code
	private function htmlizeEmails($text)
	{
		preg_match_all('/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})/', $text, $potentialEmails, PREG_SET_ORDER);

		$potentialEmailsCount = count($potentialEmails);
		for ($i = 0; $i < $potentialEmailsCount; $i++) {
			if (filter_var($potentialEmails[$i][0], FILTER_VALIDATE_EMAIL)) {
				$ascii_mail_address = $this->encode_email_address($potentialEmails[$i][0]);
				$text = str_replace($potentialEmails[$i][0], $ascii_mail_address, $text);
			}
	    	}
	    return $text;
	}

	//Encode a given string in HTML-ASCII
	private function encode_email_address($email)
	{
		$result = '';
		for ($i = 0; $i < strlen($email); $i++)
		{
			$result .= '&#'.ord($email[$i]).';';
		}
		return $result;
	}
Funktioniert wunderbar,
ich hoffe euch gefällt es und vielleicht schafft es das Feature in den Hauptcode.

Grüße,

CrazyBread
User avatar
Edi
Site Admin
Posts: 3121
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Has thanked: 54 times
Been thanked: 77 times
Contact:

Besser finde ich, etwas von allgemeinem Interesse im englischen Forum zu posten, vielleicht mit einem Hinweis hier im deutschen Forum auf den englischen Beitrag (wenn er beispielsweise längeren Code enthält). Einen kurzen Hinweis auf ein neues Plugin oder Theme kannst Du gerne hier wie dort posten.

Aber Du kannst das machen, wie es Dir beliebt.

Um etwas direkt zu besprechen, auch mit Diego, bietet sich der Chat bei Gitter an:

https://gitter.im/dignajar/bludit

Und: Danke für den Hack!
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
User avatar
CrazyBread
Master Bludit
Posts: 73
Joined: Tue Jan 19, 2016 9:51 pm
Location: Germany
Has thanked: 4 times
Been thanked: 5 times
Contact:

Ich habe inzwischen ein Plugin daraus gebastelt und bereits ein Pull Request abgesetzt.
User avatar
Edi
Site Admin
Posts: 3121
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Has thanked: 54 times
Been thanked: 77 times
Contact:

Danke! Werde ich gerne testen!
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
User avatar
CrazyBread
Master Bludit
Posts: 73
Joined: Tue Jan 19, 2016 9:51 pm
Location: Germany
Has thanked: 4 times
Been thanked: 5 times
Contact:

https://github.com/dignajar/bludit-plugins

>> encodemail

Ich freue mich jederzeit über Verbesserungsvorschläge.
Möglich wäre noch die Option, Email-Adressen automatisch in Links umzuwandeln.
User avatar
cbmainz
Jr. Bludit
Posts: 4
Joined: Thu Mar 03, 2016 10:00 am

Hi,

wie sehe ich denn, ob das Plugin funktioniert? Ich sehe, nach dem ich es aktiviert habe, keinen Unterschied.

Grüße
Christopher
Last edited by cbmainz on Thu Mar 03, 2016 10:23 am, edited 1 time in total.
User avatar
CrazyBread
Master Bludit
Posts: 73
Joined: Tue Jan 19, 2016 9:51 pm
Location: Germany
Has thanked: 4 times
Been thanked: 5 times
Contact:

Hi!

Schau in den Quellcode deiner Seite (Bei Chrome zum Beispiel rechtsklick >> "Seitenquelltext anzeigen")

Image
User avatar
cbmainz
Jr. Bludit
Posts: 4
Joined: Thu Mar 03, 2016 10:00 am

Ah, okay, danke. Dann geht es wohl.
Post Reply