Tengo un formulario HTML que tiene como función insertar los datos que la persona escribe en el formulario en una base de datos. La conexión con la base de datos es correcta, incluso al "enviar" el formulario, se crea una fila en la base de datos.
El problema está en que los datos insertados están vacíos. La tabla creada en la base de datos no permite campos NULL, pero aún así se insertan los datos enviados por el formulario en la base de datos.
La tabla se compone de 5 campos:
-usuario_id (es el id del usuario, este campo SÍ se inserta, con un incremental)
-usuario_nombre (el nombre del usuario, se inserta en blanco)
-usuario_clave (la clave del usuario, se encripta en md5, pero vacío)
-usuario_email (el email del usuario, se inserta en blanco)
-usuario_freg (es campo, SI se inserta, que es la fecha y la hora)
AQUÍ LES DEJO LOS CÓDIGOS:
-FORMULARIO HTML
Código:
SCRIPT PHP<!DOCTYPE html> <html> <header> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </header> <body> <form action="registro.php" method="post"> <label>Usuario:</label><br /> <input type="text" name="usuario_nombre" maxlength="15" /><br /> <label>Contraseña:</label><br /> <input type="password" name="usuario_clave" maxlength="15" /><br /> <label>Confirmar Contraseña:</label><br /> <input type="password" name="usuario_clave_conf" maxlength="15" /><br /> <label>Email:</label><br /> <input type="text" name="usuario_email" maxlength="50" /><br /> <input type="submit" name="enviar" value="Registrar" /> <input type="reset" value="Borrar" /> </form> </body> </html>
Código:
Uso un servidor MSSQL, por lo tanto las órdenes de PHP son sqlsrv_xxxx<?php $serverName = "HOST"; $connectionInfo = array( "Database"=>"BASE DE DATOS", "UID"=>"USUARIO", "PWD"=>"CONTRASEÑA" ); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn === false ) { die( print_r( sqlsrv_errors(), true)); } if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario // creamos una función que nos parmita validar el email function valida_email($correo) { if (eregi("^[_.0-9a-z-]+@[0-9a-z._-]+.[a-z]{2,4}$", $correo)) return true; else return false; } // Procedemos a comprobar que los campos del formulario no estén vacíos $sin_espacios = count_chars($_POST['usuario_nombre'], 1); if(!empty($sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco echo "El campo <em>usuario_nombre</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>"; }elseif(empty($_POST['usuario_nombre'])) { // comprobamos que el campo usuario_nombre no esté vacío echo "No has ingresado tu usuario. <a href='javascript:history.back();'>Reintentar</a>"; }elseif(empty($_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío echo "No has ingresado contraseña. <a href='javascript:history.back();'>Reintentar</a>"; }elseif($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>"; }elseif(!valida_email($_POST['usuario_email'])) { // validamos que el email ingresado sea correcto echo "El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>"; }else { // comprobamos que el usuario ingresado no haya sido registrado antes $sql = sqlsrv_query($conn,"SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'"); if(sqlsrv_num_rows($sql) > 0) { echo "El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>"; }else { $usuario_clave = md5($usuario_clave); // encriptamos la contraseña ingresada con md5 // ingresamos los datos a la BD $reg = sqlsrv_query( $conn,"INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', GETDATE())"); if($reg) { echo "Datos ingresados correctamente."; }else { echo "ha ocurrido un error y no se registraron los datos."; die( print_r( sqlsrv_errors(), true)); } } } } ?>
Gracias de antemano!