Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

El formulario de registro no envía los datos

Buenas!

Primero pido disculpas por no ser más específico con el título, pero no sabía como explicarlo en tan pocas palabras.

En segundo lugar, os pongo en situación. Tengo un formulario de registro con el siguiente código:

unirme.php
<?php

if (!isset($_GET['accion'])) {
    echo '<div class="centrado">
    <form onsubmit="return false" class="formulario formulario-pequenio" id="frmRegistro" >
        <div class="formulario-grupo">
            <label for="nombre">Nombre</label>
            <input type="text" name="nombre" id="nombre" placeholder="Nombre..."> </div>
        <div class="formulario-grupo">
            <label for="usuario">Usuario</label>
            <input type="text" name="usuario" id="usuario" placeholder="Usuario..."> </div>
        <div class="formulario-grupo">
            <label for="email">Email</label>
            <input type="email" name="email" id="email" placeholder="Email..."> </div>
        <div class="formulario-grupo">
            <label for="pass1">Contraseña</label>
            <input type="password" name="pass1" id="pass1" placeholder="Contraseña..."> </div>
        <div class="formulario-grupo">
            <label for="pass2">Repetir contraseña</label>
            <input type="password" name="pass2" id="pass2" placeholder="Repetir contraseña..."> </div>
        <div class="formulario-grupo oculto" id="registro-erroneo">
            <div class="alerta alerta-rojo alerta-pequenia" id="registro-mensaje-error">Error</div>
        </div>
        <div class="formulario-grupo oculto" id="registro-correcto">
            <div class="alerta alerta-verde alerta-pequenia" id="registro-mensaje-ok">Correcto</div>
        </div>
        <div class="formulario-grupo centrado">
            <input type="submit" name="submit" class="boton boton-verde derecha" value="Registrar" onclick="registro(nombre.value, usuario.value, email.value, pass1.value, pass2.value);"> </div>
    </form>
</div>';

} else if ($_GET['accion'] == 'registrar') {
// Recibir los datos y almacenarlos en variables
    $nombre = $_POST['nombre'];
    $usuario = $_POST['usuario'];
    $email = $_POST['email'];
    $pass1 = $_POST['pass1'];
    $pass1 = md5($pass1); // Encriptar contraseña usuario en md5

    // Comprueba si el usuario/email ya existe en la base de datos
    $comprobar_existe = "SELECT * FROM ".$prefijo."_usuarios WHERE email = '$email' OR usuario = '$usuario'";
    $consulta_existe = mysqli_query($conexion, $comprobar_existe) or die('Error: ' . mysqli_error());
    $datos_existe = mysqli_fetch_assoc($consulta_existe);
    $cantidad_existe = mysqli_num_rows($consulta_existe); // 0 = No existe, 1 = Existe

    if ($cantidad_existe == 0) {
        // Insertar usuario
        $insertar = "INSERT INTO ".$prefijo."_usuarios (nombre, usuario, email, pass) VALUES ('$nombre', '$usuario', '$email', '$pass1')";

        // Ejecutar la consulta
        $resultado_insertar = mysqli_query($conexion, $insertar) or die(mysqli_error());

        echo 'correcto';
    } else {
        echo 'existe';
    }
}

?>

Y el archivo validar.js que se encarga de validar los campos y registrar al usuario en caso de que éste no exista:
var url = 'http://localhost/betacreativa/';
var maximoCaracteresNombre = 30;
var maximoCaracteresUsuarioPass = 20;
var maximoCaracteresEmail = 100;

function registro(nombre, usuario, email, pass1, pass2) {
    if (limpiar(nombre) != '' && limpiar(usuario) != '' && limpiar(email) != '' && limpiar(pass1) != '' && limpiar(pass2) != '') {
        if (limpiar(pass1) != limpiar(pass2)) {
            $('#registro-erroneo').fadeIn(500);
            $('#registro-mensaje-error').text('Las contraseñas no coinciden');
        } else if (limpiar(nombre).length > maximoCaracteresNombre)
        {
            $('#registro-erroneo').fadeIn(500);
            $('#registro-mensaje-error').text('El nombre es demasiado largo');
        } else if (limpiar(usuario).length > maximoCaracteresUsuarioPass) {
            $('#registro-erroneo').fadeIn(500);
            $('#registro-mensaje-error').text('El usuario es demasiado largo');
        } else if (limpiar(email).length > maximoCaracteresEmail) {
            $('#registro-erroneo').fadeIn(500);
            $('#registro-mensaje-error').text('El email es demasiado largo');
        } else if (limpiar(pass1).length > maximoCaracteresUsuarioPass) {
            $('#registro-erroneo').fadeIn(500);
            $('#registro-mensaje-error').text('La contraseña es demasiado larga');
        } else {
            // Intentar llevar a cabo el registro
            $.ajax({
                // Especificamos si será una petición POST o GET
                type: 'POST',
                // Le pasamos la URL para la petición
                url: url + 'index.php?seccion=unirme&accion=registrar',
                // Establecemos si la petición será guardada en la cache del navegador o no.
                // Cuando el valor es false, se agrega una cadena de caracteres anti-cache
                // al final de la URL de la petición
                cache: false,
                // Esta es la información a enviar. En este caso estamos serializando, es decir, recogiendo
                // los datos que el usuario ha ingresado en el formulario de registro
                data: $('#frmRegistro').serialize(),
                // Código a ejecutar si la petición es satisfactoria
                // la respuesta es pasada como argumento a la función
                success: function(respuesta) {
                    if (limpiar(respuesta) == 'correcto') {
                        $('#registro-correcto').fadeIn(500);
                        $('#registro-mensaje-ok').text('Usuario registrado satisfactoriamente');
                    }
                    else if (limpiar(respuesta) == 'existe') {
                        // Mostrar error
                        $('#registro-erroneo').fadeIn(500);
                        $('#registro-mensaje-error').text('El usuario ya está registrado');
                    }
                }
            });
        }
    } else {
        $('#registro-erroneo').fadeIn(500);
        $('#registro-mensaje-error').text('Todos los campos son obligatorios');
    }
}

function limpiar(valor) {
    var cadena = valor.split(' ').join('');
    return cadena;
}

Y de ese código, si no me equivoco, esta es la parte que está fallando:
$.ajax({
                type: 'POST',
                url: url + 'index.php?seccion=unirme&accion=registrar',
                cache: false,
                data: $('#frmRegistro').serialize(),
                success: function(respuesta) {
                    if (limpiar(respuesta) == 'correcto') {
                        $('#registro-correcto').fadeIn(500);
                        $('#registro-mensaje-ok').text('Usuario registrado satisfactoriamente');
                    }
                    else if (limpiar(respuesta) == 'existe') {
                        // Mostrar error
                        $('#registro-erroneo').fadeIn(500);
                        $('#registro-mensaje-error').text('El usuario ya está registrado');
                    }
                }
            });

Y para ser más concreto todavía, particularmente, esta línea:
url: url + 'index.php?seccion=unirme&accion=registrar',

Todo esto es una suposición mía por las pruebas que he hecho, como separar el formulario en formulario_registro.php y el código php en registrar.php, y la línea anterior dejarla tal que así:
url: url + 'registrar.php',

Y de esa forma funciona perfectamente. Por lo tanto, he llegado a esa conclusión, de que el problema está en esa línea.

A ver si podéis echarme una mano, que sé que hay mucho nivel por aquí! ;P
Editado
1
Puntos
0
Resp
410
Visitas
Por AlexMnrs hace 17 meses
Principiante offline

Relaccionados

Para comentar Inicia sesión o Registrate