DHTML
  Home arrow DHTML arrow Page 4 - A Basic Method for Building Noisy Images
Dev Articles Forums 
ADO.NET  
Apache  
ASP  
ASP.NET  
C#  
C++  
ColdFusion  
COM/COM+  
Delphi-Kylix  
Design Usability  
Development Cycles  
DHTML  
Embedded Tools  
Flash  
Graphic Design  
HTML  
IIS  
Interviews  
Java  
JavaScript  
MySQL  
Oracle  
Photoshop  
PHP  
Reviews  
Ruby-on-Rails  
SQL  
SQL Server  
Style Sheets  
VB.Net  
Visual Basic  
Web Authoring  
Web Services  
Web Standards  
XML  
Mobile Linux 
App Generation ROI 
IBM® developerWorks 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
DHTML

A Basic Method for Building Noisy Images
By: Alejandro Gervasio
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 4 stars4 stars4 stars4 stars4 stars / 3
    2007-05-14

    Table of Contents:
  • A Basic Method for Building Noisy Images
  • Creating a simple contact form
  • Defining a simple PHP script
  • Completing the creation of a noisy image

  • Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
    ADVERTISEMENT


    A Basic Method for Building Noisy Images - Completing the creation of a noisy image


    (Page 4 of 4 )

    As I stated in the previous section, completing the creation of the noisy image is only a matter of linking the already familiar "getChallengeValue()" PHP function to the (X)HTML file responsible for displaying the contact form that I coded in the beginning.

    Basically, all these separated pieces can be merged in only one common PHP file. This file is not only capable of displaying a different noisy image each time it is requested, but also stores the pertinent random value onto a session variable for proper verification on the web server.

    Having explained that, the signature of this new PHP file could look like this:

    <?php
    // define 'getChallengeValue()' function
    function getChallengeValue($length=4){
      
    $chars="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
      
    if(!is_int($length)||$length<1||$length>strlen($chars)){
        
    trigger_error('Invalid length for random
    string',E_USER_ERROR);
      
    }
      
    $rndstr='';
      
    $maxvalue=strlen($chars)-1;
      
    for($i=0;$i<$length;$i++){
        
    $rndstr.=substr($chars,rand(0,$maxvalue),1);
      
    }
      
    return $rndstr;
    }
    session_start();
    // save challenge value to session variable
    $_SESSION['challenge']=getChallengeValue();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-
    8859-1" />
    <title>Example using simple noisy image</title>
    <style type="text/css">
    body{
      
    padding: 0;
      
    margin: 0;
      
    background: #fff;
    }

    h1{
       font: bold 16px Arial, Helvetica, sans-serif;
       color: #000;
      
    text-align: center;
    }

    textarea{
      
    width: 250px;
      
    padding: 2px 0 2px 0;
      
    font: normal 11px Verdana, Arial, Helvetica, sans-serif;
      
    color: #000;
      
    border: 1px solid #999;
    }

    #formcontainer{
      
    width: 35%;
      
    padding: 10px 100px 10px 10px;
      
    margin-left: auto;
       margin-right: auto;
      
    background: #eee;
      
    border: 1px solid #999;
    }

    #formcontainer p{
       font: bold 11px Tahoma, Arial, Helvetica, sans-serif;
       text-align: right;
    }

    .challengevalue{
       display: block;
       float: right;
       width: 230px;
       padding: 7px 9px 7px 10px;
       margin: 10px 0 20px 0;
       background: #fff url(noisy_image.gif) left center repeat-x;
       font: bold 20px Arial, Helvetica, sans-serif;
       color: #039;
       text-align: center;
       border: 1px solid #999;
    }

    .inputbox{
       width: 250px;
       padding: 3px 0 3px 0;
       font: normal 11px Verdana, Arial, Helvetica, sans-serif;
       color: #000;
       border: 1px solid #999;
    }

    .formbutton{
       width: 80px;
       padding: 3px 0 3px 0;
       font: bold 11px Verdana, Arial, Helvetica, sans-serif;
       color: #000;
    }
    </style>
    </head>
    <body>
       <h1>Example using simple noisy image</h1>
       <div id="formcontainer">
         <form action="check_data.php" method="post">
           <p>First Name <input type="text" name="fname" title="Enter
    your first name" class="inputbox" /></p>
           <p>Last Name <input type="text" name="lname" title="Enter
    your last name" class="inputbox" /></p>
           <p>Email <input type="text" name="email" title="Enter your
    email address" class="inputbox" /></p>
           <p>Enter the four-digit code shown below:</p>
           <p><span class="challengevalue"><?php echo $_SESSION
    ['challenge'];?></span></p>
           <p><input type="text" name="challenge" title="Enter the
    code shown above" class="inputbox" /></p>
           <p>Enter the text of your message:</p>
           <p><textarea name="message" title="Enter the text of your
    message here" rows="10" cols="10"></textarea></p>
           <p><input type="submit" name="send" value="Send Data"
    class="formbutton" /></p>
         </form>
       </div>
    </body>
    </html>

    See how easy it is to include a noisy image into the above contact form? I bet you do! Besides, this technique can be quickly improved, if (for example) you want to work with AJAX and generate new random strings without having to reload the whole web page.

    In addition, you may have noticed that the sample web form in question is submitted to a PHP file called "check_data.php." This file should contain a simple script that verifies whether the noisy code entered by a user is correct or not. Certainly, this checking process could be easily performed by including the following code snippet into the aforementioned PHP file:

    <?php
    session_start();
    // check if user entered the correct challenge value
    if(trim($_POST['challenge'])==$_SESSION['challenge']){
     
    echo '<h1>Congratulations! You entered the correct challenge
    value!</h1>';
    }
    else{
     
    echo '<h1>Sorry, but the challenge valued you entered is
    incorrect.</h1>';
    }
    ?>

    Overall, this is all the source code required to implement a basic noisy image with your own web forms. As I said before, this approach can be modified with minor hassles to work with AJAX-based applications or even use a different server-side scripting language other than PHP.

    Also, if you feel inclined to test this basic application before reading the subsequent articles of the series, you may want to download the corresponding supporting material here or from the beginning of this article. 

    Final thoughts

    In this first article of the series, I went through the implementation of a simple noisy image that can be easily included into any online form, to help prevent automated and fake form submissions.

    However, this isn't the end of the series, since in the next part I'm going to teach you how to create noisy images by following an object-oriented approach instead of using a simple PHP function.

    Want to see how this will be done? Don't miss the next article!


    DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware.

       · Over the course of this first part of the series, a CSS-based noisy imagen mechanism...
       · The script contains the CAPTCHA value in the source. Therefore they will not stop...
       · Thank you for your comments on my article. Yes, as I expressed in the article, the...
     

    DHTML ARTICLES

    - Text-Justify, Volume, and Other Style Sheet ...
    - Ruby-Position, Size, and Other Style Sheet P...
    - Padding, Pages, and More Style Sheet Propert...
    - Marks, Orphans, and More Style Sheet Propert...
    - Layouts, Margins, and Other Style Sheet Prop...
    - Floats, Fonts, and Other Style Sheet Propert...
    - Color, Filters, and Other Style Sheet Proper...
    - Borders and More with Style Sheets
    - Learning Style Sheet Properties
    - Style Sheet Property Reference
    - Completing a Noisy Image Application
    - An Object-Based Approach to Building Noisy I...
    - A Basic Method for Building Noisy Images
    - Adding More Features to Sliders with the Scr...
    - Using Sliders with the Scriptaculous Framewo...







    © 2003-2010 by Developer Shed. All rights reserved. DS Cluster 1 Hosted by Hostway
    For more Enterprise Application Development news, visit eWeek