Archief - Verbergen van email adres

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

[ JO ]

Legacy Member
Hallo allen!

Wat is volgens jullie de beste manier om je email adres te beveiligen tegen spam, wanneer je een mailto gebruikt?

Thx!


PS Ik gebruik info omdat ik niet weet of het in php, javascript of wat dan ook zal zijn.

Zero Grav

Legacy Member
Als ge de stickies had gelezen dan had ge gezien dat ge nog niet had moeten twijfelen over PHP/JS/.. maar gewoon de Q-prefix had moeten gebruiken.

Voor beveiliging tegen spam is het gemakkelijk, gebruik gewoon geen mailto. Doet ge het toch dan hebt ge altijd het risico dat uw emailadres wordt uitgelezen. De enige manier om dat redelijk effectief te omzeilen is om de pagina waar uw emailadres opstaat enkel via een CAPTCHA beschikbaar te stellen (zoals op dns.be). En zelfs CAPTCHA is niet 100% crackproof.

Een formulier met server-side verwerking en spambeveiliging is het meest voor de hand liggende alternatief.

[ JO ]

Legacy Member
Mijn excuses!
Bedankt voor de info!
Het liefst wil ik toch geen formulier. Maar zal het blijkbaar toch moeten overwegen...

DieselPower

Legacy Member
Facebook gebruikt afbeeldingen voor de emails van haar leden weer te geven, maar best dus geen mailto gebruiken.

Zero Grav

Legacy Member
DieselPower zei:
Facebook gebruikt afbeeldingen voor de emails van haar leden weer te geven, maar best dus geen mailto gebruiken.

Iets wat eigenlijk gewoon een enorm vals gevoel van veiligheid geeft. Al die bots beschikken toch over een mogelijkheid om zo'n unscrambled afbeeldingen uit te lezen.

Om terug te gaan naar mijn eerdere voorbeeld van DNS. Zij gebruiken ook afbeeldingen, maar enkel op een pagina die toegankelijk is na het invoeren van een CAPTCHA.

Een idee dat ik wel heb is om misschien zo'n emailadres via Javascript toe te voegen. Ik weet niet of bots zo'n scripts ook doornemen, maar bij zoekmachines heeft het alleszins een negatief effect.

DieselPower

Legacy Member
Hm, kunt ge dan niet instellen om bepaalde pagina's niet te doorzoeken? e.g. no follow.
Wat doet de rest?

Ik denk trouwens dat dit het meest effectieve is:
Zero Grav zei:
Een formulier met server-side verwerking en spambeveiliging is het meest voor de hand liggende alternatief.

Afbeeldingen kunnen trouwens niet gelezen worden door blinde surfers, ik betwijfel of dat invloed heeft op uw beslissing maar bon.

Zero Grav

Legacy Member
Maja, een spambot kijkt niet naar een robots.txt bestand hé. ^^

Zero Grav

Legacy Member
Ahja, dat bedoelt ge. Maja, daar houden die bots evenzeer geen rekening mee. Dat is gewoon voor 'officiële' bots een goeie indicatie (zelfs die houden er niet allemaal rekening mee).

Drone

Legacy Member
Ik gebruik meestal mijn eigen jquery scriptje.
Code:
<a class="brief">info apenstaart voorbeeld.be</a>
Code:
$("a.brief").each(function(){
    this.innerHTML=this.innerHTML.replace(" apenstaart ","@");
    this.href="mailto:"+this.innerHTML}
);

Kweet eigenlijk niet hoe veilig dit is. Ik zie (filmke is wel al oud denk ik) dat google nu ook al stukken javascript kan interpreteren dus misschien dat bots dat ook al kunnen. Ik denk wel dat zolang andere nog mailto gebruiken de meeste bots de moeite niet doen om javascript te parsen.

Dubbelpunt

Legacy Member
zonder een mailto werken en bv de woorden testertje at hotmail dot com gebruiken
of een image/screenshot met email adres gebruiken

in beide gevallen best vermelden dat je dit doet wegens spamprotectie :D

Zero Grav

Legacy Member
Mailto of geen mailto maakt allemaal niets uit, emailadressen kunnen sowieso wel uitgelezen worden. En aangezien iedereen dezelfde methode gebruikt (met die at en dot) kunnen die bots dat ook wel uitlezen.

Voor de rest van uw comment moet ge de thread maar doorlezen, is al aangehaald.

Cycloon

Legacy Member
Idd, mails uitschrijven met dot, apenstaart, at en toestanden is al langer achterhaald. Zelf de kleinste scriptkiddies schrijven daar code voor om zo'n dingen te vinden.

[ JO ]

Legacy Member
Sorry voor de late reactie, maar ik ga inderdaad maar voor een php script.
Kent iemand een goed script waarbij er ook getest wordt of er iets ingevuld is en dergelijke?
Ik veronderstel dat het het best is dat het script in een apart php file staat?

Bedankt!

[ JO ]

Legacy Member
Ik heb nu toch een simpel script gekozen, alleen werkt het niet. Het is nochtans echt het simpelste van het simpelste.

html:
Code:
		<form name="contact" method="post" action="post.php">
			<table class="contact">
				<tr>
					<th>Naam:</th>
					<td><input name="naam" type="text" size="50" ></td>
				</tr>
			
				<tr>
					<th>Email:</th>
					<td><input name="email" type="text" size="50" ></td>
				</tr>
				<tr>
					<th>Onderwerp:</th>
					<td><input name="onderwerp" type="text" size="50" ></td>
				</tr>
			
				<tr>
					<th>Vraag:</th>
					<td><textarea name="bericht" cols="50" rows="8"></textarea></td>
				</tr>
			</table>
			<p><input type="submit" name="Submit" value="Verstuur"></p>
		</form>
post.php
PHP:
<?php   
$naam = htmlspecialchars($_POST["naam"]);  
$email = htmlspecialchars($_POST["email"]);
$onderwerp = htmlspecialchars($_POST["onderwerp"]);
$bericht = htmlspecialchars($_POST["bericht"]);  
  
if (!$naam) {  
echo "U heeft geen naam ingevuld!";  
exit; }  
  
if (!$email) {  
echo "U heeft geen e-mailadres ingevuld!";  
exit; }  

if (!$onderwerp) {  
echo "U heeft geen onderwerp ingevuld!";  
exit; } 
  
if (!$bericht) {  
echo "U heeft geen bericht ingevuld!";  
exit; }  
  
else {  
  
$tijd = time();  
$datum = strftime("%d/%m/%y %H:%M", $tijd);  
$ip = getenv("REMOTE_ADDR");  
$message = "" . $naam . " met het e-mailadres " . $email . " en het IP $ip stuurde op $datum het volgende bericht:   
____________________________________  
"Onderwerp: . $onderwerp . "
" . $bericht . "  
------------------------------------";  
  
$mailadres = "[email protected]";  
$message = str_replace ("<br>","\n", $message);  
  mail("$mailadres", "Bericht van mijndomein.nl",  
    $message, "From: " . $email . "");  
      
echo "Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.";   
}  
?>

Kan iemand de fout er uit halen? Ik wil er graag ook nog een dropdown in verwerken en controleren op de @ voor het emailadres. Maar als het nu al niet werkt...

Kan iemand me helpen? Ik ben wel een absolute newbie op die vlak!
Thx!!

EDIT// eigen emailadres bijgewerkt

Curahee Q

Legacy Member
Ik kan uit dat script meteen 100 fouten halen. Sorry maar dat script is echt brak en ouderwets.

PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
     $naam = htmlspecialchars($_POST["naam"]);  
     $email = htmlspecialchars($_POST["email"]);
     $onderwerp = htmlspecialchars($_POST["onderwerp"]);
     $bericht = htmlspecialchars($_POST["bericht"]);
     $error = "";

     if(trim($naam) == "") $error .= 'Naam niet ingevuld.<br />';
     if(trim($email) == "") $error .= 'Mail niet ingevuld.<br />';
     if(trim($onderwerp) == "") $error .= 'Onderwerp niet ingevuld.<br />';
     if(trim($bericht) == "") $error .= 'Bericht niet ingevuld.<br />';


     $mail = "[email protected]";
     $ip = $_SERVER['REMOTE_ADDR'];
     // enzovoort
}

Als je nog iets gemakkelijker wilt gaan kan je best met SwiftMailer werken. Dit is de vernieuwde PHPMailer van vroeger...

[ JO ]

Legacy Member
Werkt helemaal! Bedankt!
Naar SwiftMailer heb ik nog niet gekeken, maar het werkt nu in ieder geval al!

PHP:
<?
if($_SERVER['REQUEST_METHOD'] == 'POST') {
     $naam = htmlspecialchars($_POST["naam"]);  
     $email = htmlspecialchars($_POST["email"]);
     $onderwerp = htmlspecialchars($_POST["onderwerp"]);
     $bericht = htmlspecialchars($_POST["bericht"]);
     $error = "";

     if(trim($naam) == "") $error .= 'U heeft uw naam niet ingevuld.<br />';
     if(trim($email) == "") $error .= 'U heeft uw email-adres niet ingevuld.<br />';
     if(trim($onderwerp) == "") $error .= 'U heeft geen onderwerp opgegeven.<br />';
     if(trim($bericht) == "") $error .= 'U heeft geen bericht ingevuld.<br />';

	

     $mail = "[email protected]";
     
     if(trim($error) == "") {
     	$tijd = time();  
		$datum = strftime("%d/%m/%y %H:%M", $tijd);  
		$ip = $_SERVER['REMOTE_ADDR'];
		$message = "" . $naam . " met het e-mailadres " . $email . " en het IP " . $ip . " stuurde op " . $datum . " het volgende bericht:   
____________________________________  
Onderwerp: " . $onderwerp . "
" . $bericht . "  
____________________________________";
		
		$message = str_replace ("<br>","\n", $message);  
  		mail("$mail", "Bericht van mijndomein.nl",  
   		$message, "From: " . $email . "");  
      
		echo "<p> Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.";
		echo "<a href=\"http://www.domein.nl\">Ga terug naar home.</a></p>";
     }
     else{
     	echo "<h1 class=\"error\">Er is iets fout gegaan</h1><br/>
     			<p>Hieronder vindt u een lijstje met wat er fout kan gegaan zijn:</p>";
     	echo " <p> " . $error . " </p> ";
     	echo "<a href=\"#\" onClick=\"history.go(-2)\">Ga terug om eventueel wat aan te passen.</a></p>";
     }
}
?>

[ JO ]

Legacy Member
Ik zoek nu op internet om te kijken of het een geldig email-adres is, en kwam dit tegen:
PHP:
if (!preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)) $error .= 'U heeft geen geldig email-adres ingevuld.<br />';
Maar dat blijkt niet te werken... Iemand een idee? Sorry voor de vele vragen!

[ JO ]

Legacy Member
Heb een minder stricte gevonden op internet die werkt...
PHP:
	 if (!preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email)) $error .= 'U heeft geen geldig email-adres ingevuld.<br />';

adrianhates

Legacy Member
ik gebruik altijd dze:

PHP:
/**
 *  This function checks an email for it regex pattern
 *
 *  @param String $email - The email to match
 * 
 *  @return bool - True if valid match , otherwise false
 */
function validateEmail($email){

    // regex pattern for valid emails
    $pattern = "/^[A-z0-9\._-]+". "@". "[A-z0-9][A-z0-9-]*". "(\.[A-z0-9_-]+)*". "\.([A-z]{2,6})$/";
    // compare the regex pattern and the email value given
    return preg_match($pattern, $email);

}
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan