Results 1 to 7 of 7

Thread: reCapatcha help

  1. #1
    Join Date
    May 2012
    Location
    Wales UK
    Posts
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default reCapatcha help

    I have a script input that allows you to add to the site guest book, which connects and sends data to the MYSQL data-base. The data base and everything else works fine, if i dont add the reCapatch script everything works perfectly... but then when i add reCapatch i pull out a 500 error, and for the life of me cant figure out why. Could you guys take a look and see if you can spot the problem! thanks

    here is my script:

    PHP Code:
    <?php
    require_once('location/recaptchalib.php');
      
    $privatekey "my private key";
      
    $resp recaptcha_check_answer ($privatekey,
                                    
    $_SERVER["REMOTE_ADDR"],
                                    
    $_POST["recaptcha_challenge_field"],
                                    
    $_POST["recaptcha_response_field"]);

      if (!
    $resp->is_valid) {
        
    // What happens when the CAPTCHA was entered incorrectly
        
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
             
    "(reCAPTCHA said: " $resp->error ")");
      } else {

        
    // Your code here to handle a successful verification
    $dbservertype='mysql';
    $servername='sname';
    // username and password to log onto db server
    $dbusername='uname';
    $dbpassword='dbpass';
    // name of database
    $dbname='dbname';

    ////////////////////////////////////////
    ////// DONOT EDIT BELOW  /////////
    ///////////////////////////////////////
    connecttodb($servername,$dbname,$dbusername,$dbpassword);
    function 
    connecttodb($servername,$dbname,$dbuser,$dbpassword){
    global 
    $link;
    $link=mysql_connect ("$servername","$dbuser","$dbpassword");
    if(!
    $link){die("Could not connect to MySQL");}
    mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error());
    }


    $email=$_POST['email'];
    $name=$_POST['name'];
    $country=$_POST['country'];
    $dtl=$_POST['dtl'];


    $status "OK"// setting the flag for form validation
    $msg="";        // error message string is blank
    // now let us check email address
    if (!stristr($email,"@") OR !stristr($email,".")) {
    $msg="<center>Your email address is not correct</center><BR>";
    $status="NOT OK";
    }
    // Now let us check if name is entered or not 
    if(strlen($name) < ){  // if name is less than two char length
    $msg .="<center>Please enter your name</center><BR>";
    $status="NOT OK";
    }
    if(
    $status<>"OK"){ // if form validation is not passed
    echo "<BR><BR>";
    echo 
    $msg"<br><center><input type='button' value='Retry' onClick='history.go(-1)'></center><br><br><br>";
    }else{
    $tm=time(); // reading the time of entry
    // adding data to mysql database
    //first thing is to escape single quotes!
    $dtl str_replace("'","\'",$dtl);
    //now process
    $rt=mysql_query("insert into guest_book(name,email,country,tm,dtl) values('$name','$email','$country','$tm','$dtl')");
    echo 
    mysql_error();
    echo 
    "Thank you for your comment! You will automaticly be redirected...";
    //send e mail to self with the users e mail address for a thank you message!

    ?>
    <?
    $to 
    "cerris@chulse.co.uk";
    $subject "Comment submission";
    $message $name "\n\n" $dtl "\n\n" $email;
    $from $email;
    $headers "From:" $from;
    mail($to,$subject,$message,$headers);

    //now lets send an e mail to the user and thank them!
    $to $email;
    $subject "We want to thank you!";
    $message "You recently submited a review on www.chulse.co.uk. We want to thank you for taking the time to give us your feedback! it is greatly appriciated. If you have any questions at all please contact me using this e mail address or by using the contact form on the website. http://www.chulse.co.uk \n\n Cerris Hulse.";
    $from "cerris@chulse.co.uk";
    $headers "From:" $from;
    mail($to,$subject,$message,$headers);
    }
      }
    header('Refresh: 5; URL=../');
      
    ?>

  2. #2
    Join Date
    Jan 2011
    Location
    Southeastern CT
    Posts
    612
    Thanks
    46
    Thanked 32 Times in 32 Posts

    Default

    you need to post a copy of the recaptcha script.I am getting a php error that says"..... location/recaptchalib.php" but I need to put up a copy of your captcha script to test it here.
    Thanks,

    Bud

  3. #3
    Join Date
    May 2012
    Location
    Wales UK
    Posts
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Yes it would say that its not on your server

    the reCapatcha script im using is off their site

    http://code.google.com/p/recaptcha/d...:phplib-Latest

  4. #4
    Join Date
    Jan 2011
    Location
    Southeastern CT
    Posts
    612
    Thanks
    46
    Thanked 32 Times in 32 Posts

    Default

    OK,I guess you don't want my help if you can't give me what I am asking for to help you?

    I am not going to go nuts to get info for what should be an easy part of a form?

    I will bow out to someone that has more patience then I.
    Thanks,

    Bud

  5. #5
    Join Date
    May 2012
    Location
    Wales UK
    Posts
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    i give you what you need in the post above yours.

  6. #6
    Join Date
    Jan 2011
    Location
    Southeastern CT
    Posts
    612
    Thanks
    46
    Thanked 32 Times in 32 Posts

    Default

    That link goes to google lib plugin download

    I am not going to go through getting that when all we need to help you is for you to post a link for us to look at-sorry but your prevoious post did nothing to show me what script you were using or how you used it.
    Putting a link to a download for others to have to down load is not the right way to go in my opinion.

    Maybe some else can help you as want
    Thanks,

    Bud

  7. #7
    Join Date
    May 2012
    Location
    Wales UK
    Posts
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    I couldent post the code it was to long, thats why i give you the link to the zip file with the script that you are asking for inside it, here is the code that goes inside recaptchalib.php


    PHP Code:
    <?php

    function _recaptcha_qsencode ($data) {
            
    $req "";
            foreach ( 
    $data as $key => $value )
                    
    $req .= $key '=' urlencodestripslashes($value) ) . '&';

            
    // Cut the last '&'
            
    $req=substr($req,0,strlen($req)-1);
            return 
    $req;
    }

    function 
    _recaptcha_http_post($host$path$data$port 80) {

            
    $req _recaptcha_qsencode ($data);

            
    $http_request  "POST $path HTTP/1.0\r\n";
            
    $http_request .= "Host: $host\r\n";
            
    $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
            
    $http_request .= "Content-Length: " strlen($req) . "\r\n";
            
    $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
            
    $http_request .= "\r\n";
            
    $http_request .= $req;

            
    $response '';
            if( 
    false == ( $fs = @fsockopen($host$port$errno$errstr10) ) ) {
                    die (
    'Could not open socket');
            }

            
    fwrite($fs$http_request);

            while ( !
    feof($fs) )
                    
    $response .= fgets($fs1160); // One TCP-IP packet
            
    fclose($fs);
            
    $response explode("\r\n\r\n"$response2);

            return 
    $response;
    }

    function 
    recaptcha_get_html ($pubkey$error null$use_ssl false)
    {
        if (
    $pubkey == null || $pubkey == '') {
            die (
    "To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
        }
        
        if (
    $use_ssl) {
                    
    $server RECAPTCHA_API_SECURE_SERVER;
            } else {
                    
    $server RECAPTCHA_API_SERVER;
            }

            
    $errorpart "";
            if (
    $error) {
               
    $errorpart "&amp;error=" $error;
            }
            return 
    '<script type="text/javascript" src="'$server '/challenge?k=' $pubkey $errorpart '"></script>

        <noscript>
              <iframe src="'
    $server '/noscript?k=' $pubkey $errorpart '" height="300" width="500" frameborder="0"></iframe><br/>
              <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
              <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
        </noscript>'
    ;
    }




    /**
     * A ReCaptchaResponse is returned from recaptcha_check_answer()
     */
    class ReCaptchaResponse {
            var 
    $is_valid;
            var 
    $error;
    }

    function 
    recaptcha_check_answer ($privkey$remoteip$challenge$response$extra_params = array())
    {
        if (
    $privkey == null || $privkey == '') {
            die (
    "To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
        }

        if (
    $remoteip == null || $remoteip == '') {
            die (
    "For security reasons, you must pass the remote ip to reCAPTCHA");
        }

        
        
            
    //discard spam submissions
            
    if ($challenge == null || strlen($challenge) == || $response == null || strlen($response) == 0) {
                    
    $recaptcha_response = new ReCaptchaResponse();
                    
    $recaptcha_response->is_valid false;
                    
    $recaptcha_response->error 'incorrect-captcha-sol';
                    return 
    $recaptcha_response;
            }

            
    $response _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER"/recaptcha/api/verify",
                                              array (
                                                     
    'privatekey' => $privkey,
                                                     
    'remoteip' => $remoteip,
                                                     
    'challenge' => $challenge,
                                                     
    'response' => $response
                                                     
    ) + $extra_params
                                              
    );

            
    $answers explode ("\n"$response [1]);
            
    $recaptcha_response = new ReCaptchaResponse();

            if (
    trim ($answers [0]) == 'true') {
                    
    $recaptcha_response->is_valid true;
            }
            else {
                    
    $recaptcha_response->is_valid false;
                    
    $recaptcha_response->error $answers [1];
            }
            return 
    $recaptcha_response;

    }

    /**
     * gets a URL where the user can sign up for reCAPTCHA. If your application
     * has a configuration page where you enter a key, you should provide a link
     * using this function.
     * @param string $domain The domain where the page is hosted
     * @param string $appname The name of your application
     */
    function recaptcha_get_signup_url ($domain null$appname null) {
        return 
    "https://www.google.com/recaptcha/admin/create?" .  _recaptcha_qsencode (array ('domains' => $domain'app' => $appname));
    }

    function 
    _recaptcha_aes_pad($val) {
        
    $block_size 16;
        
    $numpad $block_size - (strlen ($val) % $block_size);
        return 
    str_pad($valstrlen ($val) + $numpadchr($numpad));
    }

    /* Mailhide related code */

    function _recaptcha_aes_encrypt($val,$ky) {
        if (! 
    function_exists ("mcrypt_encrypt")) {
            die (
    "To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
        }
        
    $mode=MCRYPT_MODE_CBC;   
        
    $enc=MCRYPT_RIJNDAEL_128;
        
    $val=_recaptcha_aes_pad($val);
        return 
    mcrypt_encrypt($enc$ky$val$mode"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
    }


    function 
    _recaptcha_mailhide_urlbase64 ($x) {
        return 
    strtr(base64_encode ($x), '+/''-_');
    }

    /* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
    function recaptcha_mailhide_url($pubkey$privkey$email) {
        if (
    $pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
            die (
    "To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
                 
    "you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>");
        }
        

        
    $ky pack('H*'$privkey);
        
    $cryptmail _recaptcha_aes_encrypt ($email$ky);
        
        return 
    "http://www.google.com/recaptcha/mailhide/d?k=" $pubkey "&c=" _recaptcha_mailhide_urlbase64 ($cryptmail);
    }

    /**
     * gets the parts of the email to expose to the user.
     * eg, given johndoe@example,com return ["john", "example.com"].
     * the email is then displayed as john...@example.com
     */
    function _recaptcha_mailhide_email_parts ($email) {
        
    $arr preg_split("/@/"$email );

        if (
    strlen ($arr[0]) <= 4) {
            
    $arr[0] = substr ($arr[0], 01);
        } else if (
    strlen ($arr[0]) <= 6) {
            
    $arr[0] = substr ($arr[0], 03);
        } else {
            
    $arr[0] = substr ($arr[0], 04);
        }
        return 
    $arr;
    }

    /**
     * Gets html to display an email address given a public an private key.
     * to get a key, go to:
     *
     * [url]http://www.google.com/recaptcha/mailhide/apikey[/url]
     */
    function recaptcha_mailhide_html($pubkey$privkey$email) {
        
    $emailparts _recaptcha_mailhide_email_parts ($email);
        
    $url recaptcha_mailhide_url ($pubkey$privkey$email);
        
        return 
    htmlentities($emailparts[0]) . "<a href='" htmlentities ($url) .
            
    "' onclick=\"window.open('" htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" htmlentities ($emailparts [1]);

    }


    ?>

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •