Estoy realizando un sitio web, y tengo algunas páginas en PHP como archivos aislados. Me gustaría saber cómo hago para trabajar con usuarios, que se logeen para entrar a mi sitio web y que puedan hacer consultas manteniendo la información de usuario y contraseña y con ello poder navegar por todo el sitio con la misma sesión.
Respuesta de reynierpm
1
1
reynierpm, Llevo casi 4 años programando aplicacioens web usando PHP y MySQL
Lo primero que debes crear es la BDatos donde almacenaras tus datos de usuarios. Vamos a llamarla "mibasededatos" y dentro de ella creamos una tabla llamada "usuarios" ejecutando la consulta esta: CREATE TABLE `usuarios` ( `id` int(11) NOT NULL auto_increment, `login` varchar(60) NOT NULL default '', `pwd_usuario` varchar(150) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM; Los datos adicionalos tu mismos usando algún cliente gráfico o simplemente ejecutando consultas desde el mismo PHP y ya de paso puedes encriptar la contraseña de usuario para darle un poco más de seguridad al sistema. ¿Cómo? Pues así <? # Encriptamos la contraseña del usuario. OJO: Calcular el HASH MD5 de una cadena no tiene inversa o sea que luego que pongas esa contraseña no la olvides pues cada vez que te logees tendrás que comprobar que la contraseña que mandas es igual a la que contiene la BDatos de lo contrario nunca te dejará pasar. $pwd_usuario = md5("la_contraseña_del_usuario_que_quieres_insertar"); $query = "INSERT INTO usuarios(login,pwd_usuario) VALUES("nickname_de_usuario_o_login_que_usara",'".$pwd_usuario."')"; $result = mysql_query($query) or die(mysql_error()); if($result){ echo "Se adiciono el usuario"; }else{ echo "Ocurrieron errores mientras se intentaba adicionar el usuario"; } ?> Ahora creamos los scripts para manejar los usuarios y las sesiones. El primero es simple un formulario con campos para login y password: formulario.php ======================================================================================================= <html> <head> <title>Login de Usuarios</title> </head> <body> <FORM action="login.php" method="POST" name="formlogin" enctype="multipart/form-data"> Login de Usuario: <INPUT TYPE="TEXT" name="ulogin" size="25" maxlength="35"><BR> Contraseña de Usuario: <INPUT TYPE="password" name="upwd" size="25" maxlength="150"><BR> <INPUT TYPE="SUBMIT" name="btn_login" value="Login"> </FORM> </body> </html> ======================================================================================================= login.php ======================================================================================================= <? $uname = isset($_POST['ulogin'])?$_POST['ulogin']:null; $upwd = isset($_POST['upwd'])?md5($_POST['upwd']):null; # Realizamos una consulta para comprobar que el usuario existe $query = "SELECT * FROM usuarios WHERE (login='".$uname."') AND (pwd_usuario='".$upwd.')"; $result= mysql_query($query) or die(mysql_error()); $nrows = mysql_num_rows($result); # Si se devolvio un registro al menos if($nrows > 0){ session_start(); $_SESSION['ulogin'] = base64_encode($uname); $_SESSION['upwd'] = base64_encode($upwd); header("Location: mipagina.php?uname=".$_SESSION['uname']."&upwd=".$_SESSION['upwd']."&login=1"); }else{ header("Location: mipagina.php?login=0"); } ?> ======================================================================================================= mipagina.php ======================================================================================================= <? session_start(); # Iniciamos la sesión porque de lo contrario no podrás comprobar los valores de las variables globales $_SESSION if($_GET['login'] == 1){ echo "Datos tomados de las variables de sesión"; echo "Bienvenido" . base64_decode($_SESSION['uname']) . "<br>"; echo "El HASH MD5 de tu contraseña es: " . base64_decode($_SESSION['upwd']) . "<br>"; echo "Datos tomados de la dirección URL"; echo "Bienvenido" . base64_decode($_GET['uname']) . "<br>"; echo "El HASH MD5 de tu contraseña es: " . base64_decode($_GET['upwd']) . "<br>"; }else{ echo "No se reconoce el usuario probablemente porque no existe o porque no introdujo bien los datos de usuario<br>Intentelo de nuevo haciendo click <a href='formulario.php'>aquí</a>"; } ?> ======================================================================================================= Y ya esta eso es todo. Una cosa debes poner todos los ficheros en el mismo directorio.
¿Qué bien que hayan expertos como tu en este mundo... Antes de finalizar, me gustaría preguntarte algo más... Cómo hago con las demás páginas?, es decir, ¿llego a mi página.php y si el usuario entra a otro enlace que yo tengo en la página para consultar más en la base de datos y se devuelve a mipagina.php y vuelve a entrar a otro enlace diferente?. Eso es lo que no entiendo, ¿cómo hago para saber que está en la misma sesión de usuario?. Mil gracias de nuevo.
Pues la sesión se mantiene con datos mientras no cierres el navegador o hagas un session_unset() o session_unregister($variable_sesion) así que puedes seguir usando las variables de sesión independiente de la página por la que te halles navegando.