Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/06/2013, 15:34
Jose789
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 11 meses
Puntos: 4
Registro que pueden saltarse el captha

Hola muy buenas noches, tengo un problema con mi web y es que le acabo de poner un captha siguiendo las instrucciones de [URL="http://www.desarrolloweb.com/articulos/poner-captcha-en-3-pasos.html"]http://www.desarrolloweb.com/articulos/poner-captcha-en-3-pasos.html[/URL] y el problema es que se lo pueden saltar... relleno los datos de mi formulario y sin poner captha ni nada le doy a registrarme y se registra sin pedir el captha... Este es mi código.


Código:
<?php

require_once('recaptchalib.php'); 
//Llaves de la captcha
$captcha_publickey = "Key Publica";
$captcha_privatekey = "Key privada";
//por ahora ponemos a null el error de la captcha
$error_captcha=null;
?>
if ($_POST) {
$captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
	$_SERVER["REMOTE_ADDR"],
	$_POST["recaptcha_challenge_field"],
	$_POST["recaptcha_response_field"]);
   if ($captcha_respuesta->is_valid) {
      //todo correcto
      //hacemos lo que se deba hacer una vez recibido el formulario válido
      echo "Todo correcto!";
   }else{
      //El código de validación de la imagen está mal escrito.
      echo "Has escrito mal el texto";
      $error_captcha = $captcha_respuesta->error;
   }
    if(isset($_POST['habboname']) && !empty($_POST['habboname']) &&
    isset($_POST['password']) && !empty($_POST['password']) &&
    validar_email($_POST['email']) && !empty($_POST['email']))
	
	{
        // Si entramos es que todo se ha realizado correctamente
		$password = md5($_POST['password']);
		$username = htmlentities($_POST['habboname']);
		$mail = htmlentities($_POST['email']);
		$fecha = time();
        $fecha2 = date("d/m/Y",$fecha);
		
        $link = mysql_connect ($sqlhostname, $sqlusername, $sqlpassword);
        mysql_select_db($sqldb,$link);
		
		$queEmp = "SELECT name FROM users WHERE name='$username'";
		$resEmp = mysql_query($queEmp, $link) or die(mysql_error());
		$totEmp = mysql_num_rows($resEmp);
		if($totEmp > 0){
		echo "El usuario ingresado no está disponible";
		exit();
		}
		
		$queEmp = "SELECT email FROM users WHERE email='$mail'";
		$resEmp = mysql_query($queEmp, $link) or die(mysql_error());
		$totEmp = mysql_num_rows($resEmp);
		if($totEmp > 0){
		echo 'El email ingresado no esta disponible';
		exit();
		}
		
        // Con esta sentencia SQL insertaremos los datos en la base de datos
        mysql_query("INSERT INTO users (name,password,email,rank,hbirth,credits)
        VALUES ('{$username}','{$password}','{$mail}','1','{$fecha2}','500')",$link);
		mysql_query("INSERT INTO smf_members (member_name,real_name,passwd,email_address) 
		VALUES ('".$username."','".$username."','".sha1(sha1(strtolower($password)))."','".$mail."')",$link);
          
        // Ahora comprobaremos que todo ha ido correctamente
        $my_error = mysql_error($link);

        if(!empty($my_error)) {

            echo "Ha habido un error al insertar los valores. $my_error";

        } else {

            echo "Te has registrado correctamente";

        }

    } else {

        echo "Error, no has introducido todos los datos";

    }
		}
		
		?>