Ok, aqui esta el codigo:
pagina index.php
Código PHP:
<?
session_start();
require_once("scripts/conectar.php");
?>
<html>
<form method="post" action="index.php">
<table cellpadding="2" cellspacing="2" width="80%" class="tabla">
<tr>
<td class="celda">Usuario:</td>
<td class="celda"><input type="text" size="20" maxlength="255" name="login" /></td>
</tr>
<tr>
<td class="celda">Clave:</td>
<td class="celda"><input type="password" size="20" maxlength="255" name="clave" /></td>
</tr>
<tr>
<td class="celda" colspan="2"><input type="submit" value="Ingresar" /></td>
</tr>
</table>
</form>
<? if(isset($_POST["login"])) // Si existe el login, es decir si ya presionamos el botón del formulario
{
require_once("scripts/validar.php"); // Tomamos el archivo valida.php y lo ejecutamos
}
if(isset($_SESSION["nivel"]))
{
//Si existe el nivel, quiere decir que la consulta fue éxitosa y obtuvo resultados
ob_start(); // Esto evita el error de envío de cabeceras clásico
header ("Location: pag.php"); // Redireccionamos
ob_end_flush(); //Ya sabemos que hace esto último ...
}
else
{
?>
</html>
<?
}
?>
este en una pagina pag.php
Código PHP:
<? session_start(); // Iniciamos sesión
// Verificamos que existan el login y el nivel en la sesión
if(isset($_SESSION["nivel"]) && isset($_SESSION["login"]))
{
echo "Zona Exclusiva para socios...";
echo "<a href=\"salir.php\"> Cerrar Sesion</a>"; // Ahora lo redireccionamos hacia la página que queramos
/* Aquí va lo que queremos que vea el usuario que se ha autenticado
sobra decir que si estamos manejando niveles, pues aquí se debería hacer la validación
según los niveles que se haya establecido, un switch podría servir de mucha utilidad si hay
diversidad de niveles, por ejemplo */
}
else // Si el usuario no es válido, cerro la sesión, etc...
{
ob_start(); // Ya sabemos que hace esto
header ("Location: index.php"); // Lo mandamos al index.php de regreso
ob_end_flush(); // Ya sabemos que hace esto
};
?>
este codigo en una pagina salir.php
Código PHP:
<?php
session_start(); // Iniciamos sesión
unset($_SESSION['nivel']); //Destruimos nivel
unset($_SESSION['login']); // Destruimos login
ob_start(); // Esto evita el error de envío de cabeceras clásico
header ("Location: index.php"); // Redireccionamos al index.php
ob_end_flush(); //Ya sabemos que hace esto último ...
?>
este codigo en una pagina validar.php
Código PHP:
<?
session_start(); // Iniciamos la sesión
$enlace = Conectar(); // Nos conectamos a la base de datos
/* Está variable, la usaremos para revisar si los datos está correctos, es decir, si nunca cambia de valor, quiere decir que no hubo ningún error, no es necesario hacerlo así, pero yo he encontrado que de está manera me evito muchos inconvenientes */
$valida = true;
/* reviso si el campo login se encuentra vacío, se puede probar con la función empty($variable) */
if(strlen(trim($_POST["login"]))==0)
{
$valida = false; //Obviamente si lo está cambio mi variable
echo "<p><strong>No deje vacío el login, por favor</strong></p>";
}
// Ahora hago lo mismo con la clave
if(strlen(trim($_POST["clave"]))==0)
{
$valida = false;
echo "<p><strong>No deje vacía la clave, por favor</strong></p>";
}
if($valida) //si $valida nunca cambio, quiere decir que no quedo ningún campo vacío
{
/* genero el sql necesario para buscar el usuario, la función md5, utiliza el algoritmo <strong>md5</strong> para encriptar las contraseñas, es una práctica obligatoria para almacenar contraseñas el usar un método de encriptación */
$sqlVU = "select login, clave, nivel from ws_usuarios where login = '$_POST[login]' and clave = '" . md5($_POST["clave"]) . "'";
$resVU = mysql_query($sqlVU, $enlace); //ejecuto la consulta y la guardo en un resource
$numVU = mysql_num_rows($resVU); // Verifico si hubo resultados
if($numVU==0) // si no hubo resultados, mando un error
{
echo "<p>Los datos proporcionados no son correctos</p>";
}
else // Por el contrario si hubo resultados
{
// capturo los resultados en un array unidimensional
$rowVU = mysql_fetch_row($resVU);
// Y creo las variables de sesión login y nivel que me serviran para el resto de mis aplicaciones
$_SESSION["login"] = $rowVU[0];
$_SESSION["nivel"] = $rowVU[2];
}
}
?>
Espero que ahora este mas claro....