Willkommen in der Webstatt Zum Webstatt Blog und Stories
fish fish 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?
crooked am 02.09.06 14:54

ich würde das ganze direkt mit regexen machen

nuit nuit 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');
?>

milahu milahu 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.

nuit nuit 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

fish fish 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>";
}

milahu milahu 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

nuit nuit 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 milahu...das ist nicht aus php4u...zumindest nicht das ersetzen ;) der anfang schon und der funzt ja auch

Christian 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?

nuit nuit am 02.09.06 16:36

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

und sie wird ja ins hex format codiert *Fg*

Johannes 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?

fish fish am 02.09.06 17:10

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

BNightSpeeder 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]

milahu milahu 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:

BNightSpeeder 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!

Michael Michael 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]

fish fish 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... :(

milahu milahu am 03.09.06 20:29

"fish 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