Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 20. Dezember 2010 20:26
- faglork
- arbeitet mit CMS/ms
- Ort: Fränkische Schweiz
- Registriert: 15. Dezember 2010
- Beiträge: 1.152
- Webseite
E-Mail verschlüsseln
Moin moin!
E-Mail-Adresssen hexadezimal verschlüsseln - gabs da nicht mal ein Tag dafür? Ich find nix in der aktuellen Liste. Und in der Forge gibts nur veraltete Sachen.
Hat jemand nen Tipp?
Servus
Alex
Offline
#2 20. Dezember 2010 20:31
- kasimir
- Gast
Re: E-Mail verschlüsseln
mit {mailto encode='hex' address='ich@du.de'} wird die mailadresse "verschlüsselt".
Kasimir
#3 20. Dezember 2010 20:46
- piratos
- Gast
Re: E-Mail verschlüsseln
#4 20. Dezember 2010 20:55
- spike
- hat von CMS/ms gehört
- Registriert: 04. Dezember 2010
- Beiträge: 6
Re: E-Mail verschlüsseln
kannscht auch ein text="parameter" dazu fügen
{mailto address="anallehexe@t-online.de" encode="hex" text="voodoo"}
gruss - spike
Offline
#5 20. Dezember 2010 21:26
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: E-Mail verschlüsseln
Ich nutze dazu jeweils einen Prefilter:
Datei prefilter.mailsecure.php (ab CMSMS 1.11):
<?php
function smarty_prefilter_mailsecure($tpl_source, &$smarty)
{
return encrypt_content_email($tpl_source);
}
function fm_cryptmail($email){
$n = 0;
$r = '';
$s = $email;
for($i=0; $i < strlen($s); $i++){
$n = ord($s[$i]);
if($n >= 8364){
$n = 128;
}
$r .= chr($n+1);
}
return $r;
}
function encrypt_content_email($content) {
// Attribute, ggf. aendern
$atzeichen = "(at)"; // Ersatzzeichen fuer das @
// hier via regEx alle email-adressen heraussuchen
preg_match_all("/(mailto:)?([a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum))/im",$content,$matches);
// hier jetzt alle gefundenen durchgehen und ersetzen
if ( isset ($matches[0][0]) and $matches[0][0] != '') {
for ($m = 0; $m < count ($matches[0]); $m++) {
$mystring = $matches[0][$m];
$findme = 'mailto:';
$pos = strpos($mystring, $findme);
$encrypted_email_address = "";
if ($pos === false) {
$encrypted_email_address .= str_replace("@",$atzeichen,$mystring);
} else {
$encrypted_email_address .= "javascript:linkTo_UnCryptMailto('{literal}".fm_cryptmail($mystring)."{/literal}')";
}
$content = str_replace($matches[0][$m],$encrypted_email_address,$content);
}
}
return $content;
}
Diese wird im Plugin-Ordner gespeichert.
Nun braucht es im Template folgendes JavaScript:
function UnCryptMailto(s)
{
var n = 0;
var r = "";
for( var i = 0; i < s.length; i++) {
n = s.charCodeAt( i );
if( n >= 8364 ) {
n = 128;
}
r += String.fromCharCode( n - 1 );
}
return r;
}
function linkTo_UnCryptMailto( s )
{
location.href=UnCryptMailto( s );
}
Der Vorteil dieser Lösung ist, dass die E-Mailadressen automatisch maskiert werden und der Benutzer bei der Eingabe im Backend keine kryptischen Smarty Funktionen für E-Mailadressen verwenden muss
Edit 28.3.2014 - Script angepasst
Beitrag geändert von nockenfell (28. März 2014 08:45)
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#6 17. Oktober 2012 14:54
- faglork
- arbeitet mit CMS/ms
- Ort: Fränkische Schweiz
- Registriert: 15. Dezember 2010
- Beiträge: 1.152
- Webseite
Re: E-Mail verschlüsseln
Habs jetzt so gelöst:
a) Im "Benutzerdefinierte Listenfeld" des TinyMCE folgende Zeilen ergänzen:
---|---
Email schützen|{mailto address="|" encode="hex"}
b) Mail-Adresse eingeben und markieren
c) Auf den Eintrag im Listenfeld klicken
Fertsch ...
Servus,
Alex
Offline
#7 26. März 2014 23:34
- ampelmann
- probiert CMS/ms aus
- Registriert: 24. Januar 2012
- Beiträge: 35
Re: E-Mail verschlüsseln
Ich nutze dazu jeweils einen Prefilter:
.....
Der Vorteil dieser Lösung ist, dass die E-Mailadressen automatisch maskiert werden und der Benutzer bei der Eingabe im Backend keine kryptischen Smarty Funktionen für E-Mailadressen verwenden muss
@Nockenfell: Das Ding funktioniert bei mir nicht, wenn ich an letzer Stelle der Mailadresse ein z habe z.b. Holz@hotmail.com. Kannst Du das bei Dir nachvollziehen?
LG.
Ampelmann
Offline
#8 26. März 2014 17:23
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: E-Mail verschlüsseln
Kurz geänderte Funktion des Smarty Plugins:
<?php
function smarty_prefilter_mailsecure($tpl_source, &$smarty)
{
return encrypt_content_email($tpl_source);
}
function fm_cryptmail($email){
$n = 0;
$r = '';
$s = $email;
for($i=0; $i < strlen($s); $i++){
$n = ord($s[$i]);
if($n >= 8364){
$n = 128;
}
$r .= chr($n+1);
}
return $r;
}
function encrypt_content_email($content) {
// Attribute, ggf. aendern
$atzeichen = "(at)"; // Ersatzzeichen fuer das @
// hier via regEx alle email-adressen heraussuchen
preg_match_all("/(mailto:)?([a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum))/im",$content,$matches);
// hier jetzt alle gefundenen durchgehen und ersetzen
if ( isset ($matches[0][0]) and $matches[0][0] != '') {
for ($m = 0; $m < count ($matches[0]); $m++) {
$mystring = $matches[0][$m];
$findme = 'mailto:';
$pos = strpos($mystring, $findme);
$encrypted_email_address = "";
if ($pos === false) {
$encrypted_email_address .= str_replace("@",$atzeichen,$mystring);
} else {
$encrypted_email_address .= "javascript:linkTo_UnCryptMailto('".fm_cryptmail($mystring)."')";
}
$content = str_replace($matches[0][$m],$encrypted_email_address,$content);
}
}
return $content;
}
Kannst du das mal testen?
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#9 27. März 2014 21:26
- ampelmann
- probiert CMS/ms aus
- Registriert: 24. Januar 2012
- Beiträge: 35
Re: E-Mail verschlüsseln
Kurz geänderte Funktion des Smarty Plugins:
...
Kannst du das mal testen?
Habe ich gemacht aber keine Verbesserung.
Hilft das weiter? Der Fehler kommt nicht bei Umwandlung einer Mailadresse wie xyz(at)irgendwo.com sondern nur bei der Umwandlung des href-Elements:
Error: at line 709 in file pfadname/content/lib/smarty/sysplugins/smarty_internal_templatecompilerbase.php
<a href="javascript:linkTo_UnCryptMailto('", expected one of: "}" , " " , ATTR
Offline
#10 28. März 2014 08:44
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: E-Mail verschlüsseln
Danke für die Präzisierung: Hier das aktualisierte Plugin
Datei prefilter.mailsecure.php (ab CMSMS 1.11):
<?php
function smarty_prefilter_mailsecure($tpl_source, &$smarty)
{
return encrypt_content_email($tpl_source);
}
function fm_cryptmail($email){
$n = 0;
$r = '';
$s = $email;
for($i=0; $i < strlen($s); $i++){
$n = ord($s[$i]);
if($n >= 8364){
$n = 128;
}
$r .= chr($n+1);
}
return $r;
}
function encrypt_content_email($content) {
// Attribute, ggf. aendern
$atzeichen = "(at)"; // Ersatzzeichen fuer das @
// hier via regEx alle email-adressen heraussuchen
preg_match_all("/(mailto:)?([a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum))/im",$content,$matches);
// hier jetzt alle gefundenen durchgehen und ersetzen
if ( isset ($matches[0][0]) and $matches[0][0] != '') {
for ($m = 0; $m < count ($matches[0]); $m++) {
$mystring = $matches[0][$m];
$findme = 'mailto:';
$pos = strpos($mystring, $findme);
$encrypted_email_address = "";
if ($pos === false) {
$encrypted_email_address .= str_replace("@",$atzeichen,$mystring);
} else {
$encrypted_email_address .= "javascript:linkTo_UnCryptMailto('{literal}".fm_cryptmail($mystring)."{/literal}')";
}
$content = str_replace($matches[0][$m],$encrypted_email_address,$content);
}
}
return $content;
}
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#11 29. März 2014 23:50
- ampelmann
- probiert CMS/ms aus
- Registriert: 24. Januar 2012
- Beiträge: 35
Re: E-Mail verschlüsseln
Prima, nun läuft es.
Dankeschön für Deine Hilfe.
LG. Ampelmann
Offline
#12 23. Mai 2014 13:43
- COR9
- Server-Pate
- Ort: Dresden
- Registriert: 09. November 2010
- Beiträge: 281
Re: E-Mail verschlüsseln
@nockenfell
Lasst sich Deine Lösung auch für News-/CGBlog-Artikel realisieren? Hier ist sie für Varianten, die den Seiten-Content ersetzen, leider unwirksam. Habe auch schon probiert, das JS ganz oben ins News-Template zu packen anstatt ins Seitentemplate.
Offline
#13 23. Mai 2014 20:04
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: E-Mail verschlüsseln
Du kannst die Funktion in einen Modifier umbauen:
modifier.mailsecure.php --> ins ./plugin Verzeichnis
<?php
function smarty_modifier_mailsecure($tpl_source)
{
return encrypt_content_email($tpl_source);
}
function fm_cryptmail($email){
$n = 0;
$r = '';
$s = $email;
for($i=0; $i < strlen($s); $i++){
$n = ord($s[$i]);
if($n >= 8364){
$n = 128;
}
$r .= chr($n+1);
}
return $r;
}
function encrypt_content_email($content) {
// Attribute, ggf. aendern
$atzeichen = "(at)"; // Ersatzzeichen fuer das @
// hier via regEx alle email-adressen heraussuchen
preg_match_all("/(mailto:)?([a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4}|museum))/im",$content,$matches);
// hier jetzt alle gefundenen durchgehen und ersetzen
if ( isset ($matches[0][0]) and $matches[0][0] != '') {
for ($m = 0; $m < count ($matches[0]); $m++) {
$mystring = $matches[0][$m];
$findme = 'mailto:';
$pos = strpos($mystring, $findme);
$encrypted_email_address = "";
if ($pos === false) {
$encrypted_email_address .= str_replace("@",$atzeichen,$mystring);
} else {
$encrypted_email_address .= "javascript:linkTo_UnCryptMailto('{literal}".fm_cryptmail($mystring)."{/literal}')";
}
$content = str_replace($matches[0][$m],$encrypted_email_address,$content);
}
}
return $content;
}
Der Aufruf erfolgt wie folgt:
{$entry->content|mailsecure}
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
Seiten: 1