注册码和Recaptcha

时间:2012-10-12 05:06:08

标签: php registration recaptcha

我为此代码中缺少结构事先道歉。我知道它不高效或漂亮,地狱,我加上recaptcha它现在甚至都不起作用。这让我想到了我的问题,代码有什么问题?验证码为什么不出现?我怎样才能让它变得更好?

<?php
include('config.php');
#reCaptcha
require_once('recaptcha/recaptchalib.php');
$publickey = "dsafsdfasdfq2Fv9JfDUBnOCTpm7S";
$privatekey = "asdfasdfasdfaMR15mi7sXXnv42-fffffffff";
$resp = null;
$error = null;
#Setup Credentials
$uname = mysql_real_escape_string($_POST['uname']);
$escapedPW = mysql_real_escape_string($_POST['pass']);
$email = mysql_real_escape_string($_POST['email']);
#Salt Credentials
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
$saltedPW =  $escapedPW . $salt;
$hashedPW = hash('sha256', $saltedPW);
#checks and query
$usercheck = mysql_query("SELECT * FROM users WHERE username = '$uname'");
$emailcheck = mysql_query("SELECT * FROM users WHERE email = '$email'");
$count = mysql_num_rows($usercheck);
$count2 = mysql_num_rows($emailcheck);
$query = "INSERT INTO users (username, password, email, salt) VALUES ('$uname', '$hashedPW', '$email', '$salt')";
$result = "";
#recaptcha validation
                 function register(){
    if(empty($_POST['uname']) || empty($_POST['pass']) || empty($_POST['email'] )){
      echo 'A field is empty!';}      
    else{
            if($count != 0){$result = 'Username is already registered.';}
            elseif ($count2 != 0 ) {$result = 'Email is already registered.';}
                else{ mysql_query($query); $result = 'Registration Successful!';}
      }
  }

if ($_POST["recaptcha_response_field"]) {
        $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);
        if ($resp->is_valid) {
          register();
        } else {
              die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")");
        }
} 
?>
<html><head><title>Register</title><link rel="stylesheet" type="text/css" href="style/style.css" /></head>
<body>
<div class="wrapper">      
         <div id="container">
    <?php echo $result; ?>
<div class="center">
        <form action="register.php" method="POST">
        <input type="text" onclick="this.value=''" value="Username"  name="uname" /> <br />
        <input type="password" onclick="this.value=''" value="password" name="pass" /> <br />
        <input type="email" onclick="this.value=''" value="Email" name="email" /> <br />
        <?php recaptcha_get_html($publickey); ?>
        <input type="submit" name="submit"></form>
        <html><head></head></div>
</div>
<footer></footer>
      </div>
   </body>
</html> 

1 个答案:

答案 0 :(得分:-1)

尝试在<input type="email" onclick="this.value=''" value="Email" name="email" /> <br />

之后添加以下代码

添加此

# the response from reCAPTCHA
$resp = null;
# the error code from reCAPTCHA, if any
$error = null;

# was there a reCAPTCHA response?
if ($_POST["recaptcha_response_field"]) {
        $resp = recaptcha_check_answer ($privatekey,
                                        $_SERVER["REMOTE_ADDR"],
                                        $_POST["recaptcha_challenge_field"],
                                        $_POST["recaptcha_response_field"]);

        if ($resp->is_valid) {
                echo "You got it!";
        } else {
                # set the error code so that we can display it
                $error = $resp->error;
        }
}
echo recaptcha_get_html($publickey, $error);