darkesthour Posted May 10, 2010 Share Posted May 10, 2010 Hi I've tried adding a recaptcha for my register page. For some reason it doesn't register , it also does't do recap check properly here is the code: any ideas? <html> <head> <link rel="stylesheet" type="text/css" href="./css/page.css" /> <br>Be sure to use only lowercase letters for account for account.<br /> </head> <body> <table <?php # Get the reCAPTCHA library require_once('recaptchalib.php'); # These are /not/ real keys - you must replace them with your *own* keys # obtained from http://recaptcha.net/api/getkey define('PUBLIC_KEY', 'recap public key'); define('PRIVATE_KEY', 'recap private key'); # Did the user fail the captcha test? $error = null; require('./configs/reg_conf.php'); function doesUsernameExist($name){ $exit = FALSE; $result = @mssql_query("SELECT * FROM ACCOUNT_TBL WHERE account='$name'"); if (mssql_num_rows($result) != 0){ $exit = TRUE; } return $exit; } if(isset($_POST['submit'])){ $user = preg_replace ("[^A-Za-z0-9]", "", $_POST['username']); $pass = preg_replace ("[^A-Za-z0-9]", "", $_POST['password']); if($_POST['username'] == ""){ echo '<font color="red">Enter a user.</font><br /><br />'; } else if($_POST['password'] == ""){ echo '<font color="red">Enter a password.</font><br /><br />'; } else if ((strlen($_POST['username']) > 16) || (strlen($_POST['username']) < 3)){ echo '<font color="red">The user should be 3 to 16 characters.</font><br /><br />'; } else if ((strlen($_POST['password']) > 16) || (strlen($_POST['password']) < 3)){ echo '<font color="red">The password should be 3 to 16 characters.</font><br /><br />'; } else if($_POST['username'] != $user){ echo '<font color="red">User with invalid characters.</font><br /><br />'; } else if($_POST['password'] != $pass){ echo '<font color="red">Password with invalid characters.</font><br /><br />'; } else { $pass = md5('kikugalanet' . $pass); if ($_POST["recaptcha_response_field"]) { $response = recaptcha_check_answer( PRIVATE_KEY, $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field'] ); if ( $response->is_valid ) { # The user passed the reCAPTCHA test: form submission should continue # Your other form validation logic should go here. # For example # ... validate user input ... # ... store form data in a database ... # ... redirect to 'thank you' page } else { # The user failed the reCAPTCHA test so we need # to fill in the error message and re-try the # form submission $error = $response->error; } } if(!doesUsernameExist($user)){ $stmt = mssql_init('createaccount', $link); mssql_bind($stmt, '@account', $user, SQLVARCHAR, false, false, 15); mssql_bind($stmt, '@password', $pass, SQLVARCHAR, false, false, 32); mssql_execute($stmt) or die ("Something is wrong on the execution"); mssql_free_statement($stmt); echo '<font color="blue">Register Successful.</font><br /><br />'; } else { echo '<font color="red">User already Exist.</font><br /><br />'; } } mssql_close(); } echo '<form action="register.php" method="post">'; echo recaptcha_get_html( PUBLIC_KEY, $error ); echo 'Username: <input type="text" name="username" /><br />'; echo 'Password: <input type="password" name="password" /><br />'; echo '<input type="submit" name="submit" value="Register" />'; echo '</form>'; ?> </body> </html> Also heres a test code for just recapture on its own which works: <html> <body> <form action="" method="post"> <?php # Get the reCAPTCHA library require_once('recaptchalib.php'); # These are /not/ real keys - you must replace them with your *own* keys # obtained from http://recaptcha.net/api/getkey define('PUBLIC_KEY', 'public'); define('PRIVATE_KEY', 'private'); # Did the user fail the captcha test? $error = null; # This is where we process the user's response. We don't # do this when the form is initially displayed - only # when the user submits it. if ($_POST["recaptcha_response_field"]) { $response = recaptcha_check_answer( PRIVATE_KEY, $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field'] ); if ( $response->is_valid ) { # The user passed the reCAPTCHA test: form submission should continue # Your other form validation logic should go here. # For example # ... validate user input ... # ... store form data in a database ... # ... redirect to 'thank you' page } else { # The user failed the reCAPTCHA test so we need # to fill in the error message and re-try the # form submission $error = $response->error; } } # Display the reCAPTCHA challenge. The first time # through $error will be null. echo recaptcha_get_html( PUBLIC_KEY, $error ); ?> <br /> <!-- example form fields - your own fields go here --> Username: <input type="text" name="username" value="" /><br /> Email address: <input type="text" name="email" value="" /><br /> <input type="submit" value="submit" /> </form> </body> </html> Link to comment https://forums.phpfreaks.com/topic/201244-my-register-page-script-recaptcha/ Share on other sites More sharing options...
Muddy_Funster Posted May 10, 2010 Share Posted May 10, 2010 on your actual page, have you changes the re-captcha keys to valid ones? Link to comment https://forums.phpfreaks.com/topic/201244-my-register-page-script-recaptcha/#findComment-1055768 Share on other sites More sharing options...
darkesthour Posted May 10, 2010 Author Share Posted May 10, 2010 Yes i have. Link to comment https://forums.phpfreaks.com/topic/201244-my-register-page-script-recaptcha/#findComment-1055769 Share on other sites More sharing options...
darkesthour Posted May 11, 2010 Author Share Posted May 11, 2010 Bump Any ideas anyone? Link to comment https://forums.phpfreaks.com/topic/201244-my-register-page-script-recaptcha/#findComment-1056377 Share on other sites More sharing options...
Kryptix Posted May 11, 2010 Share Posted May 11, 2010 Here's mine... Hopefully you can take the bits you need: <?php include "recaptcha.php"; if (isset($_POST['submit'])) { $username = trim($_POST['username']); $password = trim($_POST['password1']); $password2 = trim($_POST['password2']); $email = trim($_POST['email']); $captcha = recaptcha_check_answer ($privatekey, $_SERVER['REMOTE_ADDR'], $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']); if ($password == NULL || $password2 == NULL || $email == NULL || $username == NULL) $error = "Please ensure that every field is complete."; else if (!$captcha->is_valid) $error = "The Captcha you entered was invalid. If you cannot read the text please click the refresh button. If you feel there's a problem with the Captcha system please <a href=\"mailto:[email protected]\">e-mail us</a> on: <a href=\"mailto:[email protected]\">[email protected]</a>"; else if (!preg_match("/^[a-zA-Z0-9 ]+$/", $username)) $error = "Your username can only contain numbers, letters and spaces."; else if (!preg_match("/^[a-zA-Z0-9 ]+$/", $password)) $error = "Your password can only contain numbers, letters and spaces."; else if ($password != $password2) $error = "Your passwords did not match. Please ensure they're the same."; else if (strlen($username) > 25 || strlen($username) < 2) $error = "Your username must be between 2 and 25 characters in length."; else if (strlen($password) > 16 || strlen($password) < 4) $error = "Your password must be between 4 and 16 characters in length."; else if (strlen($email) > 70 || strlen($email) < 10) $error = "Your e-mail must be between 10 and 70 characters in length."; else if (!preg_match("/^\b[A-Z0-9._-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$\b/i", $email)) $error = "Your e-mail seems to be invalid."; else { ?> Link to comment https://forums.phpfreaks.com/topic/201244-my-register-page-script-recaptcha/#findComment-1056448 Share on other sites More sharing options...
darkesthour Posted May 13, 2010 Author Share Posted May 13, 2010 Thanks a lot helped a lot. Link to comment https://forums.phpfreaks.com/topic/201244-my-register-page-script-recaptcha/#findComment-1057757 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.