Foros del Web » Programando para Internet » PHP »

Codigos Registro/login/

Estas en el tema de Codigos Registro/login/ en el foro de PHP en Foros del Web. Aqui pongo estos codigos para ver si me podeis ayudar a mejorar algo Quisiera ponerle para verificar el correo tipo como lo que puso GATORV ...
  #1 (permalink)  
Antiguo 04/04/2008, 10:30
 
Fecha de Ingreso: abril-2008
Mensajes: 14
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Codigos Registro/login/

Aqui pongo estos codigos para ver si me podeis ayudar a mejorar algo
Quisiera ponerle para verificar el correo tipo como lo que puso GATORV en aportes

config.php

Cita:
<?php
$dbhost="localhost";
$dbuser="root";
$dbpass="";
$db="soft";

//conectamos y seleccionamos db
mysql_connect("$dbhost","$dbuser","$dbpass");
mysql_select_db("$db");

//Comenzamos la sesión, esto se explica despues en el Sistema de Login
session_start();
?>
registrar.php

Cita:
<?php
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

//Comprobamos que los campos nick, pass y pass1 se han rellenado en el form de reg.php, sino volvemos al form
if(($_POST[nick] == ' ') or ($_POST[pass] == ' ') or ($_POST[pass1] == ' ') )
{
Header("Location: reg.php"); //enviamos al form de registro que esta en reg.php
}else{

//Comprobamos que la pass y pass1 son iguales, sino, volvemos a reg.php
if($_POST[pass] != $_POST[pass1])
{
echo 'Las passwords no son iguales';
}else{

//quitamos el codigo malicioso de $_POST[nick] y $_POST[pass]
$user = stripslashes($_POST["nick"]);
$user = strip_tags($user);
$pass = stripslashes($_POST["pass"]);
$pass = strip_tags($pass);
//comprobamos que el usuario no existe en la db
$usuarios=mysql_query("SELECT nick FROM users WHERE nick='$user' ");
if($user_ok=mysql_fetch_array($usuarios))
{
echo 'El usuario ya esta registrado';
mysql_free_result($usuarios); //liberamos la memoria del query a la db
}else{
//quitamos todo el codigo malicioso de las demas variables del form de registro
$email = stripslashes($_POST["email"]);
$email = strip_tags($email);

$rollo = stripslashes($_POST["rollo"]);
$rollo = strip_tags($rollo);
$rollo = str_replace("\n\r","<br>",$rollo); //se cambian los saltos de linea por <br>
$rollo = str_replace("\r\n","<br>",$rollo);
$rollo = str_replace("\n","<br>",$rollo);

$fecha = time();
$level = "2"; //usaremos level 1 para admins, level 2 para los demas (se cambia manualmente desde phpmyadmin)

//introducimos el nuevo registro en la tabla users
mysql_query("INSERT INTO users (nick,pass,email,fecha,level,rollo) values ('$user','$pass','$email','$fecha','$level','$roll o') ");
echo 'Usuario registrado con éxito';

}

}

}
echo '<br><a href=perfil.php>Perfil</a>';
?>
reg.php

Cita:
<?php
session_start();
//datos para establecer la conexion con la base de mysql.
$conexion=mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('soft')or die ('Error al seleccionar la Base de Datos: '.mysql_error()); //incluimos el config.php que contiene los datos de la conexión a la db
echo '<form action="registrar.php" method="POST">
Nick: <input type="text" name="nick" size="30"><br>
Password: <input type="password" name="pass" size="30" ><br>
Repetir Password: <input type="password" name="pass1" size="30" ><br>
email: <input type="text" name="email" size="50"><br>
Comentarios: <textarea name="rollo" cols="30" rows="10"></textarea><br>
<input type="submit" name="submit" value="Enviar"></form>';
?>
login.php

Cita:
<?php
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

if(!isset($_SESSION[usuario]) ) //comprobamos que no existe la session, es decir, que no se ha logeado, y mostramos el form
{

//Creamos el form k irá a autentificar.php para comprobar los datos con la tabla users
echo '<form action="autentificar.php" method="POST">
Nick: <input type="text" name="nick" size="30"><br>
Password: <input type="password" name="pass" size="30" ><br>
<input type="submit" name="submit" value="Enviar"></form>';

}else{

//SI se ha logeado, mostramos el nick y la opción de deslogearse
//Este sería el menú que saldría a la gente que esta logeada, se puede modificar y añadir cosas
echo 'Bienvenido '.$_SESSION[usuario]; //ej Bienvenido Juan
echo '<br>Tu level es '.$_SESSION[level]; //mostramos el level del user
if($_SESSION[level] == 1)
{
//mostramos el link para ir a la pagina privada porque el user tiene level 1 (*Nota: el level por defecto es 2, por lo tanto no se le mostrará)
//*Nota2: para cambiar el level a 1, se tiene k hacer manualmente por phpmyadmin
echo '<br><a href=paginaprivada.php>Ir a pagina privada</a>';
}

echo '<br><a href=logout.php>Salir</a>'; //link para deslogearse, iría a logout.php

}

?>
autentificar.php

Cita:
<?php
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db

if( ($_POST[nick] == ' ') or ($_POST[pass] == ' ') )//comprobamos que las variables enviadas por el form de login.php tienen contenido
{
Header("Location: login.php"); //estan vacías, volvemos al index
}else{

//comprobamos en la db si existe ese nick con esa pass
$usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='$_POST[pass]' ");
if($user_ok = mysql_fetch_array($usuarios)) //si existe comenzamos con la sesion, si no, al index
{

session_register("usuario"); //registramos la variable usuario que contendrá el nick del user
session_register("idusuario"); //registramos la variable idusuario que contendrá la id del user
session_register("level"); //registramos la variable level que contendrá el level del user
//damos valores a las variables de la sesión
$_SESSION[usuario] = $user_ok["nick"]; //damos el nick a la variable usuario
$_SESSION[idusuario] = $user_ok["id"]; //damos la id del user a la variable idusuario
$_SESSION[level] = $user_ok["level"]; //damos el level del user a la variable level
Header("Location: login.php"); //volvemos al login donde nos saldrá nuestro menú de usuario

}else{
echo 'Autentificacion incorrercta<br>Comprueba tus datos';
}

}
?>
Perfil.php

Cita:
<?php
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión

if(!isset($id))
{
echo 'no se ha seleccionado ninguna id'; //no han seleccionado ninguna id,
}else{

//comprobamos si esa id existe
$user=mysql_query("SELECT * FROM users WHERE id='$id'");
if($user_ok=mysql_fetch_array($user) )
{
//todo comprobado, ahora solo falta mostrar los datos
echo 'Usuario <b>'.$user_ok["nick"].'</b><br>';
echo '<br>Email: <a href="mailto:'.$user_ok["email"].'">'.$user_ok["email"].'</a><br>';

//sacamos la fecha de registro mediante la funcion date
$fecha=date("d.m.Y - H:i", $user_ok["fecha"]);
echo 'Fecha de registro: '.$fecha.'<br>';

//por último mostramos el rollo
echo 'Rollo:<br>'.$user_ok["rollo"];


}else{

echo 'La id seleccionada no existe';

}

}

?>
paginaprivada.php

Cita:
<?php
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión

if($_SESSION[level] == 1)
{
echo 'Tienes level 1 y puedes ver esta página';

}else{
Header("Location: index.php");
}

?>
logout.php

Cita:
<?php
include('config.php'); //incluimos el config.php que contiene los datos de la conexión a la db y la sesión

session_destroy(); //destruimos la sesion
Header("Location: login.php"); //volvemos al login.php

?>
  #2 (permalink)  
Antiguo 22/08/2008, 08:36
 
Fecha de Ingreso: julio-2008
Mensajes: 12
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Codigos Registro/login/

Te agradeceria que pusieras el talbas.SQL
Saludos
  #3 (permalink)  
Antiguo 22/08/2008, 08:41
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Codigos Registro/login/

hola,

yo utilizaria esto:

Código PHP:
//Comprobamos que la pass y pass1 son iguales, sino, volvemos a reg.php
if(strcmp($_POST["pass"],$_POST["pass1"])!=0)

en lugar de esto:
Código PHP:
//Comprobamos que la pass y pass1 son iguales, sino, volvemos a reg.php
if($_POST[pass] != $_POST[pass1])

creo que podrias utilizar nl2br en lugar de:
Código PHP:
$rollo str_replace("\n\r","<br>",$rollo); //se cambian los saltos de linea por <br>
$rollo str_replace("\r\n","<br>",$rollo);
$rollo str_replace("\n","<br>",$rollo); 
En el fichero "reg.php" creo que esto sobraria:
Código PHP:
session_start(); 
//datos para establecer la conexion con la base de mysql. 
$conexion=mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error()); 
mysql_select_db('soft')or die ('Error al seleccionar la Base de Datos: '.mysql_error()); //incluimos el config.php que contiene los datos de la conexión a la db 
para que lo necesitas si solo muestras un formulario html ?

según el manual de php
http://es2.php.net/manual/es/functio...n-register.php

dicen que si utilizas $_SESSION no utilices session_register
Código PHP:
 session_register("usuario"); //registramos la variable usuario que contendrá el nick del user
session_register("idusuario"); //registramos la variable idusuario que contendrá la id del user
session_register("level"); //registramos la variable level que contendrá el level del user
//damos valores a las variables de la sesión
$_SESSION[usuario] = $user_ok["nick"]; //damos el nick a la variable usuario
$_SESSION[idusuario] = $user_ok["id"]; //damos la id del user a la variable idusuario
$_SESSION[level] = $user_ok["level"]; //damos el level del user a la variable level 
NOTA: es lo mismo $_POST["pass"] que $_POST[pass] ? ya lo he visto en varios temas y creo que $_POST[pass] esta mal.

Última edición por nx00; 22/08/2008 a las 08:51
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:46.