Continuando con nuestros tutoriales de Diseño Web, y ya habiendo aprendido a hacer autentificaciones de usuarios mediante el uso de PHP con y sin bases de datos, hoy les traemos otro sencillo tutorial en el cual les enseñaremos a añadir un registro de usuarios a sus sitios Web, el cual puede resultar muy útil si queremos entregar ciertas funcionalidades a algunos tipos de usuarios.
Para este tutorial, no es necesario tener grandes conocimientos de lenguajes dinámicos ni manipulación de bases de datos, ya que veremos todo el código correspondiente en detalle.
Como siempre, más información después del salto.
Como siempre, partamos por lo primero:
Sin más cosas, manos a la obra:
1.- Lo primero que haremos, será crear la tabla correspondiente a los usuarios en nuestra base de datos. Si no saben como hacerla, pueden ver este tutorial en el que hemos realizado este proceso paso a paso. La tabla para este ejemplo contendrá los siguientes campos:
Eventualmente pueden definir los campos que Uds. estimen convenientes (por ejemplo Sitio Web, Pais de ubicación, etc), dependiendo de la información que quieran recolectar de cada usuario.
2.- A continuación comenzaremos con el diseño de nuestro registro de usuarios. Primero que todo, crearemos una página HTML donde tendremos nuestro formulario de registro. A esta página la llamaremos “registro.html” y en ella crearemos el formulario. Si tienen dudas de como crear un formulario, pueden ver este tutorial en el que ya realizamos el proceso paso a paso. Este formulario contendrá los siguientes campos:
Y como siempre, los clásicos botones “Enviar” y “Limpiar datos”.
El “Action” de este formulario (página a la que se dirigirá al hacer click en el botón “Enviar”) lo dejaremos fijado a “agregar.php”
3.- Con nuestra base de datos y formulario listos, ahora podemos concentrarnos en el código para registrar al usuario. Para esto crearemos una página llamada “agregar.php” en el cual realizaremos los siguientes pasos:
Para esto, insertaremos el siguiente código después de la etiqueta <BODY>. La explicación del código, como siempre, en cursiva, negrita y entre /* */:
$user=$_POST["username"]; $clave=$_POST["clave"]; $confirmar=$_POST["confirmar"]; $email=$_POST["email"]; $nombre=$_POST["nombre"]; $error=0; /* Primero que todo asignaremos los valores recogidos del formulario en el vector POST a las variables que definimos ($user, $clave, etc). La última variable llamada $error la dejaremos como una bandera para marcar cualquier falla que exista dentro del proceso */ if($user == "" || $clave == "" || $confirmar == "" || $email == "" || $nombre == "") { echo "Debe ingresar todos los datos. Por favor vuelva atrás"; $error = 1; } /* Básicamente lo que hacemos aquí es controlar mediante una sentencia "if" que todas las variables contengan información. Por eso preguntamos si alguna de ellas esta vacía (separando por el equivalente a ó que es || ) que muestre el mensaje de que faltan datos y le muestre el vínculo para volver al formulario. Además, marcamos nuestra variable $error con un 1 . */ if($clave != $confirmar) { echo "Las contraseñas ingresadas no son iguales. Por favor vuelva atrás"; $error = 1; } /* A continuación comprobamos que las contraseñas ingresadas en el formulario, o bien la contraseña y la confirmación sean iguales. Dentro de nuestro "if" preguntamos si son distintas (mediante != ) y si es el caso, mostramos el mensaje que las contraseñas no son iguales y desplegamos el vínculo para volver el formulario. Además, marcamos la variable $error con un 1 . */ else { $conexion = mysql_connect("URL del host","usuario","contraseña") or die("No se puede conectar a la BD"); mysql_select_db("nombre de nuestra BD",$conexion) or die("No se puede seleccionar la BD"); $consulta = "SELECT * FROM usuario WHERE username='$user'"; $resultado = mysql_query($consulta,$conexion) or die("Operacion fallida: $consulta"); /* A este trozo de código se ingresará si los datos del usuario han pasado todas las validaciones anteriores. Lo primero que haremos es establecer una conexión a nuestra base de datos, primero definiendo una variable llamada $conexion y almacenando dentro de ella el resultado de la conexión a la BD mediante la función mysql_connect, a la cual le proveemos los parametros correspondientes a la URL de nuestra base de datos (comunmente es localhost) y el usuario y contraseña que utilizamos para ingresar. Luego seleccionamos la base de datos mediante la función mysql_select_db a la cual le proporcionamos los parametros correspondientes al nombre de la base de datos y los datos de la conexión (almacenados en la variable $conexion). En caso de que alguno de esos proceso fallen, presentamos un mensaje de error y "matamos" el proceso mediante el "or die" correspondiente. Luego en una variable $consulta, definimos una consulta a la base de datos de tipo SQL en la cual le pedimos que busque los datos de algún usuario que ya tenga el nombre de usuario que se seleccionó ahora. De esta forma veremos si ya existe algún usuario con esos datos. Finalmente, ejecutamos la consulta mediante la función mysql_query, a la cual le proporcionamos la consulta almacenada en $consulta y los datos de la conexion almacenados en la variable $conexion. El resultado de la consulta lo almacenaremos en la variable $resultado. */ if(mysql_affected_rows($resultado) == 0) { $consulta = "INSERT into usuario(username, clave, email, nombre) VALUES ('$user','$clave','$email','$nombre')"; $resultado = mysql_query($consulta,$conexion); /* Mediante la función mysql_affected_rows (dándole de parámetro el resultado de la consulta) averiguaremos si hubo alguna fila afectada por la consulta recién realizada (la consulta SELECT que buscaba la existencia del usuario), en caso de que la función sea igual a 0 significa que no hubo coincidencias por lo que el nombre de usuario se encuentra libre y podemos proceder a añadir el nuevo usuario a la base de datos. Esto lo hacemos mediante una consulta INSERT, la cual la almacenamos en la variable $consulta (podemos reutilizarla, ya que no necesitaremos el contenido anterior) y el resultado de esta la almacenaremos en $resultado (lo mismo que $consulta) luego de ejecutarla mediante un mysql_query */ if(!$resultado) { echo "Se ha presentado un error al registrar el usuario. <br> Por favor intentelo de nuevo"; $error = 1; exit(); /* Ahora mediante un if validaremos que no haya ningún problema con la ejecución de la consulta. Al poner !$resultado le preguntamos a la BD si no fue posible obtener un resultado en la ejecución y si es así desplegamos el mensaje de error correspondiente y marcamos nuestra variable $error con un 1 para luego hacer un "exit()" y detener la ejecución */ } else { $error = 2; /* El else por supuesto corresponde a que no hubo problemas en la ejecución de la consulta, por lo que marcamos nuestra variable $error con un 2 el cual validaremos más tarde para desplegar un mensaje de éxito */ } } else { echo "El nombre de usuario ya existe. Por favor vuelva atrás"; $error = 1; /* Este else corresponde al if que utilizamos con la función mysql_affected_rows , por lo que si entra al else significa que hubo una coincidencia cuando seleccionamos el nombre de usuario de la BD. Así que desplegamos el mensaje correspondiente de error, presentamos el vínculo para volver y marcamos nuestra variable $error con un 1 */ } } if($error == 2) { echo "Se ha registrado en el sistema. Bienvenido '$nombre'"; /* Finalmente validamos si nuestra variable error vale 2, esto significa que logró insertar los datos de forma satisfactoria por lo que presentamos el mensaje de éxito y le damos la bienvenida al usuario usando el nombre que registró en el formulario */ }
Algunas salvedades:
Y con esto damos término a este nuevo tutorial de PHP donde les enseñamos a hacer un simple registro de usuarios que pueden incorporar a su Web. Esperamos que este tutorial haya sido de utilidad para Uds. y como siempre no duden en dejarnos sus dudas o comentarios al respecto, los cuales trataremos de contestarlos a la brevedad para poder ayudarlos.
Como es habitual, recuerden que este tutorial ha sido desarrollado, probado y documentado por el equipo de Comolohago.cl, por lo que cuenta con nuestro infalible sello de garantía.
Muchas gracias por leer y será hasta una próxima oportunidad.
12:21:19 pm
ya resolvi el problema
solo habia que dejar vacia el parametro del mysql_affected_rows($resultado) == 0 a mysql_affected_rows() == 0
tbn hay un error ya que si uno deja los campos vacios igual sale despues del correspondiente error bienvenido, para solucionar esto hay que poner exit();
abajo de todos los $error = 1;
Saludos
3:12:32 pm
Todo
Vídeos
Más
12:52:59 am
como puedo hacer para unir día, mes y año en un solo campo que se llame fecha_nacimiento. Ya que he creado un formulario donde se ingresa dia, mes y año por separado.
una ayudita por favor.
10:29:09 am
Hola.. hago este comentario por lo siguiente.. soy nuevo con lo que es condigos en php.. pero el tutorial esta exelente…
Ahora bien.. he creado una base de datos con el nombre Registro los cuales les puse los siguentes campos:
username ===> varchar (10) ===> primary key
clave ===> varchar(10)
email ===> varchar(30)
nombre ===> varchar(50)
Pero cuando lo subo al servidor me encuentro con que el probelam se encuentra aqui:
$consulta=”SELECT * FROM usuario WHERE username=’$user’”;
Espero que puedan darme una mano en esto.. se los agradeceria muuucho!! Mil gracias!!!
12:30:55 pm
hay un error, en el codigo cuando uno envia el formulario vacio, me genera una contraseña en mi base de datos, y un usuario fantasma…… mysql_query no detecta si se ah ingresado un valor ahí, habria que complementarlo con algo
12:49:45 am
Holaprimero que nada quiero felicitarlos ya que hacen un excelente trabajo sus tutoriales explican todos los detalles a la perfeccion a mi me fue muy util.
Tengo una pregunta:
Cuando hacemos la validaciòn del formulario por ejemplo si las contraseñas no coinciden el programa manda un mensaje de error diciendo “Las contraseñas no coinciden” lo que yo quiero hacer es que dicho mensaje en ves de aparecer en otra pagina me aparezca en el mismo formulario que me aparezca justo arriba del campo de texto donde digitamos la contraseña espero haberme explicado y espero puedan ayudarme muchas gracias y saludos
11:17:57 pm
Hola disculpen soy muy nuevo programandoen php
copie tu código tal cual esta aqui en el DW y no me da errores de sintaxis; pero al ejecutar el registro me da esto Parse error: parse error in C:\wamp\www\agregar.php on line 131
esa linea el última del codigo, es el cierre de las etiquetas html(</html>
si remuevo las etiquetas el error para al cierre del escrip php. Cabe anotar que he colocado el incio de phpen el incio de tu codigo y el cierre de php al final de tu codigo
estoy usando DW CS5 de antemano agrdezco su ayuda
Diego F. López
4:41:00 pm
Hola muy buena tarde hice algunas modificaciones a tu codigo pero no entiendo la parte que dice despues de la etiqueta body por que no me reconoce el codigo PHP. Gracias por tu atencion.
Esto es lo que hice.
<?PHP
$user=$_POST["username"];
$clave=$_POST["clave"];
$confirmar=$_POST["confirmar"];
$email=$_POST["email"];
$nombre=$_POST["nombre"];
$ap_paterno=$_POST["ap_paterno"];
$ap_materno=$_POST["ap_materno"];
$error=0;
if($user=="" ¦¦ $clave=="" ¦¦ $confirmar=="" ¦¦ $email=="" ¦¦ $nombre=="" ¦¦ $ap_paterno=="" ¦¦ $ap_materno)
{
echo "Debe de ingresar todos los datos Por favor vuelva “; ?> <?
$error=1;
}
if($clave!=$confirmar)
{
echo "Las contraseñas ingresadas no son iguales Por favor Vuelva”;?><?
$error=1;
}
else
{$conexion=mysql_connect("localhost","root","") or die ("No se puede conectar a la Base de Datos");
mysql_select_db("STIASRM",$conexion) or die ("No se puede seleccionar la Base de Daos");
$consulta="SELECT * FROM usuario WHERE username='$user'";
$resultado=mysql_query($consulta, $conexion) or die ("Operacio fallida $consulta");
if (mysql_affected_rows($resultado)==0)
{
$consulta="INSERT into usuario(username, clave, email, nombre, ap_paterno, ap_materno) VALUES ('$user','$clave','$email','$nombre','$ap_paterno','$ap_materno')";
Sresultado=mysql_query($consulta,$conexion);
$if (!resultado)
{
echo "Se ha presentado un error al registrar al ususario Por favor intentelo de Nuevo”;
$error=1;
exit();
}
else
{
$error=2;
}
}
else
{
echo “El nombre de usuario ya existe. Por favor cuelva”;?>
12:43:25 pm
Gracias ! No Sabía sobre Wamp, Gracias Por informarmé, Yo Por mala suerte, No usé Bien el xampp, Y No Puedo utilizarlo, Así Que ¡ Gracías Por esté gran tutuoríal !
3:13:47 pm
va a morir el internet jajajajaj