miércoles, enero 27, 2010

Sistema de usuarios en php Parte 1

Hoy empezare con este pequeño tutorial de un sistema de usuarios en php.

Creando la Base de Datos:

Yo utilizare como motor de Base de Datos MySQL porque me gusta más.

CREATE TABLE `usuarios` (

`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nombre` VARCHAR( 200 ) NOT NULL ,
`usuario` VARCHAR( 20 ) NOT NULL ,
`clave` VARCHAR( 20 ) NOT NULL ,
`correo` VARCHAR( 30 ) NOT NULL ,
`nivel` ENUM( '1', '2', '3' ) NOT NULL DEFAULT '1',
`log` TEXT NOT NULL

) ENGINE = MYISAM ;

INSERT INTO `usuarios` VALUES (1, 'Pedro Perez', 'pedro', '827ccb0eea8a706c4c34a16891f84e7b', 'me@me.com', '1', '');

Usuario: pedro

Contraseña: 12345

¿Qué es lo que significa esto?

Que en nuestro sistema vamos a almacenar el nombre de la persona, un usuario ligado a la persona, una contraseña, un correo electrónico, un nivel dentro del sistema que puede ser nivel 1 básico nivel 2 avanzado y nivel 3 administrador, se pueden agregar tantos niveles quieran y por ultimo vamos a guardar un log de la persona.

Ahora el código php tratare de hacerlo lo más sencillo y ordenado por funciones:



index.php
<?php
/**
 * @author Victo Arturo Hernandez Avila
 * @mail arturo[dot]webrek[at]gmail[dot]com
 * @copyright 2010
 */ 
session_start();
include 'config.php';
include 'login.php';
if($_SESSION['usuario']){
    header("LOCATION: sistema.php");
}

?>


config.php
<?php

/**
 * @author Victo Arturo Hernandez Avila
 * @mail arturo[dot]webrek[at]gmail[dot]com
 * @copyright 2010
 */ 

$host = "127.0.0.1";
$user = "root";
$pass = "12345";
$dbname = "test";
$connect = mysql_connect($host, $user, $pass);
$dbconnect = mysql_select_db($dbname, $connect);

?>


login.php
<?php

/**
 * @author Victo Arturo Hernandez Avila
 * @mail arturo[dot]webrek[at]gmail[dot]com
 * @copyright 2010
 */ 
if(empty($_SESSION['usuario'])){
    switch($_REQUEST['op']){
        default:
            loginBox();
        break;
        case "sendLogin":
            logincheck();
        break;
    }
}

function logincheck(){
    $usuario = mysql_real_escape_string($_POST['usuario']);
    $clave = mysql_real_escape_string($_POST['clave']);
    if(empty($_POST['usuario']) && empty($_POST['clave'])){
        errorLogin("Los campos usuario y contraseña no deben ser dejados en blanco.");
        loginBox();
    }else{
        $sqlValid = "SELECT * FROM usuarios where usuario = '$usuario'";
        $queryValid = mysql_query($sqlValid) or die (mysql_error());
        $numValid = mysql_num_rows($queryValid);
        if($numValid != 1){
            errorLogin("El Usuario no existe !!");
            loginBox();
        }else{
            $array = mysql_fetch_array($queryValid);
            if($array['clave'] != md5($clave)){
                errorLogin("Contraseña Incorrecta");
                loginBox();
            }else{
                $ip = $_SERVER['REMOTE_ADDR'];
                $fecha = date("U");
                $log = "$ip, $fecha;";
                $logCompleto = "$array[log] $log";
                $updateLog = "UPDATE usuarios SET log = '$logCompleto' WHERE id = '$array[id]'";
                $queryLog = mysql_query($updateLog);
                $_SESSION['iduser'] = $array['id'];
                $_SESSION['nombre'] = $array['nombre'];
                $_SESSION['usuario'] = $array['usuario'];
                $_SESSION['correo'] = $array['correo'];
                $_SESSION['nivel'] = $array['nivel'];
                header("LOCATION: sistema.php");
            }
        }
    }
}

function errorLogin($str){
    echo '<div style="color:red;width:300px;border:1px solid red;background: #FFFF99;font-family:Verdana;font-size:12px;">'.$str.'</div>';
}

function loginBox(){
    echo '
    <div id="loginBox">
        <form method="post" action="'.$_SERVER['PHP_SELF'].'">
            <div>
                Usuario
            </div>
            <div>
                <input type="text" name="usuario">
            </div>
            <div>
                Contraseña
            </div>
            <div>
                <input type="password" name="clave">
            </div>
            <div>
                <input type="submit" value="Entrar">
                <input type="hidden" name="op" value="sendLogin">
            </div>
        </form>
    </div>
    ';
}

?>


sistema.php
<?php

/**
 * @author Victo Arturo Hernandez Avila
 * @mail arturo[dot]webrek[at]gmail[dot]com
 * @copyright 2010
 */ 
session_start();
if($_REQUEST['foo'] == 'logout'){
    session_destroy();
    session_unset();
    
}
include 'config.php';
include 'login.php';
if ($_SESSION['usuario']) {
    switch ($_SESSION['nivel']) {
        case 1;
            level1();
            break;
        case 2;
            level2();
            break;
        case 3;
            level3();
            break;
    }
    switch ($_REQUEST['foo']) {
        default:
            echo '<br /><br />Sistema de Usuarios en PHP<br /> <a href="http://webrek.blogspot.com">http://webrek.blogspot.com</a>';
            break;
        case 'myinfo':
            echo '
        <br />Nombre: ' . $_SESSION['nombre'] . '
        <br />Usuario: ' . $_SESSION['usuario'] . '
        <br />Correo: ' . $_SESSION['correo'] . '
        <br />Nivel: ' . $_SESSION['nivel'] . '';
            break;
        case "test1":
            echo "<br />Probando TEST1, todos los usuarios todos los niveles.";
            break;
        case "test2":
            if($_SESSION['nivel'] >= 2){
                echo "<br />Probando TEST2, nivel 2 y 3.";
            }
            break;
        case "test3":
            if($_SESSION['nivel'] == 3){
                echo "<br />Probando TEST3, solo nivel 3.";
            }
            break;
    }

}
function level1()
{
    echo '
    Bienvenido ' . $_SESSION['nombre'] . '<br />
    <span><a href="' . $_SERVER['PHP_SELF'] .
        '">Inicio</a></span> - <span><a href="' . $_SERVER['PHP_SELF'] .
        '?foo=myinfo">Mi información</a></span> - <span><a href="' . $_SERVER['PHP_SELF'] .
        '?foo=test1">Test 1</a></span> - <span><a href="'.$_SERVER['PHP_SELF'].'?foo=logout">Salir</a></span>';

}

function level2()
{
    echo '
    Bienvenido ' . $_SESSION['nombre'] . '<br />
    <span><a href="' . $_SERVER['PHP_SELF'] .
        '">Inicio</a></span> - <span><a href="' . $_SERVER['PHP_SELF'] .
        '?foo=myinfo">Mi información</a></span> - <span><a href="' . $_SERVER['PHP_SELF'] .
        '?foo=test2">Test 2</a></span> - <span><a href="'.$_SERVER['PHP_SELF'].'?foo=logout">Salir</a></span>';
}

function level3()
{
    echo '
    Bienvenido ' . $_SESSION['nombre'] . '<br />
    <span><a href="' . $_SERVER['PHP_SELF'] .
        '">Inicio</a></span> - <span><a href="' . $_SERVER['PHP_SELF'] .
        '?foo=myinfo">Mi información</a></span> - <span><a href="' . $_SERVER['PHP_SELF'] .
        '?foo=test3">Test 3</a></span> - <span><a href="'.$_SERVER['PHP_SELF'].'?foo=logout">Salir</a></span>';
}

?>

No hay comentarios.: