TalkPHP
 
 
Account Login
Latest Articles
» The basic usage of PHPTAL, a XML/XHTML template library for PHP
» Vulnerable methods and the areas they are commonly trusted in.
» Simple way to protect a form from bot
» The Basics On: How Session Stealing Works
» How to keep your forms from double posting data
IRC Channel
IRC Speech Bubble Join the friendly bunch on IRC...
(#TalkPHP on Freenode)

...Also available via a web interface.

See this thread for information on the TalkPHP Free Hugs Initiative™. Subject to availability.
Associates
Associates
CSS Tutorials
Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old 10-23-2007, 07:41 PM   #1 (permalink)
La Vida es Sueño
Advanced Programmer Top Contributor 
 
Wildhoney's Avatar
 
Join Date: Sep 2007
Location: Oldham
Posts: 2,280
Thanks: 90
Wildhoney is on a distinguished road
Preventing Spam with PHP and Javascript

I'm curious as to individual's methods of preventing spam. The way I use is PHP, although sometimes I do use the Javascript method - though not often.

My PHP method

PHP Code:
switch(strtolower(@$_GET['txtMail']))
{
    case(
'adam'):         header('location: mailto:adam@talkphpDEMO.com');         break;
    case(
'karl'):         header('location: mailto:karl@talkphpDEMO.com');         break;
    case(
'peter'):     header('location: mailto:salathe@talkphpDEMO.com');     break;

A simple switch to determine which individual you want to email - then use PHP's native header function to forward you as if you clicked on a mailto link.

My Javascript method

As to be expected, this code is a little complex. Easily customisable, however, with the way I have wrote it.

As the Javascript code is ~50 lines, you may view it here. (Right click and view source to view the Javascript code itself)

The HTML is simple which allows Javascript to handle all the tricky stuff:

Code:
<div id="emailContainer">
	<label>Adam:</label><span></span>
	<br />
	<label>Karl:</label><span></span>
	<br />
	<label>Peter:</label><span></span>
</div>
Contact forms tend to distance people, I feel, but I still definitely use them. How do you display emails when a contact form is either too much or doesn't display that level of trust and professionalism you're looking for?
__________________
The man who comes back through the Door in the Wall will never be quite the same as the man who went out.
Send a message via AIM to Wildhoney Send a message via MSN to Wildhoney Send a message via Yahoo to Wildhoney
Wildhoney is offline  
Reply With Quote
Old 10-23-2007, 07:51 PM   #2 (permalink)
The Contributor
Upcoming Programmer 
 
Gurnk's Avatar
 
Join Date: Oct 2007
Location: US
Posts: 66
Thanks: 19
Gurnk is on a distinguished road
Default

So is your javascript method breaking up the email so its not together in the source? If so, thats a good idea. I've been trying to think of a way to have links like that that doesn't have the email or contact info in the source.

Because I haven't wanted spam and haven't thought of a good way to stop it, I just use a contact form, and on that just have a simple question that verifies if its a human or bot. Not super super effective, but I usually don't have a huge spam problem.

EDIT: In PHP, could you break it up by just exploding it after a certain number of characters? Or does it have to be after a character has appeared.
Send a message via MSN to Gurnk
Gurnk is offline  
Reply With Quote
Old 10-23-2007, 10:05 PM   #3 (permalink)
La Vida es Sueño
Advanced Programmer Top Contributor 
 
Wildhoney's Avatar
 
Join Date: Sep 2007
Location: Oldham
Posts: 2,280
Thanks: 90
Wildhoney is on a distinguished road
Default

The Javascript splits it up nicely. Trouble with PHP's explode is that it is a superficial action as the email will still be printed in basic HTML - all together. In my PHP example above, you would do something like the following for your link:

Code:
<a href="mail.php?txtMail=adam">Email Adam</a>
It would then call the file with my code contained in it. If all goes well then the header function will relay the end user onto their default email client and open up a new email with the recipient set as the email address I specified in my PHP code under adam. That way the email addresses aren't exposed.

The PHP way is the more efficient method and also the method that will be more widely supported by many browsers. Most browsers, unless you explicitly tell them not to, redirect from the location attribute in the HTTP header response. Whereas, people know how to turn Javascript off with ease (And some browsers do not support Javascript), but disabling the HTTP header is something most people would not know how to do - nor actually want to. Read my header tutorial for further information.

Bottom line? PHP method beats the Javascript method hands down!
__________________
The man who comes back through the Door in the Wall will never be quite the same as the man who went out.
Send a message via AIM to Wildhoney Send a message via MSN to Wildhoney Send a message via Yahoo to Wildhoney
Wildhoney is offline  
Reply With Quote
Old 10-23-2007, 11:38 PM   #4 (permalink)
The Contributor
Upcoming Programmer 
 
Gurnk's Avatar
 
Join Date: Oct 2007
Location: US
Posts: 66
Thanks: 19
Gurnk is on a distinguished road
Default

Ohhh. Lol I don't know why that PHP method didn't register in my brain when you posted the code. :p

This may be a dumb question, but what is stopping them from seeing the email in the source? Is it just that its in a separate file, so its not as likely to be crawled? (I feel like a nub again :p)
Send a message via MSN to Gurnk
Gurnk is offline  
Reply With Quote
Old 10-24-2007, 12:29 AM   #5 (permalink)
The Acquainted
 
Join Date: Sep 2007
Location: Arizona
Posts: 114
Thanks: 10
Andrew is on a distinguished road
Default

I do it this way, which I just recently put into place.
Code:
	<script type="text/javascript">
	function noSpam(name, domain) {
		var email = name + "@" + domain;
		location.href = "mailto:" + email;
	}
	</script>
Code:
<a href="javascript:noSpam('admin', 'psdtocode.com');">emailing me</a>
I might try your way also, seems like a good plan.
Send a message via AIM to Andrew Send a message via MSN to Andrew
Andrew is offline  
Reply With Quote
Old 10-24-2007, 10:48 AM   #6 (permalink)
The Acquainted
 
Join Date: Oct 2007
Posts: 170
Thanks: 18
maZtah is an unknown quantity at this point
Default

Quote:
Originally Posted by Gurnk View Post
This may be a dumb question, but what is stopping them from seeing the email in the source? Is it just that its in a separate file, so its not as likely to be crawled? (I feel like a nub again :p)
They can't see your php code.
maZtah is offline  
Reply With Quote
Old 10-24-2007, 10:57 AM   #7 (permalink)
The Contributor
Upcoming Programmer 
 
Gurnk's Avatar
 
Join Date: Oct 2007
Location: US
Posts: 66
Thanks: 19
Gurnk is on a distinguished road
Default

I know that, but if you have to echo something out, they can see that. But I guess this method doesn't echo anything, so its fine.
Send a message via MSN to Gurnk
Gurnk is offline  
Reply With Quote
Old 10-24-2007, 11:02 AM   #8 (permalink)
The Acquainted
 
Join Date: Oct 2007
Posts: 170
Thanks: 18
maZtah is an unknown quantity at this point
Default

That's right! :)
maZtah is offline  
Reply With Quote
Old 10-24-2007, 11:15 AM   #9 (permalink)
La Vida es Sueño
Advanced Programmer Top Contributor 
 
Wildhoney's Avatar
 
Join Date: Sep 2007
Location: Oldham
Posts: 2,280
Thanks: 90
Wildhoney is on a distinguished road
Default

All you show is a normal link to another page, with the txtMail argument set to the name (not the email) of the person you want to email. The script then gets the email from inside, without echoing it out as a mailto link, and forwards them to their default email client.
__________________
The man who comes back through the Door in the Wall will never be quite the same as the man who went out.
Send a message via AIM to Wildhoney Send a message via MSN to Wildhoney Send a message via Yahoo to Wildhoney
Wildhoney is offline  
Reply With Quote
Old 10-24-2007, 11:35 AM   #10 (permalink)
The Contributor
Upcoming Programmer 
 
Gurnk's Avatar
 
Join Date: Oct 2007
Location: US
Posts: 66
Thanks: 19
Gurnk is on a distinguished road
Default

Right right, I know. :) I was just wasn't thinking. (again) :p
Send a message via MSN to Gurnk
Gurnk is offline  
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


All times are GMT. The time now is 06:09 PM.

 
     

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0
Inactive Reminders By Icora Web Design