php - How to validate captcha in registration form? -
i'm trying create registration form captcha, using this tutorial, don't know how validate captcha, can me?
<?php include ('php/mysql_prisijungimas.php'); if (isset($_post['formsubmitted'])) { $error = array();//declare array store error message if (empty($_post['name'])) {//if no name has been supplied $error[] = 'please enter name ';//add array "error" } else { $name = $_post['name'];//else assign variable } if (empty($_post['e-mail'])) { $error[] = 'please enter email '; } else { if (preg_match("/^([a-za-z0-9])+([a-za-z0-9\._-])*@([a-za-z0-9_-])+([a-za-z0-9\._-]+)+$/", $_post['e-mail'])) { //regular expression email validation $email = $_post['e-mail']; } else { $error[] = 'your email address invalid '; } } if (empty($_post['password'])) { $error[] = 'please enter password '; } else { $password = $_post['password']; } if (empty($error)) //send database if there's no error ' { // if everything's ok... // make sure email address available: $query_verify_email = "select * members email ='$email'"; $result_verify_email = mysqli_query($dbc, $query_verify_email); if (!$result_verify_email) {//if query failed ,similar if($result_verify_email==false) echo ' database error occured '; } if (mysqli_num_rows($result_verify_email) == 0) { // if no previous user using email . // create unique activation code: $activation = md5(uniqid(rand(), true)); $query_insert_user = "insert `members` ( `username`, `email`, `password`, `activation`) values ( '$name', '$email', '$password', '$activation')"; $result_insert_user = mysqli_query($dbc, $query_insert_user); if (!$result_insert_user) { echo 'query failed '; } if (md5($_post['norobot']) == $_session['randomnr2']) { // here place code executed if captcha test passes echo "hey great , appears not robot"; } else { // here place code executed if captcha test fails echo "you're naughty robot!"; } if (mysqli_affected_rows($dbc) == 1) { //if insert query successfull. // send email: $message = " activate account, please click on link:\n\n"; $message .= website_url . '/activate.php?email=' . urlencode($email) . "&key=$activation"; mail($email, 'registration confirmation', $message, 'from: test@gmail.com'); // flush buffered output. // finish page: echo '<div class="success">thank registering! confirmation email has been sent '.$email.' please click on activation link activate account </div>'; } else { // if did not run ok. echo '<div class="errormsgbox">you not registered due system error. apologize inconvenience.</div>'; } } else { // email address not available. echo '<div class="errormsgbox" >that email address has been registered. </div>'; } } else {//if "error" array contains error msg , display them echo '<div class="errormsgbox"> <ol>'; foreach ($error $key => $values) { echo ' <li>'.$values.'</li>'; } echo '</ol></div>'; } mysqli_close($dbc);//close db connection } // end of main submit conditional. ?> <head> <meta charset="utf-8"> <!-- remove line if use .htaccess --> <meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1"> <meta name="viewport" content="width=device-width"> <meta name="description" content="test."> <meta name="author" content="test"> <title>test</title> <link href='http://fonts.googleapis.com/css?family=open+sans:400italic,400,700' rel='stylesheet' type='text/css'> <link rel="stylesheet" href="css/stilius.css"> </head> <body> <div class="container"> <hr> <div class="home-page main"> <section class="grid-wrap" > <header class="grid col-full"> <div class="right"> <form align="center" action="registracija.php" method="post" class="registration_form"> <fieldset> <legend>registracijos forma </legend> <div class="elements"> <label for="name">slapyvardis :</label> <input type="text" id="name" name="name" size="25" /> </div> <div class="elements"> <label for="e-mail">el. paštas :</label> <input type="text" id="e-mail" name="e-mail" size="25" /> </div> <div class="elements"> <label for="password">slaptažodis:</label> <input type="password" id="password" name="password" size="25" /> <img src="captcha_code_file.php?rand=<?php echo rand(); ?>" id="captchaimg" > <label for="message">enter code above here :</label> <input id="6_letters_code" name="6_letters_code" type="text"> </div> <div class="submit"> <input type="hidden" name="formsubmitted" value="true" /> <input type="submit" value="registruotis!" /> </div> </fieldset> </form> </div> </body> </html>
captcha string created using image library.process below:
1- create random or dictionary word string 2- store anywhere [session in case before displaying registration form 3- compare session value user submit value
your code :
if (md5($_post['norobot']) == $_session['randomnr2']) { echo 'you passed captcha test'; } $_session['randomnr2'] random string created , stored in session.before storing md5 encrypted.
Comments
Post a Comment