Bootsrap jQuery captcha problem

Sly

I don't break the rules I bend them.
Oct 28, 2016
246
38
I keep getting this error on my submit form, been struggling to fix it can't find the error please hel

Notice: Undefined index: recaptcha_challenge_field in /home3/retrorank/public_html/pages/submit.php on line 25
Notice: Undefined index: recaptcha_response_field in /home3/retrorank/public_html/pages/submit.php on line 25

heres my form code
$captcha = recaptcha_check_answer ($settings->private_key, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"

please ask me for further details
 

Sly

I don't break the rules I bend them.
Oct 28, 2016
246
38
Where is the rest of the code?
Sorry for my late reply, I just woke-up. Heres my complete submit.php doc, I dont understand what am I doing wrong here with the reCaptcha?

PHP:
<?php
User::check_permission(0);
include 'core/functions/recaptchalib.php';
include 'core/classes/Query.php';

$address =  $name = $country_code = $youtube_link = $website = $description = null;
$connection_port = $query_port = 25565;

if(!empty($_POST)) {

    /* Define some variables */
    $address = filter_var($_POST['address'], FILTER_SANITIZE_STRING);
    $connection_port = (int) $_POST['connection_port'];
    $query_port = (int) $_POST['query_port'];
    $date = new DateTime();
    $date = $date->format('Y-m-d H:i:s');
    $active = $status = '1';
    $private = ($settings->new_servers_visibility) ? '0' : '1';
    $name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
    $image = (empty($_FILES['image']['name']) == false) ? true : false;
    $country_code = (country_check(0, $_POST['country_code'])) ? $_POST['country_code'] : 'US';
    $youtube_link = filter_var($_POST['youtube_id'], FILTER_SANITIZE_STRING);
    $youtube_id = youtube_url_to_id($youtube_link);
    $website = filter_var($_POST['website'], FILTER_VALIDATE_URL);
    $description = filter_var($_POST['description'], FILTER_SANITIZE_STRING);
    
    $captcha = recaptcha_check_answer ($settings->private_key, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
    $allowed_extensions = array('jpg', 'jpeg', 'gif');
    $required_fields = array('address', 'connection_port', 'query_port', 'category_id');

    /* Get category data */
    $category = new StdClass;

    $stmt = $database->prepare("SELECT `category_id`, `name`, `url` FROM `categories` WHERE `category_id` = ?");
    $stmt->bind_param('s', $_POST['category_id']);
    $stmt->execute();
    bind_object($stmt, $category);
    $stmt->fetch();
    $stmt->close();
    
    /* Determine if category exists */
    if($category !== NULL) {
        $category->exists = true;
    } else {
        $category = new StdClass;
        $category->exists = false;
    }

    /* If the category doesn't exist, set an error message.If it exists, continue with the checks */
    if(!$category->exists) {
        $_SESSION['error'][] = $language['errors']['category_not_found'];
    } else {

        /* Query the server with a specific protocol */
        $query = new Query($address, $query_port);
        $info  = $query->query();

        if(!$info && $query->status) {
            $_SESSION['error'][] = $language['errors']['server_no_data'];
        } else
        if(!$info && !$query->status) {
            $_SESSION['error'][] = $language['errors']['server_offline'];
        }

    }

    /* Check for the required fields */
    foreach($_POST as $key=>$value) {
        if(empty($value) && in_array($key, $required_fields) == true) {
            $_SESSION['error'][] = $language['errors']['marked_fields_empty'];
            break 1;
        }
    }

    /* Check for banner image errors */
    if($image == true) {
        $image_file_name        = $_FILES['image']['name'];
        $image_file_extension    = explode('.', $image_file_name);
        $image_file_extension    = strtolower(end($image_file_extension));
        $image_file_temp        = $_FILES['image']['tmp_name'];
        $image_file_size        = $_FILES['image']['size'];
        list($image_width, $image_height)    = getimagesize($image_file_temp);

        if(in_array($image_file_extension, $allowed_extensions) !== true) {
            $_SESSION['error'][] = $language['errors']['incorrect_file_type'];
        }
        if($image_file_size > $settings->cover_max_size) {
            $_SESSION['error'][] = sprintf($language['errors']['image_size'], formatBytes($settings->cover_max_size));
        }
    }

    /* More checks */
    if(!$captcha->is_valid) {
        $_SESSION['error'][] = $language['errors']['captcha_not_valid'];
    }
    if(strlen($name) > 64 || strlen($name) < 3) {
        $_SESSION['error'][] = $language['errors']['server_name_length'];
    }
    if(strlen($description) > 2560) {
        $_SESSION['error'][] = $language['errors']['description_too_long'];
    }
    $server = new Server($address, $connection_port);
    if($server->exists) {
        $_SESSION['error'][] = $language['errors']['server_already_exists'];
    }


    /* If there are no errors, add the server to the database */
    if(empty($_SESSION['error'])) {

        /* Banner process */
        if($image == true) {

            /* Generate new name for image */
            $image_new_name = md5(time().rand()) . '.' . $image_file_extension;

            /* Resize if needed & upload the image */
            if($image_width != '468' || $image_height != '60') {
                resize($image_file_temp, 'user_data/server_banners/' . $image_new_name, '468', '60');
            } else {
                move_uploaded_file($image_file_temp, 'user_data/server_banners/' . $image_new_name);   
            }

        }

        $image_name = ($image == true) ? $image_new_name : '';

        /* Add the server to the database as private */
        $stmt = $database->prepare("INSERT INTO `servers` (`user_id`, `category_id`, `address`, `connection_port`, `query_port`, `private`, `active`, `status`, `date_added`, `image`, `name`, `country_code`, `youtube_id`, `website`, `description`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $stmt->bind_param('sssssssssssssss',  $account_user_id, $category->category_id, $address, $connection_port, $query_port, $private, $active, $status, $date, $image_name, $name, $country_code, $youtube_id, $website, $description);
        $test = $stmt->execute();
        $stmt->close();

        /* Set the success message and redirect */
        $_SESSION['success'][] = $language['messages']['server_added'];
        redirect('my-servers');
    }

display_notifications();

}


initiate_html_columns();

?>


<h3><?php echo $language['headers']['submit']; ?></h3>

<form action="" method="post" role="form" enctype="multipart/form-data">
    <div class="form-group">
        <label><?php echo $language['forms']['server_address']; ?> *</label>
        <input type="text" name="address" class="form-control" value="<?php echo $address; ?>" />
    </div>

    <div class="form-group">
        <label><?php echo $language['forms']['server_connection_port']; ?> *</label>
        <p class="help-block"><?php echo $language['forms']['server_connection_port_help']; ?></p>
        <input type="text" name="connection_port" class="form-control" value="<?php echo $connection_port; ?>" />
    </div>

    <div class="form-group">
        <label><?php echo $language['forms']['server_query_port']; ?> *</label>
        <p class="help-block"><?php echo $language['forms']['server_query_port_help']; ?></p>
        <input type="text" name="query_port" class="form-control" value="<?php echo $query_port; ?>" />
    </div>

    <div class="form-group">
        <label><?php echo $language['forms']['server_category']; ?> *</label>
        <select name="category_id" class="form-control">
            <?php
            $result = $database->query("SELECT `category_id`, `name` FROM `categories` WHERE `parent_id` = '0'  ORDER BY `name` ASC");
            while($category = $result->fetch_object()) {
                echo '<option value="' . $category->category_id . '">' . $category->name . '</option>';

                $subcategory_result = $database->query("SELECT `category_id`, `name` FROM `categories` WHERE `parent_id` = {$category->category_id} ORDER BY `name` ASC");
                while($subcategory = $subcategory_result->fetch_object()) {
                    echo '<option value="' . $subcategory->category_id . '">--' . $subcategory->name . '</option>';

                }
            }
            ?>   
        </select>
    </div>

    <hr />

    <div class="form-group">
        <label><?php echo $language['forms']['server_banner']; ?></label><br />
        <p class="help-block"><?php echo $language['forms']['server_banner_help']; ?></p>
        <input type="file" name="image" class="form-control" />
    </div>

    <div class="form-group">
        <label><?php echo $language['forms']['server_name']; ?></label>
        <input type="text" name="name" class="form-control" value="<?php echo $name; ?>" />
    </div>


    <div class="form-group">
        <label><?php echo $language['forms']['server_country']; ?></label>
        <select name="country_code" class="form-control">
            <?php country_check(1, $country_code); ?>
        </select>
    </div>

    <div class="form-group">
        <label><?php echo $language['forms']['server_youtube_id']; ?></label>
        <p class="help-block"><?php echo $language['forms']['server_youtube_id_help']; ?></p>
        <input type="text" name="youtube_id" class="form-control" value="<?php echo $youtube_link; ?>" />
    </div>

    <div class="form-group">
        <label><?php echo $language['forms']['server_website']; ?></label>
        <input type="text" name="website" class="form-control" value="<?php echo $website; ?>"/>
    </div>

    <div class="form-group">
        <label><?php echo $language['forms']['server_description']; ?></label>
        <p class="help-block"><?php echo $language['forms']['server_description_help']; ?></p>
        <textarea name="description" class="form-control" rows="6"><?php echo $description; ?></textarea>
    </div>

    <div class="form-group">
          <?php echo recaptcha_get_html($settings->public_key); ?>
    </div>

    <div class="form-group">
        <button type="submit" name="submit" class="btn btn-default col-lg-4"><?php echo $language['forms']['submit']; ?></button><br /><br />
    </div>

</form>
 

Sly

I don't break the rules I bend them.
Oct 28, 2016
246
38
You have no form names that would match this:

$_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]

What is the content of core/functions/recaptchalib.php
Oh right? Do you mean reCapcha hasn't been enabled on my website? Heres my recapchalib.php

PHP:
<?php
/*
 * This is a PHP library that handles calling reCAPTCHA.
 *    - Documentation and latest version
 *          http://recaptcha.net/plugins/php/
 *    - Get a reCAPTCHA API Key
 *          https://www.google.com/recaptcha/admin/create
 *    - Discussion group
 *          http://groups.google.com/group/recaptcha
 *
 * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
 * AUTHORS:
 *   Mike Crawford
 *   Ben Maurer
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

/**
 * The reCAPTCHA server URL's
 */
define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api");
define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api");
define("RECAPTCHA_VERIFY_SERVER", "www.google.com");

/**
 * Encodes the given data into a query string format
 * @param $data - array of string elements to be encoded
 * @return string - encoded request
 */
function _recaptcha_qsencode ($data) {
        $req = "";
        foreach ( $data as $key => $value )
                $req .= $key . '=' . urlencode( stripslashes($value) ) . '&';

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



/**
 * Submits an HTTP POST to a reCAPTCHA server
 * @param string $host
 * @param string $path
 * @param array $data
 * @param int port
 * @return array response
 */
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, $errstr, 10) ) ) {
                die ('Could not open socket');
        }

        fwrite($fs, $http_request);

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

        return $response;
}



/**
 * Gets the challenge HTML (javascript and non-javascript version).
 * This is called from the browser, and the resulting reCAPTCHA HTML widget
 * is embedded within the HTML form it was called from.
 * @param string $pubkey A public key for reCAPTCHA
 * @param string $error The error given by reCAPTCHA (optional, default is null)
 * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)

 * @return string - The HTML to be embedded in the user's form.
 */
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;
}


/**
  * Calls an HTTP POST function to verify if the user's guess was correct
  * @param string $privkey
  * @param string $remoteip
  * @param string $challenge
  * @param string $response
  * @param array $extra_params an array of extra variables to post to the server
  * @return ReCaptchaResponse
  */
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) == 0 || $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($val, strlen ($val) + $numpad, chr($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 [email protected]
 */
function _recaptcha_mailhide_email_parts ($email) {
    $arr = preg_split("/@/", $email );

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

/**
 * Gets html to display an email address given a public an private key.
 * to get a key, go to:
 *
 * http://www.google.com/recaptcha/mailhide/apikey
 */
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]);

}


?>
 

Sly

I don't break the rules I bend them.
Oct 28, 2016
246
38
The form has the correct information from what I am seeing. Are you sure the recaptchalib.php file is being included correctly?
Yes and this is where I am messing up, I just got a site and a private key from google and I don't exactly know where to address them, if you will kindly guide me..
 

Ecko

23:37 [autobots] -!- eckostylez [[email protected]]
Nov 25, 2012
1,396
960
Are these the only errors that are occurring:

Notice: Undefined index: recaptcha_challenge_field in /home3/retrorank/public_html/pages/submit.php on line 25
Notice: Undefined index: recaptcha_response_field in /home3/retrorank/public_html/pages/submit.php on line 25

Looks like you are using a cPanel based host. If you're comfortable, then you can provide me access (PM) and I can take a look.
 

Sly

I don't break the rules I bend them.
Oct 28, 2016
246
38
Are these the only errors that are occurring:

Notice: Undefined index: recaptcha_challenge_field in /home3/retrorank/public_html/pages/submit.php on line 25
Notice: Undefined index: recaptcha_response_field in /home3/retrorank/public_html/pages/submit.php on line 25

Looks like you are using a cPanel based host. If you're comfortable, then you can provide me access (PM) and I can take a look.
Sure thing, I'll prove you with all the info you need =]
 
Sure thing, I'll prove you with all the info you need =]

Its just the recaptcha problem I have also when registering on my website, same thing and when adding a minecraft server requires recaptcha
 

Users who are viewing this thread

Top