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.:
Publicar un comentario