Avatar billede espersen Novice
07. februar 2004 - 17:32 Der er 43 kommentarer og
3 løsninger

PHP/MySQL - medlemskartotek - undgå spam på medlemmers email

Jeg er ved atkomme i gang med PHP/MySQL ifm. at skulle lave oversigt over en hjemmeside for en forening.

Listen er tilgængelig for alle besøgende på hjemmesiden og navn/adresse samt evt. email kommer til at fremgå.

Kan jeg beskytte personernes emailadresser mod spamrobotter som fx. denne funktion gør det :
http://www.html.dk/artikler/00041/convert_email.asp

Kom gerne med forslag og andre relevante betragtninger ifht til min lille udfordring.

Går lidt ud fra at MySQL-databasen er rimeligt sikret
men hvad med de data som PHP/MySQL kaster op på siden?

(og husk det er et nyt område for mig)  ;o)
Avatar billede avlund Nybegynder
07. februar 2004 - 17:37 #1
Funktionen du har nævnt hjælper i hvert fald på det. Som du sikkert har fundet ud af, har HTML.dk også en længere artikel om emnet.
Avatar billede espersen Novice
07. februar 2004 - 17:40 #2
nemlig. Men der er ca. 30-50 personer - som løbende kan blive udskiftet, da de er formænd/sekretærer i nogle underafdelinger. Så hvis der nu er en mere automatisk måde at sikre dem på ?
Avatar billede espersen Novice
07. februar 2004 - 17:41 #3
(hvor jeg vil lade en mindre kreds have adgang til et admin-modul til at kunne rette i oplysningerne og herunder nye/ændrede emails)
Avatar billede avlund Nybegynder
07. februar 2004 - 17:43 #4
Jamen, du behøver kun at lave krypteringen run-time. Robotterne kan kun kigge på det endelige HTML-output. Så bare hav adresserne som normalt i databasen, og lav så et PHP-script som hakker dem i småstykker når de skal vises.
Avatar billede espersen Novice
07. februar 2004 - 17:46 #5
Kan du foreklare/vise eller give mig et link til hvor jeg kan se/læse lidt mere om "krypteringen run-time" + det med et PHP-script der hakker dem i småstykker ?
Avatar billede avlund Nybegynder
07. februar 2004 - 17:51 #6
Det er to sider af samme sag. Det allernemmest er hvis du gemmer adresserne som to felter i databasen ( "navn" og "domaene", altså hhv. det til venstre og højre for @ ), og derefter gør sådan når du skal vise dem ( vi antager at du har den i et array der hedder $email, på hhv. plads 0 og 1):

<a href="kontakt.htm" title="Send mig en e-mail"
    onmouseover="this.href='mai' + 'lto:' + '<?php echo $email[0];?>' + '&#64;' + '<?php echo $email[1];?>'"
    onfocus="this.href='mai' + 'lto:' + '<?php echo $email[0];?>' + '&#64;' + '<?php echo $email[1];?>'">
    Send mig en e-mail
</a>

Som du kan se, har jeg bare tyvstjålet det eksisterende javascript og indsat PHP-variablerne. Husk dog, at javascript skal være slået til i browseren, hvis brugeren skal kunne få dem til at virke.
Avatar billede espersen Novice
07. februar 2004 - 17:59 #7
ok : det ser jo rimelig enkelt ud..

dvs. sige at jeg ikke manuelt skal "kryptere" hver enkelt email men at emailen bliver samlet af PHP's echo + lidt javascript? (og vil ikke være helt så sikker)
Avatar billede espersen Novice
07. februar 2004 - 18:01 #8
onfocus="this.href='mai' + 'lto:' + '<?php echo $email[0];?>' + '&#64;' + '<?php echo $email[1];?>'">

=

mailto: + PHP0(fx.info) + PHP1(fx.mail.dk)
Avatar billede avlund Nybegynder
07. februar 2004 - 18:54 #9
Den vil være lige så sikker, idet du opnår samme resultat som scriptet fra HTML.dk - bare dynamisk. Det er ikke helt det samme som det du "omformer det til", idet sikkerheden hele tiden har ligget i javascripten.
Avatar billede avminarm Juniormester
07. februar 2004 - 22:47 #10
espersen>> har du overvejet alternativt at kun lade brugere sende mails til kontakt personerne via en formular - så kan du have email i DB og først hente den nå formularen sendes
Avatar billede espersen Novice
07. februar 2004 - 23:52 #11
Det lyder da som en ret god idé ! Kan du givet et tip om sådan et "send funktion" ?
Avatar billede avminarm Juniormester
09. februar 2004 - 13:03 #12
hvis nu du laver en alm formular hvor man kan vælge hvem der skal sendes til via dropdown/checkbox/radiobutton - hvad man nu synes bare den indeholder modtageres id i databasen oså et emnefelt + text felt og en send knap, når så der trykkes på send benyttes f.eks. action="sendmail.php".

i sendmail.php laves så et opslag i databasen via id og der hentes mailadressen frem til selve mailscriptet.

håber det hjalp - ellers skriv igen :-) !
Avatar billede espersen Novice
09. februar 2004 - 13:16 #13
regner med at det bliver med en side hvor det kommer til at stå nogenlunde sådan:

NAVN1 , adresse, evt.tlf,  email-ikon(der peger til databasen)

Så kan evt. besøgende trykke på email-ikonet (form for mailto:) og derved sende en email til vedkommende.
Avatar billede avminarm Juniormester
09. februar 2004 - 13:27 #14
det lyder ok :o)
Avatar billede espersen Novice
13. februar 2004 - 22:35 #15
jeg roder lige lidt videre med mine sager (og det går ikke så hurtigt) - men har ikke glemt jer  ;o)
Avatar billede espersen Novice
22. februar 2004 - 13:13 #16
hhmm... vi får denne fejl
Parse error: parse error, expecting `','' or `';'' in /usr/www/x-site/links_.php on line 26

når der bruges "" omkring

koden ser således ud :

<a href="kontakt.htm" title="Send mig en e-mail"
    onmouseover="this.href='mai' + 'lto:' + '<?php echo $email[0];?>' + '&#64;' + '<?php echo $email[1];?>'"
    onfocus="this.href='mai' + 'lto:' + '<?php echo $email[0];?>' + '&#64;' + '<?php echo $email[1];?>'">
    Send mig en e-mail
Avatar billede avminarm Juniormester
23. februar 2004 - 09:36 #17
"" omkring hvad?? og hvad er linie 26?
Avatar billede espersen Novice
23. februar 2004 - 09:44 #18
pokkers ; har ikke lige koden hos mig lige nu - dette kan måske uddybe det lidt bedre:

Det ser ud som om at den læser PHP ud af JavaScript (er min mistanke).

ændres det " til ':
<a href='kontakt.htm' title='Send mig en e-mail'  osv...

Så kommer data frem på siden (navn, link og email): men det er ikke muligt at klikke på emailen og dermed aktivere mailto: - den sender os blot videre til kontakt.htm (linket virker fint!)
Avatar billede erikjacobsen Ekspert
23. februar 2004 - 09:48 #19
Hvis du offentliggør medlemmernes email på dine side, krypteret for spamrobotter
eller ej, så sørg for at få deres tilladelse til det. Pt vil spamrobotterne nok
ikke finde adresserne, men teknologien udvikles, og så kan de jo pga af deres
læselighed for almindelige mennesker havne alle mulige steder alligevel.

Formularen er den bedste løsning du kan få. Sæt evt spam-begrænsning på: fx max 10
mails om dagen pr email fra formularen.
Avatar billede avminarm Juniormester
23. februar 2004 - 09:59 #20
ja- jeg synes nu også at formular løsningen er det bedste
Avatar billede espersen Novice
23. februar 2004 - 10:00 #21
Takker for input !: Vil arbejde videre med formular-løsningen...

(og vil naturligvis indhente tilladelser til at deres mails er tilgængelige - for en god ordens skyld  -  p.t. er de anført i alm. html/mailto - så den nye løsning bliver en klar forbedring)
Avatar billede espersen Novice
23. februar 2004 - 22:02 #22
Når i skriver at i ville bruge en formular, mener i så at man kan se email'en på siden, og så når man klikker på linket så kommer man videre til en side hvor der så er en kontakt formular?
(jeg har lidt svært ved at se det for mig) - evt. link/eksempel?
Avatar billede erikjacobsen Ekspert
23. februar 2004 - 22:09 #23
Jeg har sendt dig et link til en simpel af slagsen, Torben
Avatar billede avminarm Juniormester
24. februar 2004 - 09:10 #24
må jeg kigge med ;o)
Avatar billede espersen Novice
24. februar 2004 - 10:37 #25
af respekt for ikke at videregive linket vil jeg lige beskrive det: Et "ganske alm. html" kontaktformular som vi ser på næsten alle sider, hvor man indtaster oplysninger i en række felter. Eksemplet må være koblet op til 1 en enkelt mail-modtager (ingen dropdown e.l.)

Felter:

Emne:
Dit navn:
Dit telefonnummer:
Din email-adresse:
Tekst:

Endvidere med denne kode : <form name="hmail" action="mail.php" method="post">
Avatar billede erikjacobsen Ekspert
24. februar 2004 - 13:01 #26
Men du fik vist ikke koden til mail.php - men den er meget simpel. Du må gerne,
det var en forglemmelse.

Men ideen er så at den kan udvides med fx et dropdownfelt med navne på den eller
de personer, man vil sende mail til, dog således at de i HTML-formularen
ikke identificeres med email, men med et nummer, og dette nummer bruges i
scriptet på serveren til at sende til rette person.
Avatar billede espersen Novice
24. februar 2004 - 13:56 #27
den vil jeg meget gerne se ;o)
Avatar billede avminarm Juniormester
24. februar 2004 - 15:15 #28
meget simpelt:

form.htm:

<form method="post" action="send.php">

navn: <input type="text" name="navn"><br>

tlf: <input type="text" name="tlf"><br>
din email: <input type="text" name="email"><br>
tekst<textarea name="besked"></textarea><br>

<select name="sendtil">
<option value="rip">rip</option>
<option value="rap">rap</option>
<option value="rup">rup</option>
<option value="anders">Anders And</option>
</select></p>

<input type="submit">
</form>

***********************************************

send.php:
<?php



if(isset($_POST['sendtil'])){

if ($_POST['sendtil'] == "rip") { $modtemail = "rip@enmailadr.dk"; }
if ($_POST['sendtil'] == "rap") { $modtemail = "rap@enandenmailadr.dk"; }
if ($_POST['sendtil'] == "rup") { $modtemail = "rup@entrediemailadr.dk"; }
if ($_POST['sendtil'] == "anders") { $modtemail = "anders@enfjerdemailadr.dk"; }

og så et ganske almindeligt mail() med $modtemail som den mail adr der sendes til

}
?>
Avatar billede erikjacobsen Ekspert
24. februar 2004 - 15:25 #29
Ok - så er jeg fri.... Men måske lige en

  if (isset($modtemail)) {
    mail(.....);
  } else {
    print "Hvad er du ude på, din drillenisse?";
  }
Avatar billede espersen Novice
25. februar 2004 - 08:45 #30
Da admin-modulet giver mulighed for at oprette nye medlemmer/links vil den med dropdown-løsningen nok blive et problem. Så derfor bliver jeg nok nødt til at gå tilbage til "JavaScript-metoden" - og derved acceptere en risiko for spam.

Problemet med at adskille JavaScript og PHP er således tilbage. Hvorledes får jeg adskilt denne del af koden ?

<a href="kontakt.htm" title="Send e-mail"
    onmouseover="this.href='mai' + 'lto:' + '<?php echo $email[0];?>' + '&#64;' + '<?php echo $email[1];?>'"
    onfocus="this.href='mai' + 'lto:' + '<?php echo $email[0];?>' + '&#64;' + '<?php echo $email[1];?>'">
    Send mig en e-mail
Avatar billede erikjacobsen Ekspert
25. februar 2004 - 08:52 #31
Du aflæser blot dine medlemmer i databasen med et script (PHP/JSP/ASP), og
genererer <select>-en ud fra det. Nej, du kan ikke tillade dig risikoen for spam!
Avatar billede espersen Novice
25. februar 2004 - 08:57 #32
kunne du uddybe det lidt ? ;
du mener altså at JavaScript-metoden er alt for usikker..
Avatar billede erikjacobsen Ekspert
25. februar 2004 - 09:03 #33
"alt for usikker" er nok overdrevet, men den er unødigt usikker, når du nu uden
videre kan lave en sikker løsning. Eet er om man anbringer sin egen email på
en webside, med den anførte javascript metode - så kan man selv afveje risici.
Men når du vil anbringe andres email på en webside, er du moralsk (og måske
juridisk) forpligtet til at bringe risikoen ned på 0.

Men det er blot min anbefaling.
Avatar billede espersen Novice
25. februar 2004 - 09:14 #34
klart !  - helt enig!

Jeg er lidt blank overfor løsningen - har du et hint om hvorledes det skal gøres med et PHP-script hvor <select> genereres ud fra dette ?
Avatar billede erikjacobsen Ekspert
25. februar 2004 - 09:24 #35
Du kan sende hvad du har til mig, så kan jeg fikse det.
Avatar billede avminarm Juniormester
26. februar 2004 - 13:51 #36
enig med erik
Avatar billede espersen Novice
26. februar 2004 - 13:59 #37
Jeg ønsker at løsningen skal være meget tæt på at man blot skal klikke på fx et ikon for at kunne aktivere en form for "mailto:"  -  kan det lade sig gøre med <select> ??
Avatar billede avminarm Juniormester
26. februar 2004 - 14:12 #38
Hvorfor skjal det være en mailto: ??? ikke alle har installeret et mail program, mange benytter webmail og for disse vil det være langt mere venligt at benytte en formular!
Avatar billede espersen Novice
26. februar 2004 - 14:18 #39
pga. der er en side med følgende
linknavn  +  link  + email

en anden side med foreningskontakter i forskellige kredse
navn/adresse + evt. link + evt. email

anføres de alle i fx et drop down, så bliver listen for lang - pt. er listen på omkring 30-40 mails - og ikke alle har email.
Avatar billede avminarm Juniormester
26. februar 2004 - 14:40 #40
det forstår jeg ikke - hvad er forskellen på at outputte alle til skærmen, eller at putte dem i en dropdown?
Avatar billede espersen Novice
26. februar 2004 - 15:10 #41
ønsker at gøre det så let for besøgende som muligt at komme i kontakt
Avatar billede avminarm Juniormester
26. februar 2004 - 16:09 #42
Jamen så er en furmular med dropdown det eneste rigtigt ;o)
Avatar billede espersen Novice
26. februar 2004 - 16:13 #43
jamen med 40 mulige modtagere ??
Avatar billede avminarm Juniormester
27. februar 2004 - 08:48 #44
ja da prøv f.eks at lave den med scrollbar:

<select size="4">
<option>rip</option>
<option>rap</option>
<option>rup</option>
<option>anders</option>
<option>joakim</option>
<option>højben</option>
<option>fedtmule</option>
<option>daffy</option>
</select>
Avatar billede espersen Novice
03. marts 2004 - 21:56 #45
det ender op med en javascipt/PHP løsning:

?>
    <a href="kontakt.php" title="Send e-mail"
    onmouseover="this.href='mai' + 'lto:' + '<?php echo $row[mail2_1] ?>' + '&#64;' + '<?php echo $row[mail2_2] ?>'"
    onfocus="this.href='mai' + 'lto:' + '<?php echo $row[mail2_1] ?>' + '&#64;' + '<?php echo $row[mail2_2] ?>'">
<?php 
if($row[mail2_1] != "")
{
echo "<img src='images/email_icon.gif' alt='Send email' Border='0'>";
}
?>

har I evt. forslag til yderligere sikring af dette script-mix ?
Avatar billede espersen Novice
05. marts 2004 - 20:47 #46
jeg takker mange gange for jeres input - I har hjulpet mig rigtig godt på vej !!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester