Willkommen in der Webstatt
User-1 am 02.09.06 14:49

guten taag.

also ich habe hier eine eigentlich simple antispamfunktion. weil ich die aber zum großteil kopiert habe (php4u) kenne ich mich eben nicht so genau damit aus.

ich möchte dass die funktion ausgibt : web [ät] statt [punkt] org

ausgegeben wird aber web@statt [punkt] org.

wie mache ich es richtig?

function no_spam($mail)
{
$str = "";
$a = unpack("C*", $mail[1]);
foreach ($a as $b)
$str .= sprintf("%%%X", $b);
$link = str_replace("@", " [ät] ", $mail[1]);
$link = str_replace(".", " [punkt] ", $mail[1]);
return "<a href=\"mailto:".$str."\">".$link."</a>";
}

netcup.de Warum gibt es hier Werbung?
User-2 am 02.09.06 14:54

ich würde das ganze direkt mit regexen machen

User-3 am 02.09.06 15:01

schwachsinn ;D das muss du nichts mit regexen machen...ist nur langsamer bei regexen

so sollte es gehn ;D
<?php
function no_spam($mail) {
$str = "";
$a = unpack("C*", $mail);
foreach ($a as $b) {
$str .= sprintf("%%%X", $b);
}

$link = str_replace(array("@","."),array( " [&auml;t] "," [punkt] "), $mail);

return "<a href=\"mailto:".$str."\">".$link."</a>";
}

print no_spam('web@statt.org');
?>

User-4 am 02.09.06 15:02

Anscheinend geht das "@" in deinem Zeichensatz unter.. :-\

Probier's mal mit chr(64), wobei 64 die dezimale Darstellung vom @ ist.

User-3 am 02.09.06 15:03

nein es war was genaz was anderes...er überschreibt $link nochmal ;)

$link = str_replace("@", " [ät] ", $mail[1]);
$link = str_replace(".", " [punkt] ", $mail[1]);


naja....du hast estmal kein array ;) und du überschreibst $link beim zweitenmal :D

User-1 am 02.09.06 15:35

& wie mach ich es jetzt richtig?

//edit ich habe es dann doch alleine hinbekommen..
function no_spam($mail)
{
$str = "";
$a = unpack("C*", $mail[1]);
foreach ($a as $b)
$str .= sprintf("%%%X", $b);
$mail[1] = str_replace(".", " [punkt] ", $mail[1]);
$link = str_replace("@", " [ät] ", $mail[1]);

return "<a href=\"mailto:".$str."\">".$link."</a>";
}

User-4 am 02.09.06 15:52

#
$link = str_replace("@", " [ät] ", $mail[1]);
#$link = str_replace(".", " [punkt] ", $mail[1]);
$link = str_replace(".", " [punkt] ", $link);


..und ich hab mich darauf verlassen, dasses ein funktionierendes PHP4U Schnipsel is *brr* :P

User-3 am 02.09.06 15:59

häh ich hab doch oben eine funktionierende version gepostet ;)

Quote
schwachsinn ;D das muss du nichts mit regexen machen...ist nur langsamer bei regexen

so sollte es gehn ;D
<?php
function no_spam($mail) {
$str = "";
$a = unpack("C*", $mail);
foreach ($a as $b) {
$str .= sprintf("%%%X", $b);
}

$link = str_replace(array("@","."),array( " [&auml;t] "," [punkt] "), $mail);

return "<a href=\"mailto:".$str."\">".$link."</a>";
}

print no_spam('web@statt.org');
?>


und xyz-145...das ist nicht aus php4u...zumindest nicht das ersetzen ;) der anfang schon und der funzt ja auch

User-5 am 02.09.06 16:28

darf ich es wagen eine grundsatz diskussion anzufagen ob es nicht besser wäre die mailaddy in ascii zeichen zu schreiben statt mit diesem [ät] und [dot] und so?

User-3 am 02.09.06 16:36

man muss die aber auch noch lesen können ;)

und sie wird ja ins hex format codiert *Fg*

User-6 am 02.09.06 16:53

Abgesehen davon sind diese ganzen versteckspielchen mit den Spambots sowieso sinnlos. Glaubt ihr wirklich, dass so ein Programm ein [ät] nicht als @ erkennt?

User-1 am 02.09.06 17:10

hm hast recht. wie kann ich das ergebnis als bild darstellen? also ein bild auf den dann steht xyz-70nation[ät]depp[ponkt]de?

User-7 am 03.09.06 10:38

hm, versuch ma so:

<?php
function no_spam($mail) {
$str = "";
$a = unpack("C*", $mail);
foreach ($a as $b) {
$str .= sprintf("%%%X", $b);
}

$link = str_replace(array("@","."),array( " [&auml;t] "," [punkt] "), $mail);

return "$link";
}

#################################################

header("Content-type: image/png");
$text = no_spam(''GET_['mail']'');
$im = imagecreatetruecolor(70,30);
$bg_color = ImageColorAllocate($im, 0, 0, 0);
$font_color = ImageColorAllocate($im, 255, 255, 255);
imagestring ($im, 5, 5, 7, $text, $font_color);
imagepng($im);
?>


dateiname.php?mail=[COLOR=orange]web@statt.de[/COLOR]

User-4 am 03.09.06 11:40

> dateiname.php?mail=[COLOR=orange]web@statt.de[/COLOR]

Damit wird die Adresse doch genauso im Klartext ausgegeben.. :tired:

User-7 am 03.09.06 11:41

Er wollte es im Bild dargestellt haben, das es so auch dargestellt wird ist mir schon bewust aber da kann man sich ja noch was einfallen lassen!

User-8 am 03.09.06 12:19

Ich halte die ganze Codierung auch für absolut unsinnig bis nervig. Auf eine Darstellung als Bild kann man auch getrost verzichten (außer an Stellen, die eine Email Adresse benötigen wie das Impressum), da man es ja auch irgendwie verlinken müsste - man kann doch nicht verlangen, dass der User die Adresse abtippt...

Ich würde die Emailadresse in der Datenbank speichern und nur auf ein Kontaktformular verlinken.
Wenn man hier einen Schutz integriert und dem Absender auch eine Kopie schickt, hat er die Adresse ja auch und alle sind glücklich.

Alternativ eine AJAX Lösung. Die Adressen werden ebenfalls in der Datenbank gespeichert und bei einem Click lädt das JS die Adresse aus der Datenbank und gibt sie mit aus. Ein Click mehr als nötig aber besser als [ät]

User-1 am 03.09.06 14:53

ich möchte doch einfach nur eine emailadresse angeben können ohne das ein spambot sie frisst. wie ist michr egal... :(

User-4 am 03.09.06 20:29

"xyz-70 bei der domain webstatt unter der top-level-domain org" :P

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt