A
AlexMnrs
Beta
Verificación en dos pasos activada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
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
Y un archivo validar.js que se encarga de validar los campos y registrar al usuario en caso de que éste no exista:
Del que, si no me equivoco, esta es la parte que está fallando:
Y particularmente, esta línea:
Todo esto es una suposición mía por las distintas 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í:
Y de esa forma funciona perfectamente. Por lo tanto, he llegado a esa conclusión, pero corregidme si me equivoco.
Espero que me hayáis entendido y podáis echarme un cable, me está pudiendo la presión desde ayer, no sé qué hacer :neglected:
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
Insertar CODE, HTML o 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 un archivo validar.js que se encarga de validar los campos y registrar al usuario en caso de que éste no exista:
Insertar CODE, HTML o PHP:
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;
}
Del que, si no me equivoco, esta es la parte que está fallando:
Insertar CODE, HTML o PHP:
$.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 particularmente, esta línea:
Insertar CODE, HTML o PHP:
url: url + 'index.php?seccion=unirme&accion=registrar',
Todo esto es una suposición mía por las distintas 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í:
Insertar CODE, HTML o PHP:
url: url + 'registrar.php',
Y de esa forma funciona perfectamente. Por lo tanto, he llegado a esa conclusión, pero corregidme si me equivoco.
Espero que me hayáis entendido y podáis echarme un cable, me está pudiendo la presión desde ayer, no sé qué hacer :neglected:

