InicioInfoMinitutorial Sistema Login

Buenas,

A mi generalmente me costaba bastante crear un sistema de usuarios funcional. Igual, gracias al poder de la persistencia y a la comunnidad pude avanzar y crear algo en lo que se puede comenzar...

A continuación expongo los principales pasos para construir un sistema de sesión de usuario mediante un formulario simple.

Por ejemplo, en el index.php tendremos el típico form preguntando el usuario y el pass:

<?php
    session_start
(); //Esto inicia la sesión
    
if(isset($_SESSION['user'])) //Si existe la variable de sesión 'user':
    
{
        
$_SESSION['time']= time(); //Se crea la variable de sesión 'time' con el valor de time() (ejemplo: 1339168896)
        
if(isset($_SESSION['time'])) //Si existe la variable de sesión 'time':
        
{
            
$timeNowtime(); //Se asigna el valor de time() (ejemplo: 1339168963) a la variable timeNow
            
$timeCount$timeNow $_SESSION['time']; //Se le asigna a la variable timeCount el valor de la variable timeNow menos la variable de sesión 'time' (1339168963 - 1339168896 = 67 segundos)

            
if($timeCount>1200//Si el valor de la variable timeCount es superior a 1200 (segundos, 20 minutos): 
            
{
                unset(
$_SESSION['user']); //Se destruye el valor de la variable de sesión 'user'
                
$_SESSION['error'] = 'Su sesion ha expirado. Ingrese nuevamente.'//Se le asigna un mensaje de error a la variable de sesión 'error'
            
}
        }
    }
    if(isset(
$_SESSION['error'])) //Si existe la variable de sesión 'error':
    
{
        echo 
'<div id="error"><p>'.$_SESSION['error'].'</p></div>'//Muestra un div con el mensaje de error contenido en la variable de sesión 'error'
        
unset($_SESSION['error']); //Destruye la variable de sesión 'error'
    
}
    if(isset(
$_SESSION['user'])) //Si existe la variable de sesión 'user'
    

        
$_SESSION['time']= time(); //Se establece el valor time() de la variable de sesión 'time'. 
        
header('Location: home'); //Redirecciona a la carpeta 'home'
    
}
    else 
//si no existe la variable de sesión 'user' muestra el html siguiente:
    
{
?>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>Konectar</title>
        <link rel="stylesheet" type="text/css" href="datafiles/general.css" />
        <script type="text/javascript" src="datafiles/general.js"></script>
        <script type="text/javascript">
            function CheckForm()
            {
                var User= document.getElementById('inUser').value; //Se crea la variable User conteniendo el valor del input con id 'inUser'
                var Pass= document.getElementById('inPass').value;
                var errormsg= 'Debe completar: n' //Se crea un mensaje de error en la variable errormsg
                if(User == '') //Si la variable 'User' no tiene contenido:
                    {
                    var error= true; //crea la variable 'error' con valor verdadero (existe)
                    var errormsg= errormsg + 'Nombre de Usuarion';
                    }
                if(Pass == '')
                    {
                    var error= true;
                    var errormsg= errormsg + 'Contraseñan';
                    }
                if(error) //Si existe la variable 'error' (si el valor es verdadero, true):
                {
                    alert(errormsg) //Muestra un mensaje de alerta con el contenido de la variable 'errormsg'
                }
                else //sino
                {
                    document.getElementById('loginForm').submit(); //Hace un submit en el form con id 'loginForm'
                }
            }
        </script>
    </head>
    <body>
        <div class="content">
            <form action="datafiles/config/login.php" method="POST" id="loginForm">
                <table>
                    <tr>
                        <td colspan="2"><img src="datafiles/image/logo.png" /></td>
                    </tr>
                    <tr>
                        <td>Usuario: </td>
                        <td><input type="text" name="inUser" maxlength="32" autocomplete="off" id="inUser" style="width:150px" placeholder="Usuario" /></td>
                    </tr>
                    <tr>
                        <td>Contrase&ntilde;a</td>
                        <td><input type="password" name="inPass" maxlength="32" id="inPass" style="width:150px" placeholder="Contraseña" /></td>
                    </tr>
                    <tr>
                        <td colspan="2"><input type="button" value="Ingresar" id="inForm" onclick="CheckForm()" /></td>
<!-- Al hacer clic (onclick) en el botón (button, no submit) ejecuta la función 'CheckForm()' -->
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>

<?php ?>



Esto que hicimos recien simplemente cheque que no exista la sesión de usuario, si la hay envía al usuario a la carpeta home, sino envía los datos procesados del formulario al login.php.

Ahora, el archivo login.php:

<?php
    session_start
();
    require_once 
'SqlConnection.php'//Requiere el archivo 'SqlConnection.php
    
class login //Crea la clase 'login'
    
{
        public function 
__construct($usr,$inUsr,$inPss//Crea la función '__construct' con el las tres variables.
        
{
            
$this->Username=$usr;
            
$this->PostUser=$inUsr;
            
$this->PostPass=$inPss;
        }
        public function 
checkSession() //Crea la función 'checkSession()'
        
{
            if(isset(
$this->Username)) //Si existe la variable 'Username':
            
{
                
header("Location: ../"); //Redirige una carpeta atrás. O sea al index.php
            
}
        }
        public function 
checkForm() //Crea la función 'checkForm()'
        
{
            if(!isset(
$this->PostUser)) //Si NO existe la variable 'PostUser':
            
{
                
header("Location: ../");
            }
            if(!isset(
$this->PostPass))
            {
                
header("Location: ../");
            }   
        }
    }
    
$check= new login($_SESSION['user'],$_POST['inUser'],$_POST['inPass']); //Se crea una nueva clase 'login' con los valores 'Username'=$_SESSION['user'] ; 'PostUser'=$_SESSION['inUser'] ; 'PostPass'=$_SESSION['inPass']
    
$check-> checkSession(); //Se ejecuta la función 'checkSession()'
    
$check-> checkForm(); //Se ejecuta la función 'checkForm()
    
    
$sqlSyntax'SELECT user_username,user_password FROM users WHERE user_username = "'.$_POST['inUser'].'" AND user_password = "'.$_POST['inPass'].'"'//Se crea la sintaxis para la base de datos
    
$sqlQuerymysql_query($sqlSyntax); //Se ejecuta el query de $sqlSyntax
    
$sqlSyntax2'SELECT user_username FROM users WHERE user_username = "'.$_POST['inUser'].'"';  //Se crea la siguiente sintaxis
    
$sqlQuery2mysql_query($sqlSyntax2); //Se ejecuta el segundo query
    
$sqlRowmysql_num_rows($sqlQuery); //Se verifica el total de filas devueltas de $sqlQuery
    
if($sqlRow==1//Si el valor devuelto por $sqlRow es igual a 1:
    
{
        while(
$resQry2mysql_fetch_array($sqlQuery2)) //Mientras se lee el array y lo guarda en $resQry2 ejecutando el segundo query:
        
{
            
$_SESSION['user']= $resQry2[0]; //Le asigna el valor contenido en la posición 0 del arrray a la variable de sesión 'user'
        
}
        
header('Location: ../../home');
        
$_SESSION['error']= 'Bienvenid@ '.$_SESSION['user'].''//Le asigna a la variable de sesión un mensaje de bienvenida con el nombre del usuario
        
$_SESSION['time']= time(); //Asigna el valor time() a la variable de sesión 'time'
        
    
}
    else 
//Si el valor de filas devuelto es distinto de 1:
    
{
        
$_SESSION['error']= 'Usuario o contraseña incorrectos'//Se le asigna un mensaje de error a la variable de sesión 'error'
        
header('Location: ../../');
    }

?>



Lo que acabamos de hacer es.
1. Iniciamos la sessión (session_start()
2. Iniciamos la conexión a la base de datos y selección de la misma.
3. Verificamos la existencia de los campos del formulario anterior.
4. Verificamos la validez del usuario y contraseña en la base de datos.
5. Le asignamos los valores a las variables designadas.
6. Creamos la clase y ejecutamos sus funciones.

Ahora vemos el contenido del archivo que se conecta a la base de datos (sqlConnection.php:

<?php
    
require("sqlData.php"); //Requerimos los datos para la conexión a la base de datos.
    
    
class SQLConnection
    
{
        public function 
__construct($user,$pass,$host)
        {
            
$this->sqlUser=$user;
            
$this->sqlPass=$pass;
            
$this->sqlHost=$host;
        }
        public function 
selectDatabase($datab)
        {
            
$this->sqlData=$datab;
        }
        public function 
sqlConnect()
        {
            
$sqlCon mysql_connect($this->sqlHost,$this->sqlUser,$this->sqlPass); //Se crea el famoso "link identifier', el cual es un valor verdadero en caso de la conexión sea realizada correctamente. Se almacena dentro de $sqlCon
            
if(!$sqlCon//Si NO existe $sqlCon
            
{
                die(
mysql_error($sqlCon)); //Mata la conexión con la base de datos y muestra el error que tira el SQL
            
}
        }
        public function 
dbSelect()
        {
            
$sqlSel mysql_select_db($this->sqlData); //Guarda el valor verdadero si la selección de la base de datos se realizó correctamente y la guarda en $sqlSel
            
if(!$sqlSel)
            {
                die(
mysql_error($sqlCon));
            }
        }
    }
    
$sql= new SQLConnection($sqlUser,$sqlPass,$sqlHost);
    
$sql->selectDatabase($sqlBase);
    
$sql->sqlConnect();
    
$sql->dbSelect();
?>



Nuevamente, hicimos algo simple como:
1. Verificamos la conexión a la base de datos.
2. Verificamos la selección de la base de datos.

Si bien el archivo sqlConnection podría contener los datos de conexión a la base de datos, podemos decir que a veces por cuestiones de seguridad o de comodidad está bueno separar.
Por ejemplo, en vez de que en la creación de la clase hubiésemos puesto las variables, podríamos haber puesto directamente los datos de conexión.
En vez de poner:

$sql= new SQLConnection($sqlUser,$sqlPass,$sqlHost);
$sql->selectDatabase($sqlBase);

Podríamos haber puesto:

$sql= new SQLConnection('nombredeusuario','passwordbd','localhost');
$sql->selectDatabase('nuestrabasededatos);


En el archivo sqlData.php pondremos los valores adecuados:

<?php

    
//USUARIO DE BASE DE DATOS
    
$sqlUser'nombredeusuario';
    
//CONTRASEÑA DE BASE DE DATOS
    
$sqlPass'passwordbd';
    
//UBICACION DE BASE DE DATOS
    
$sqlHost'localhost';
    
//NOMBRE DE BASE DE DATOS
    
$sqlBase'nuestrabasededatos';
?>


Lo necesario para que esto funcione, es la base de datos
1. Creamos una tabla llamada 'users' (se puede cambiar por la que ustedes vayan a usar).
2. Creamos una columna user_id de tipo 'Integer' (INT) con un valor primario y clave (PRIMARY KEY), autoincrementable (auto_increment) y Length 10.
3. Creamos una columna user_username de tipo VARCHAR, 64 caractéres y No deafult.
4. Creamos una columna user_password de tipo VARCHAR, 32 caractéres y No default.

Para crear la base de datos podemos usar PHPmyadmin pero yo recomiendo (por un tema de comodidad) utilizar HeidiSQL.




Yo utilizo Wamp Server (para Windows) que trae en el mismo paquete Apache + MySQL + PHP y es fácil de configurar módulos, funciones, actualizaciones, etc.



Asimismo, utilizo Netbeans como IDE ya que tiene debugger incluído.


Bueno, se aceptan críticas, consejos y comentarios

Suerte
Datos archivados del Taringa! original
64puntos
2,912visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

t
tinchoeluru🇦🇷
Usuario
Puntos0
Posts11
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.