Crear sistema de registros php Leido 23.068 veces

 
  Broco
Pregunta
Resuelta.
quizas una de las preguntas mas echa en wikun.
Pero necesito saber hacerlo plis ayudarme, me e leido gias pero me lian bastante.
Aviso que Mysql me lia un moton soy super novato xD
PLis ayuda que me es muy importante.

 

 





  !!r0Nk0!!
Respuesta correcta
Ha recibido:
1 premios
Bueno ya que no me gustaba la forma inicial te dejo todo el sistema en este post. Tendrás que modificar el archivo conexion.php con tus datos. El registro está en registro.php, el login en entrar.php y la inicial index.php.

db.sql



CREATE TABLE usuarios(
id INTEGER NOT NULL AUTO_INCREMENT,
nombre varchar(40) default NULL,
apellidos varchar(80) default NULL,
sexo varchar(10) default NULL,
fecha DATE,
ciudad varchar(100) default NULL,
avatar varchar(250) default NULL,
email varchar(50) default NULL,
password varchar(25) default NULL,
informacion varchar(500) default NULL,
PRIMARY KEY (`id`)
)


conexion.php




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



deslogear.php



//Destruimos las cookies.
setcookie("nombre","x",time()-3600);
setcookie("password","x",time()-3600);

//Redirigimos a index.php
header('location: index.php');


index.php




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

if($loginCorrecto)
{
echo "Aqui el contenido solo para usuarios registrados";
echo '<br><br><a href="deslogear.php">Salir<a/>';
}
else
{
echo "El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area";
echo '<br><br><a href="entrar.php">Identificarte</a>';
echo '<br><br><a href="registro.php">Registrarte</a>';
}


entrar.php



echo'
<html><body>
<center><table><h2>Login</h2>
<td><form method="post" action="validaentrar.php">
<p>Nombre : <INPUT TYPE="text" NAME="nombre"></p>
<p>Password: <INPUT TYPE="password" NAME="password"></p>
<p><INPUT TYPE="submit" CLASS="boton" VALUE="Ingresar"></p>
</FORM></td></table><center></body></html>';



validaentrar.php




include("conexion.php");

if(trim($_POST["nombre"]) != "" && trim($_POST["password"]) != "")
{
$nombre = $_POST["nombre"];
$password = $_POST["password"];
$result = mysql_query("SELECT password FROM usuarios WHERE nombre='$nombre'");

if($row = mysql_fetch_array($result))
{
if($row["password"] == $password)
{
//90 dias dura la cookie
setcookie("nombre",$nombre,time()+7776000);
setcookie("password",$password,time()+7776000);


Ingreso exitoso, ahora sera dirigido a la pagina principal.

<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>
<?
}
else
{
echo "Password incorrecto";
echo '<br><br><a href="entrar.php">Volver</a>';
}
}
else
{
echo "Usuario no existente en la base de datos";
echo '<br><br><a href="entrar.php">Volver</a>';
}
mysql_free_result($result);
}
else
{
echo "Debe especificar un nick y password";
echo '<br><br><a href="entrar.php">Volver</a>';
}
mysql_close();

?>

registro.php



echo'
<html><body>
<center><table><h2>Registrarse</h2>
<td><form action="validaregistro.php" method="post">
<p>Nombre: <input type="text" name="nombre"></p>
<p>Apellidos:
<input type="text" name="apellidos"></p>
<p>Sexo:
Hombre<input type="radio" name="sexo" value="hombre">
Mujer <input type="radio" name="sexo" value="mujer"></p>
<p>*Avatar: <input type="text" name="avatar"></p>
<p>Fecha de nacimiento: Día: <input type="text" size=1 name="dia"> Mes: <input type="text" size=1 name="mes"> Año: <input type="text" size=2 name="año"></p>
<p>Ciudad: <input type="text" name="ciudad"></p>
<p>Email: <input type="text" name="email"></p>
<p>Contraseña: <input type="password" name="password"></p>
<p>Repetir Contraseña: <input type="password" name="rpassword"></p>
<p>Información:<br><textarea id="informacion" name="info" rows="5" cols="50"></textarea></p>
<input type="submit" value="Registrar">
<p>* Campos Opcionales</p></td></table><center></body></html>';



validaregistro.php



//Conexion a la base de datos

include("conexion.php");

if (isset($_POST["nombre"]))
{
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$sexo = $_POST["sexo"];
$fecha = $_POST["año"].$_POST["mes"].$_POST["dia"];
$ciudad = $_POST["ciudad"];
$email = $_POST["email"];
$password = $_POST["password"];
$rpassword = $_POST["rpassword"];
$info = $_POST["info"];
// Comprobación campos en blanco
if($nombre==NULL|$apellidos==NULL|$sexo==NULL|$fecha==NULL|$ciudad==NULL|$email==NULL|$password==NULL|$rpassword==NULL|$info==NULL)
{
echo "Hay Campos Vacios";
echo '<br><br><a href="registro.php">Volver</a>';
}
else
{
//Comprobamos que el email está bien escrito.
$mail_correcto = 0;
//compruebo unas cosas primeras
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," ")))
{
//miro si tiene caracter .
if (substr_count($email,".")>= 1)
{
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) )
{
//compruebo que lo de antes del dominio sea correcto
$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";
echo '<br><br><a href="registro.php">Volver</a>';
}
else
{
// comprobamos contraseña y si el nombre de usuario o el email existen
$comp = mysql_query("SELECT nombre FROM usuarios WHERE nombre='$nombre'");
$user_existe = mysql_num_rows($comp);
$comp = mysql_query("SELECT email FROM usuarios WHERE email='$email'");
$email_existe = mysql_num_rows($comp);

if ($email_existe>0|$nombre_existe>0)
{
//Le mandamos a mensaje de registrado
header('location: registro.php?registrado=1');
}
else if ($password!=$rpassword)
{
echo "Las contraseñas no coinciden";
echo '<br><br><a href="registro.php">Volver</a>';
}
else
{
//Si todo Ok metemos datos en la base de datos.
mysql_query("insert into usuarios(nombre,apellidos,sexo,avatar,fecha,ciudad,email,password,informacion) values
('$nombre','$apellidos','$sexo','$avatar','$fecha','$ciudad','$email','$password','$info')", $conexion) or die("Problemas en el select".mysql_error());
//nos dirigimos a entrar.php para logearse.
header('location: entrar.php');
}
}
}
}
else
{
echo"Error al recibir el formulario";
echo '<br><br><a href="registro.php">Volver</a>';
}


validacookie.php



$loginCorrecto = false;
$idUsuarioL;
$nombreUsuarioL;
$emailUsuarioL;

if(isset($HTTP_COOKIE_VARS["nombre"]) && isset($HTTP_COOKIE_VARS["password"]))
{
$result = mysql_query("SELECT nombre FROM usuarios WHERE nombre='".$HTTP_COOKIE_VARS["nombre"]."' AND password='".$HTTP_COOKIE_VARS["password"]."'");

if($row = mysql_fetch_array($result))
{
setcookie("nombre",$HTTP_COOKIE_VARS["nombre"],time()+7776000);
setcookie("password",$HTTP_COOKIE_VARS["password"],time()+7776000);
$loginCorrecto = true;
$idUsuarioL = $row["id"];
$nombreUsuarioL = $row["nombre"];
$emailUsuarioL = $row["email"];
}
else
{
//Destruimos las cookies.
setcookie("nombre","x",time()-3600);
setcookie("password","x",time()-3600);
}
mysql_free_result($result);
}



 

 


  [NiCo]
Yo te lo puedo hacer, es facil.
Solo decime los campos que tiene que tener (nombre,apellido,nick,pass,etc) y te dejo todos los codigos ^^

Salu2

 

 


  Broco
Registrarse
Nombre:
Pass
Repetir pass:
Email:
Avatar:
Iniciar session
Nombre:
Pass:

PD:Si me lo creas me haces un favor pero cuando tengas tiempo me dices como se hace que quiero aprender :)
PDD:Priemro creamelo que me urge xDDD
PDD:Avatar es opcional estaria bien pero si quieres noo lo hagas.

 

 


  [NiCo]
Respuesta correcta
Ha recibido:
1 premios
Bueno como te urge lo hago rapidito :)

1º Crea el archivo db.sql


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


2º Crea una base de datos e importa el archivo db.sql

3º Crea el archivo registro.php






if (isset($_REQUEST['registrar']))
{
if($_REQUEST['registrar'] == '1')
{

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

$nick=$_REQUEST['nombre'];
$comp = mysql_query("SELECT nombre FROM usuarios WHERE nick='$nick'" );
$user_existe = mysql_num_rows($comp);
if ($user_existe>0)
{
header('location: registro.php?registrado=1');
}

else
{
mysql_query("insert into usuarios(nombre,contrasena,email,avatar) values
('$_REQUEST[nombre]','$_REQUEST[contrasena]','$_REQUEST[email]','$_REQUEST[avatar]')",
$conexion) or die("Problemas en el select".mysql_error());
header('location: login.php');
}
}
}
else
{
if (isset($_REQUEST['registrado']))
{
if($_REQUEST['registrado'] == '1')
{
echo 'Ese nombre ya esta en uso, elige otro<br><br>';
echo '<a href="registro.php">Volver</a>';
}
}
else
{
<center><h2>Registrarse</h2>
<br>
<p>Hay un usuario con ese nick</p>
<br>
<form action="registro.php?registrar=1" method="post">
Nombre:<br />
<input type="text" name="nombre"><br>
Contraseña:<br />
<input type="text" name="contrasena"><br>
Email:<br />
<input type="text" name="email"><br>
Avatar:<br />
<input type="text" name="avatar"><br>
<input type="submit" value="Registrar"></center>
}
}




4º Crea el archivo entrar.php


session_start();
$conexion=mysql_connect("SERVIDOR","USUARIO","PASS")
or die("Problemas en la conexion");
mysql_select_db("b14_4004233_csonline",$conexion) or
die("Problemas en la seleccion de la base de datos");

if (isset($_REQUEST['entrar']))
{
if ($_REQUEST['entrar'] == '1')
{
$sql = mysql_query("select * from usuarios where nombre='$_REQUEST[nombre]'");
if($row = mysql_fetch_array($sql))
{
if(trim($HTTP_POST_VARS["nick"]) != "" && trim($HTTP_POST_VARS["contrasena"]) != "")
{
$nombre = strtolower(htmlentities($HTTP_POST_VARS["nombre"], ENT_QUOTES));
$contrasena = $HTTP_POST_VARS["contrasena"];
$result = mysql_query('SELECT * FROM usuarios WHERE nombre=\''.$nombre.'\'');
if($row = mysql_fetch_array($result))
{
if($row["contrasena"] == $contrasena)
{
if(!strcasecmp($row["nombre"],$nombre))
{
$_SESSION["misesion"] = $row['nombre'];
}
}
}
}
}
header('location: index.php');
}
else
{
echo'
<form method="post" action="entrar.php?entrar=1">
Nombre: <input type="text" name="nombre"><br>
Contraseña: <input type="password" name="contrasena"><br><br>
<input type="submit" name="entrar" value="Entrar">
</form>';
}
?>


5º Ahora supongamos que te has logueado y quieres que muestre tu nombre de usuario y tu avatar.


$sql = mysql_query("select * from usuarios where nombre='$_SESSION[misesion]'");
if($row = mysql_fetch_array($sql))
{
echo'
<p>Mi usuario es: '.$row[nombre].'<p>
<img src="'.$row[avatar].'" />';
}


6º En el archivo de cabecera pon session_start(); lo que iniciara una sesion y permitira que el usuario interactue con la web.

Bueno creo que es todo por ahora y por hoy, mañana te lo explico y si quieres lo mejoramos ^^
Puede que haya algo mal porque lo hice apurado, pero creo que salio bien ;)

Salu2

 

 





  Broco
Nico lo siento mucho pero me confundio
Necesito esto:

Nombre
Apellidos
sexso: [Listmenu "chico,chica"]
Avatar:
Fecha de nacimiento:;
Ciudad:
email
Contraseña
Repetir Contraseña.
Informacion extra:


En inforamcion extra simplemente se pone lo que quiera el usaurio por ejemplo: me gusa el futbol xD si puede ser maximo 400 caracteres.
Es que luego tengo que poner todos los usuarios de X ciudad. X edad y X sexso..
aun que eso sera facil..

Buas quizas es mucho pero necesito eso :( lo siento nico tomate tu tiempo :)
Y te doy tambien puntos pero el que me as pasado por que lo usare para otra pagina, :D

 

 


  !!r0Nk0!!
Respuesta correcta
Por lo que veo hay errores por ejemplo en la creación de la tabla en la bd, te dejo explicado de paso lo de la base de datos:

// Crea una tabla llamada usuarios en la base de datos con el siguiente contenido:
// id: será el id del usuario, integer = entero de 32 bits, not null
// nombe, contraseña, email, avatar: varchar(X)=cadena de caracteres donde X como máximo es 2^31 caracteres, char sería 255 caracteres máximo. El uso de uno u otro se determina si el cambo va a ser siempre de la misma longitud usaremos char y sei va a ser variable, varchar ya que char produce fragmentacion dentro de los registro si el campo es mayor al dato guardado.

// Primary Key define el primer campo de la tabla.



CREATE TABLE usuarios(
id INTEGER NOT NULL AUTO_INCREMENT,
nombre varchar(40) default NULL,
apellidos varchar(80) default NULL,
sexo varchar(10) default NULL,
fecha DATE,
ciudad varchar(100) default NULL,
avatar varchar(250) default NULL,
email varchar(50) default NULL,
password varchar(25) default NULL,
informacion varchar(500) default NULL,
PRIMARY KEY (`id`)
)


El error estaba en el campo nombre, que no puede ser un auto_increment ya que es una cadena, no un número. Tambi'en hay algun error mas, por ejemplo en el registro.php al final para que lo muestre hay hacer un echo y creo que en el entrar.php falta un }

 

 


  !!r0Nk0!!
Bueno dejo el registro.php de nico, modificado, comentado ymejorado con más comprobaciones. Creo que funcioan todo bien, si veis algo raro avisarme.

MODIIFCADO con más campos.





if (isset($_REQUEST['registrar']))
{
if($_REQUEST['registrar'] == '1')
{
//Conexion a la base de datos
$conexion=mysql_connect("SERVIRDOR","USUARIO","PASS") or
die("Problemas en la conexion");
mysql_select_db("BASEDEDATOS",$conexion) or
die("Problemas en la seleccion de la base de datos");

if (isset($_POST["nombre"]))
{
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$sexo = $_POST["sexo"];
$avatar = $_POST["avatar"];
$fecha = $_POST["año"].$_POST["mes"].$_POST["dia"];
$ciudad = $_POST["ciudad"];
$email = $_POST["email"];
$password = $_POST["password"];
$rpassword = $_POST["rpassword"];
$info = $_POST["info"];
// Comprobación campos en blanco
if($nombre==NULL|$apellidos==NULL|$sexo==NULL|$fecha==NULL|$ciudad==NULL|$email==NULL|$password==NULL|$rpassword==NULL|$info==NULL)
{
echo "Hay Campos Vacios";
echo '<br><br><a href="registro.php">Volver</a>';
}
else
{
//Comprobamos que el email está bien escrito.
$mail_correcto = 0;
//compruebo unas cosas primeras
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," ")))
{
//miro si tiene caracter .
if (substr_count($email,".")>= 1)
{
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) )
{
//compruebo que lo de antes del dominio sea correcto
$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";
echo '<br><br><a href="registro.php">Volver</a>';
}
else
{
// comprobamos contraseña y si el nombre de usuario o el email existen

$comp = mysql_query("SELECT nombre FROM usuarios WHERE nombre='$nombre'");
$user_existe = mysql_num_rows($comp);
$comp = mysql_query("SELECT email FROM usuarios WHERE email='$email'");
$email_existe = mysql_num_rows($comp);

if ($email_existe>0|$nombre_existe>0)
{
//Le mandamos a mensaje de registrado
header('location: registro.php?registrado=1');
}
else if ($password!=$rpassword)
{
echo "Las contraseñas no coinciden";
echo '<br><br><a href="registro.php">Volver</a>';
}
else
{
//Si todo Ok metemos datos en la base de datos.
mysql_query("insert into usuarios(nombre,apellidos,sexo,avatar,fecha,ciudad,email,password,informacion) values
('$nombre','$apellidos','$sexo','$avatar','$fecha','$ciudad','$email','$password','$info')", $conexion) or die("Problemas en el select".mysql_error());
//nos dirigimos a entrar.php para logearse.
header('location: entrar.php');
}
}
}
}
else
{
echo"Error al recibir el formulario";
echo '<br><br><a href="registro.php">Volver</a>';
}
}
}
else
{
//Formulario
echo'
<html><body>
<center><table><h2>Registrarse</h2>
<td><form action="registro.php?registrar=1" method="post">
<p>Nombre: <input type="text" name="nombre"></p>
<p>Apellidos:
<input type="text" name="apellidos"></p>
<p>Sexo:
Hombre<input type="radio" name="sexo" value="hombre">
Mujer <input type="radio" name="sexo" value="mujer"></p>
<p>*Avatar: <input type="text" name="avatar"></p>
<p>Fecha de nacimiento: Día: <input type="text" size=1 name="dia"> Mes: <input type="text" size=1 name="mes"> Año: <input type="text" size=2 name="año"></p>
<p>Ciudad: <input type="text" name="ciudad"></p>
<p>Email: <input type="text" name="email"></p>
<p>Contraseña: <input type="password" name="password"></p>
<p>Repetir Contraseña: <input type="password" name="rpassword"></p>
<p>Información:<br><textarea id="informacion" name="info" rows="5" cols="50"></textarea></p>
<input type="submit" value="Registrar">
<p>* Campos Opcionales</p></td></table><center></html>';
}




 

 


  Broco
Ronco ¿le puedes añadir estas opciones?
Nombre
Apellidos
sexso: [Listmenu "chico,chica"]
Avatar:
Fecha de nacimiento:;
Ciudad:
email
Contraseña
Repetir Contraseña.
Informacion extra:

 

 


  !!r0Nk0!!
Ahi lo tienes modificado, tienes que crear las tablas en la base de datos, si no sabes te modifico el anterior post con lo necesario. La fecha no se como la quieres introducir a siq ue he pusto un simple imput text y no la valida es decir que si metes texto le da igual. lo suyo es que se ponga despegable, luego si quieres lo pongo.

MODIFICADO

post de las tablas actualizado con los nuevos campos

MODIFICADO

Fecha de nacimiento

MODIFICADO

pequeño error y formulario con mejor presentación, faltaría lavalidación de la fecha y un tamaño máximo en la info del textarea.

 

 





  Broco
dice que hay un campo vacio y es mentira xD
 

 


  !!r0Nk0!!
Has selecionado el sexo? he puesto la validación a todos los campos
 

 


  Broco
Si,lo e echo todo eso tio y no funciona.
porfi quitale la valiadcion al avatar osea eso que sea optativo :)

 

 


  !!r0Nk0!!
Arreglado el error tipografico que daba el error de los campos vacios y ahora el avatar es opcional, tambien he puesto el * al campo opcional explicandolo abajo del registro.
 

 


  Broco
Ronko tienes el enlace que estoy utilizando de pruebas mira usalo :S pasa halgo raro xD como si me llevase a un documento que no tengo en el host...
 

 


  !!r0Nk0!!
Es normal, cuando te registras correctamente te redirecciona a

header('location: entrar.php');

Si no has subido el archivo entrar.php el host te manda a la página de error. Si no quieres que te lleve ahi, cambia esa linea o sube el archivo que puso nico para logearte.

Fijate si se crean bien en la base de datos los usuarios y los campos bien, acabo de rregistrarme yo, aunque te lleve a esa página de error tiene que haber metido los datos en la Bd

 

 


  Broco
Ups seme olvido :S pero seme ve en blanco :S osea nop se ve nada :( sera algun error tipografico ...
pero yo no veo nada xD

 

 


  !!r0Nk0!!
Respuesta correcta
Aqui tienes el archivo entrar.php, si todo es correcto te manda a index.php




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

//Si se rellena el formulario
if ($_REQUEST['entrar'] == '1')
{
//Comprobamos que los campos nombre y usuario están rellenos
if(trim($_POST["nombre"]) != "" && trim($_POST["password"]) != "")
{
//Recogemos nombre y password
$nombre = $_POST["nombre"];
$password = $_POST["password"];
//comprobamos que el passwor corresponde al usuario
$result = mysql_query("SELECT password FROM usuarios WHERE nombre='$nombre'");
//Si corresponde creamos una cookie con nombre y usuario
if($row = mysql_fetch_array($result))
{
if($row["password"] == $password)
{
//Todo ok redirigimos a index.php
header('location: index.php');
}
else
{
//Si no corresponde
echo "Password incorrecto";
}
}
else
{
//Si el usuario no existe
echo "Usuario no existente en la base de datos";
}
//Liberamos memoria
mysql_free_result($result);
}
else
{
//Si no ha rrellenado algun campo
echo "Debe especificar un nombre y password";
}
//nos desconectamos de la bd
mysql_close();
}
else
{
//Formulario
echo'
<html><body>
<center><table><h2>Login</h2>
<td><form method="post" action="entrar.php?entrar=1">
<p>Nick : <INPUT TYPE="text" NAME="nombre"></p>
<p>Password: <INPUT TYPE="password" NAME="password"></p>
<p><INPUT TYPE="submit" CLASS="boton" VALUE="Ingresar"></p>
</FORM></td></table><center></body></html>';
}


 

 


  Broco
Cuando le doy a iniciar sesion me lelva el index
¿como se si a iniciado session?

 

 


  !!r0Nk0!!
Respuesta correcta
Ha recibido:
1 premios
Bueno ya que no me gustaba la forma inicial te dejo todo el sistema en este post. Tendrás que modificar el archivo conexion.php con tus datos. El registro está en registro.php, el login en entrar.php y la inicial index.php.

db.sql



CREATE TABLE usuarios(
id INTEGER NOT NULL AUTO_INCREMENT,
nombre varchar(40) default NULL,
apellidos varchar(80) default NULL,
sexo varchar(10) default NULL,
fecha DATE,
ciudad varchar(100) default NULL,
avatar varchar(250) default NULL,
email varchar(50) default NULL,
password varchar(25) default NULL,
informacion varchar(500) default NULL,
PRIMARY KEY (`id`)
)


conexion.php




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



deslogear.php



//Destruimos las cookies.
setcookie("nombre","x",time()-3600);
setcookie("password","x",time()-3600);

//Redirigimos a index.php
header('location: index.php');


index.php




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

if($loginCorrecto)
{
echo "Aqui el contenido solo para usuarios registrados";
echo '<br><br><a href="deslogear.php">Salir<a/>';
}
else
{
echo "El sistema no lo ha identificado, solo los usuarios registrados tienen acceso a esta area";
echo '<br><br><a href="entrar.php">Identificarte</a>';
echo '<br><br><a href="registro.php">Registrarte</a>';
}


entrar.php



echo'
<html><body>
<center><table><h2>Login</h2>
<td><form method="post" action="validaentrar.php">
<p>Nombre : <INPUT TYPE="text" NAME="nombre"></p>
<p>Password: <INPUT TYPE="password" NAME="password"></p>
<p><INPUT TYPE="submit" CLASS="boton" VALUE="Ingresar"></p>
</FORM></td></table><center></body></html>';



validaentrar.php




include("conexion.php");

if(trim($_POST["nombre"]) != "" && trim($_POST["password"]) != "")
{
$nombre = $_POST["nombre"];
$password = $_POST["password"];
$result = mysql_query("SELECT password FROM usuarios WHERE nombre='$nombre'");

if($row = mysql_fetch_array($result))
{
if($row["password"] == $password)
{
//90 dias dura la cookie
setcookie("nombre",$nombre,time()+7776000);
setcookie("password",$password,time()+7776000);


Ingreso exitoso, ahora sera dirigido a la pagina principal.

<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>
<?
}
else
{
echo "Password incorrecto";
echo '<br><br><a href="entrar.php">Volver</a>';
}
}
else
{
echo "Usuario no existente en la base de datos";
echo '<br><br><a href="entrar.php">Volver</a>';
}
mysql_free_result($result);
}
else
{
echo "Debe especificar un nick y password";
echo '<br><br><a href="entrar.php">Volver</a>';
}
mysql_close();

?>

registro.php



echo'
<html><body>
<center><table><h2>Registrarse</h2>
<td><form action="validaregistro.php" method="post">
<p>Nombre: <input type="text" name="nombre"></p>
<p>Apellidos:
<input type="text" name="apellidos"></p>
<p>Sexo:
Hombre<input type="radio" name="sexo" value="hombre">
Mujer <input type="radio" name="sexo" value="mujer"></p>
<p>*Avatar: <input type="text" name="avatar"></p>
<p>Fecha de nacimiento: Día: <input type="text" size=1 name="dia"> Mes: <input type="text" size=1 name="mes"> Año: <input type="text" size=2 name="año"></p>
<p>Ciudad: <input type="text" name="ciudad"></p>
<p>Email: <input type="text" name="email"></p>
<p>Contraseña: <input type="password" name="password"></p>
<p>Repetir Contraseña: <input type="password" name="rpassword"></p>
<p>Información:<br><textarea id="informacion" name="info" rows="5" cols="50"></textarea></p>
<input type="submit" value="Registrar">
<p>* Campos Opcionales</p></td></table><center></body></html>';



validaregistro.php



//Conexion a la base de datos

include("conexion.php");

if (isset($_POST["nombre"]))
{
$nombre = $_POST["nombre"];
$apellidos = $_POST["apellidos"];
$sexo = $_POST["sexo"];
$fecha = $_POST["año"].$_POST["mes"].$_POST["dia"];
$ciudad = $_POST["ciudad"];
$email = $_POST["email"];
$password = $_POST["password"];
$rpassword = $_POST["rpassword"];
$info = $_POST["info"];
// Comprobación campos en blanco
if($nombre==NULL|$apellidos==NULL|$sexo==NULL|$fecha==NULL|$ciudad==NULL|$email==NULL|$password==NULL|$rpassword==NULL|$info==NULL)
{
echo "Hay Campos Vacios";
echo '<br><br><a href="registro.php">Volver</a>';
}
else
{
//Comprobamos que el email está bien escrito.
$mail_correcto = 0;
//compruebo unas cosas primeras
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," ")))
{
//miro si tiene caracter .
if (substr_count($email,".")>= 1)
{
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) )
{
//compruebo que lo de antes del dominio sea correcto
$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";
echo '<br><br><a href="registro.php">Volver</a>';
}
else
{
// comprobamos contraseña y si el nombre de usuario o el email existen
$comp = mysql_query("SELECT nombre FROM usuarios WHERE nombre='$nombre'");
$user_existe = mysql_num_rows($comp);
$comp = mysql_query("SELECT email FROM usuarios WHERE email='$email'");
$email_existe = mysql_num_rows($comp);

if ($email_existe>0|$nombre_existe>0)
{
//Le mandamos a mensaje de registrado
header('location: registro.php?registrado=1');
}
else if ($password!=$rpassword)
{
echo "Las contraseñas no coinciden";
echo '<br><br><a href="registro.php">Volver</a>';
}
else
{
//Si todo Ok metemos datos en la base de datos.
mysql_query("insert into usuarios(nombre,apellidos,sexo,avatar,fecha,ciudad,email,password,informacion) values
('$nombre','$apellidos','$sexo','$avatar','$fecha','$ciudad','$email','$password','$info')", $conexion) or die("Problemas en el select".mysql_error());
//nos dirigimos a entrar.php para logearse.
header('location: entrar.php');
}
}
}
}
else
{
echo"Error al recibir el formulario";
echo '<br><br><a href="registro.php">Volver</a>';
}


validacookie.php



$loginCorrecto = false;
$idUsuarioL;
$nombreUsuarioL;
$emailUsuarioL;

if(isset($HTTP_COOKIE_VARS["nombre"]) && isset($HTTP_COOKIE_VARS["password"]))
{
$result = mysql_query("SELECT nombre FROM usuarios WHERE nombre='".$HTTP_COOKIE_VARS["nombre"]."' AND password='".$HTTP_COOKIE_VARS["password"]."'");

if($row = mysql_fetch_array($result))
{
setcookie("nombre",$HTTP_COOKIE_VARS["nombre"],time()+7776000);
setcookie("password",$HTTP_COOKIE_VARS["password"],time()+7776000);
$loginCorrecto = true;
$idUsuarioL = $row["id"];
$nombreUsuarioL = $row["nombre"];
$emailUsuarioL = $row["email"];
}
else
{
//Destruimos las cookies.
setcookie("nombre","x",time()-3600);
setcookie("password","x",time()-3600);
}
mysql_free_result($result);
}



 

 


  Broco
Ronco e modificado el codigo que me as dado, para que solo tenga email nombre y pass.
Funciona todo bien, lo unico que falla es cuando comprueba el nombre.. (comprobar email lo e quitado)




//Conexion a la base de datos

include("conexion.php");

if (isset($_POST["nombre"]))

{
$nombre = $_POST["nombre"];
$email = $_POST["email"];
$password = $_POST["password"];
$rpassword = $_POST["rpassword"];

if($nombre==NULL|$email==NULL|$password==NULL|$rpassword==NULL)

{

echo "Hay Campos Vacios";

echo '<br><br><a href="registrarse.php">Volver</a>';

}

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," ")))

{

//miro si tiene caracter .

if (substr_count($email,".")>= 1)

{

//obtengo la terminacion del dominio

$term_dom = substr(strrchr ($email, '.'),1);

//compruebo que la terminación del dominio sea correcta

if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) )

{

//compruebo que lo de antes del dominio sea correcto

$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";

echo '<br><br><a href="registrarse.php">Volver</a>';

}
else
{
$comp = mysql_query("SELECT nombre FROM usuarios WHERE nombre='$nombre'");
$user_existe = mysql_num_rows($comp);
if ($user_existe>0)

{
echo "El nombre que as elegido ya esta en uso";
echo '<br><br><a href="registrarse.php">Volver</a>';
}

else if ($password!=$rpassword)

{
echo "Las contraseñas no coinciden";
echo '<br><br><a href="registrarse.php">Volver</a>';
}

else

{
mysql_query("insert into usuarios(nombre,password,email) values
('$nombre','$password','$email')", $conexion) or die("Problemas en el select".mysql_error());
header('location: index.php?registro=1');

}

}

}

}

else

{

echo"Error al recibir el formulario";

echo '<br><br><a href="registrarse.php">Volver</a>';

}




 

 


  Broco
Solucionado



$comp = mysql_query("SELECT nombre FROM usuarios WHERE nombre='$nombre'");
$user_existe = mysql_num_rows($comp);
if ($$nombre_existe>0)


Cambiamos &&nombre por $usuer

 

 





    ¿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