Crear sistema de reigistro PHP Leido 9.781 veces

 
  Broco
Ha recibido:
3 premios
Bueno lo intentare explicar lo mejor posible para que todo el mundo lo entienda.
Vamos a guardar los usuarios en una base de datos "Mysql"
Suponiendo que ya tenemos la bd (base de datos) con PHPmyadmin..
Vamos a la consola de SQL para hacer una consulta, para eso desde phpmyadmin le damos en la pestaña donde pon "Sql"

Y ponemos este codigo



CREATE TABLE usuarios(
id INTEGER NOT NULL AUTO_INCREMENT,
nombre varchar(40) default NULL,
avatar varchar(250) default NULL,
email varchar(50) default NULL,
password varchar(25) default NULL,
PRIMARY KEY (`id`)
)


Bien, ya tenemos la tabla creada ahora tenemos que crear los documentos PHP.
Este documento es registrarse.php<?
include("conexion.php");
if ($_REQUEST["accion"]=="1"){
if (isset($_POST["nombre"])){
$nombre = str_replace($bbse,$xhse,$_POST["nombre"]);
$email = str_replace($bbse,$xhse,$_POST["email"]);
$password = str_replace($bbse,$xhse,$_POST["password"]);
$rpassword = str_replace($bbse,$xhse,$_POST["rpassword"]);
if($nombre==NULL|$email==NULL|$password==NULL|$rpassword==NULL){
echo 'Hay Campos Vacios';
}else{
$mail_correcto = 0;
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@"))
{if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," ")))
{if (substr_count($email,".")>= 1){$term_dom = substr(strrchr ($email, '.'),1);
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != ".")
{$mail_correcto = 1;}}}}}
if ($mail_correcto==0)
{
echo 'Email no valido.';
}else{
$usuariorepe = mysql_query("SELECT nombre FROM usuarios WHERE nombre='$nombre'");
$existe = mysql_num_rows($usuariorepe);
if ($existe>0){
echo 'El nombre que as elegido ya esta en uso. ';
}else if ($password!=$rpassword){
echo 'Las contraseñas no coinciden.';
}else{
mysql_query("insert into usuarios(nombre,password,email) values('$nombre','$password','$email')", $conexion) or die("Problemas en el select".mysql_error());
echo 'Usuario creado exitosamente, ya puedes iniciar sesión.
<script languaje="JavaScript">location.href='."'index.php';".'</script>';
}}}}else{
echo 'Error al recibir el formulario.';}}

//// Formulario de registro
if($loginCorrecto){
echo 'Ya estás registrado';
}else{
echo ' <form oname="form1" method="post" action="registrarse.php?accion=1"><input name="accion" type="hidden" id="accion" value="1" /><table border="0" cellpadding="0"
cellspacing="0"><tr><td><div align="center" ><div align="right">Nombre:</div></div></td><td><div align="left">
<input name="nombre" type="text" id="nombre" value="'.$_POST["nombre"].'" /></div></td></tr><tr><td><div align="center" >
<div align="right">Email:</div></div></td><td><div align="left"><label><input name="email" type="text" id="email" value="'.$_POST["email"].'" /></label></div>
</td></tr><tr><td><div align="center" ><div align="right">Contraseña:</div></div></td><td><div align="left"><input name="password" type="password" id="password" /></div></td>
</tr><tr><td><div align="center" ><div align="right">Repetir contraseña:</div></div></td><td><div align="left"><input name="rpassword" type="password" id="rpassword" /></div></td>
</tr><tr><td colspan="2"><div align="center"><input type="submit" class="boton2" value=" Registrarme " /></div>
</td></tr></table></form>';} ?>

Ahora vamos a crear coockie.php


$loginCorrecto = false;
$bbse = array();
$xhse = array();
$bbse[] ="/"; $xhse[] ='[barra]';
$bbse[] ="'"; $xhse[] ='[comilla]';
$nombre=str_replace($bbse,$xhse,$_COOKIE["nombre"]);
$pass=str_replace($bbse,$xhse,$_COOKIE["password"]);

if(isset($HTTP_COOKIE_VARS["nombre"]) && isset($HTTP_COOKIE_VARS["password"]))
{
$result = mysql_query("SELECT * FROM usuarios WHERE nombre='".$nombre."' AND password='".$pass."'");
if($row = mysql_fetch_array($result))
{
setcookie("nombre",$nombre,time()+7776000);
setcookie("password",$pass,time()+7776000);
$loginCorrecto = true;
$Luserid= $row["id"];
$Lusernombre = $row["nombre"];
}
else
{
//Destruimos las cookies.
setcookie("nombre","x",time()-3600);
setcookie("password","x",time()-3600);
}
mysql_free_result($result);
}


Ahora creeamos validaentrar.php

<?
include("conexion.php");
$bbse = array();
$xhse = array();
$bbse[] ="/"; $xhse[] ='[barra]';
$bbse[] ="'"; $xhse[] ='[comilla]';
$nombre=str_replace($bbse,$xhse,$_POST["nombre"]);
$pass=str_replace($bbse,$xhse,$_POST["password"]);
if($nombre==NULL)
{
echo 'El campo de nombre esta vacio. <br> ';
include("entrar.html");
}elseif($pass==NULL){
echo 'El campo contraseña esta vacio. <br> ';
include("entrar.html");
}else{
$result = mysql_query("SELECT password,nombre FROM usuarios WHERE nombre='$nombre'");
$user_existe = mysql_num_rows($result);
if ($user_existe==0)
{
echo 'El usuario indicado no existe.<br> ';
include("entrar.html");
}else{
$result = mysql_query("SELECT password,nombre FROM usuarios WHERE nombre='$nombre'");
$row = mysql_fetch_array($result);
if($row["password"] == $pass)
{
setcookie("nombre",$nombre,time()+7776000,"/");
setcookie("password",$pass,time()+7776000,"/");
echo 'Ingreso exitoso, ahora sera dirigido a la pagina principal.
<script languaje="JavaScript">
location.href='."'index.php'".';</script>';
}else{
echo 'Contraseña incorrecta. <br>';
include("entrar.html");
}}}
?>

Ahora creeamos deslogear.php



setcookie("nombre","x",time()-3600);
setcookie("password","x",time()-3600);
header('location: index.php');

(tenemos que editarlo con la información de nuestra cuenta que nos da el host)
ahora solo falta crear conexion.php


$conexion=mysql_connect("SERVIDOR","USUARIO","CONTRASEÑA") or
die("Problemas en la conexion");
mysql_select_db("USUARIO",$conexion) or
die("Problemas en la seleccion de la base de datos");


ahora creamos entrar.html



<form method="post" action="validaentrar.php"><table width="100%" border="0"><tr>
<td width="47%"><div align="right">Nombre:</div></td><td width="53%">
<input name="nombre" type="text" size="15" /></td></tr><tr><td><div align="right">Contraseña:</div></td><td><input name="password" type="password" size="15" />
</td></tr><tr><td height="26"> </td><td><input type="submit" value="Ingresar" /></td></tr>
</table></form>




Bueno Ahora explicare algunas cosas importantes.
En todos las paginas de nuestra web tenemos que poner bajo de <body>
lo siguiente



include("conexion.php");
include("coockie.php");


Para comprobar que el usuario esta logeado se hace de la siguiente forma



if($loginCorrecto){
echo 'Estás logeado';}else{
echo "No estas logeado";}


Para mostrar el nombre de usuario y la ID
Nombre: $Lusernombre;
ID: $Luserid;
Para cerrarsesión se pone un enlace a deslogear.php

IMPORTANTE
$row ya lo usa el sistema de usuarios para mostrar el nombre, por lo que si hacemos una consulta no usar $row usar otra cosa, la que sea..


Explicación de los archivos
registrarse.php: Tiene un formulario que envia la informacion a registrarse.php?accio=1 accion=1 activa la validacion, que valida si el usuario existe si la contraseñas coinciden y lo introduce en la base de datos.
validaentrar.php: Comprueba que el nombre y contraseña coinciden con algun registro den la base de datos y de ser así te creea 2 coockie Nombre y Pasword.
coockie.php:
Inicializa la variable $loginCorrecto en false y crea una consulta comprueba si los coockies Nombre y Pasword coinciden con un registro de la base de datos, de ser asi pone la vaiable $loginCorrecto en true.
deslogear.php:Elimina los coockies
conexion.php: es la conexion a la base de datos, si pones eso en cada pagina solo te tenes que encargar de hacer la consulta y no conectar a la base de datos.
entrar.html: Muestra el formulario de iniciar sesión, podemos pone
<?php include("entrar.html"); ?> donde queramos mostrar el formulario o copiar su interior donde queramos que se muestre el formulario.


Sqlinjection: Al igual que en Wikun he puesto que se reemplaza las comillas simples por [comilla] y la barra / por [barra]
cuando mostreis algo de la base de datos teneis que poner
<?
$bbse = array();
$xhse = array();
$bbse[] ="/"; $xhse[] ='[barra]';
$bbse[] ="'"; $xhse[] ='[comilla]';
echo str_replace($xhse,$bbse,$_row[nombre]);
?>

 

 





  ๖Mauro
ta bueno te felicito por el articulo.
en mi opinion como ingnorante :S (las cosas como son :P ) ,esta esplicado para gente que tiene por lo menos una mina idea del tema me hubiese gustado que lo ayas escrito para gente que tiene 0 conocimiento sobre el tema .
:)

 

 


  Broco
Para la gente que tiene 0 conocimientos se tiene que leer mis otros 2 artículos y el de la Mariela, es un poco loco hacer un sistema de registro sin saber lo que es un variable, hay 3 artículos mas de php en wikun sin no sabéis leerlo.
Si es cierto que no tengo ningún articulo que explique a hacer consultas sql desde php, pero bueno.. si lo explicaba en este se hacia muy extenso el articulo, por el momento si lees los otros 3 artículos tienes que ser capaz de crearlo... me dirijo a ti por que te estoy contestando a ti, pero vamos lo digo en general.

 

 


  ๖Mauro
tas enojado por que no era es el punto :S solo queria aprender :(
 

 


  Broco
Ha recibido:
3 premios
¿eing?
Yo no me he enojado ni ahora ni cuando escribí el anterior mensaje :S
Lo e dicho normal... ni me enfadé ni me algre, lo dije normal..

 

 








    ¿Cuantas columnas?     | 2 columnas | 3 columnas | 4 columnas | 5 columnas | 6 columnas |  
    Escribe la dirección web de la imagen:
  Publica tu respuesta  |  Haz Click en el siguiente cuadro para escribir