Jejeje excelente!!! Tus consejos observaciones me sirven de mucho, voy a averiguar todo eso para poder implementarlo... Bueno aqui está el código:
puerta.php Código PHP:
<?php
session_start();
error_reporting(E_ALL);
$_SESSION["inicio"]="desde_la_puerta";
?>
<FORM action="comprueba.php" method="POST">
<table border="0" cellspacing="0" cellpadding="0" width="300" align="center">
<TR>
<TD>Usuario</TD>
<TD>: <input type="text" name="usuario"></TD>
</TR>
<TR>
<TD>Contraseña</TD>
<TD>: <input type="password" name="contrasena"></TD>
</TR>
<TR>
<TD colspan="2"><input type="submit" value="Enviar"></TD>
</TR>
</table>
</FORM>
comprueba.php Código PHP:
<?php
session_start();
error_reporting(E_ALL);
if($_SESSION["inicio"]=="desde_la_puerta"){
$usuario = $_POST["usuario"];
$contra = $_POST["contrasena"];
mysql_connect("localhost","root","41234160");
mysql_select_db("prueba");
$consulta = mysql_query("
SELECT *
FROM usuarios WHERE usuario='$usuario' and contra='$contra'
")or die("Error");
if(mysql_num_rows($consulta)>0){
$datos = mysql_fetch_assoc($consulta);
$_SESSION["usuario"]["nivel"]=$datos["nivel"];
$_SESSION["usuario"]["usuario"]=$datos["usuario"];
$_SESSION["usuario"]["contrasena"]=$datos["contra"];
$_SESSION["usuario"]["logeado"]="si";
header("location: repartir.php");
exit;
}else{
header("location: puerta.php?error=si");
exit;
}
}else{
header("location: puerta.php?error=si");
exit;
}
?>
repartir.php Código PHP:
<?php
session_start();
error_reporting(E_ALL);
if(isset($_SESSION["usuario"]["logeado"]) && isset($_SESSION["inicio"]) && $_SESSION["inicio"]=="desde_la_puerta"){
switch ($_SESSION["usuario"]["nivel"]){
case 0:
header("location: intranet/admin.php");
exit;
case 1:
header("location: intranet/profesor.php");
exit;
}
}else{
header("location: puerta.php?error=no_correcto");
exit;
}
?>
admin.php (debe estar dentro de una subcarpeta llamada "intranet")
Código PHP:
<?php
session_start();
error_reporting(E_ALL);
$nivel="0";
//por si no existen las variables de sesión.
if(!isset($_SESSION["inicio"]) || !isset($_SESSION["usuario"]["nivel"]) || !isset($_SESSION["usuario"]["logeado"])){
header("location: ../puerta.php?error=acceso_equivocado");
exit;
}
//por si se intenta acceder desde otro lugar que no sea la puerta de nuestro sistema.
if($_SESSION["inicio"]!="desde_la_puerta" || $_SESSION["usuario"]["nivel"]!=$nivel || $_SESSION["usuario"]["logeado"]!="si"){
header("location: ../puerta.php?error=error_de_acceso");
exit;
}
echo "Bienvenido a la seccion del admin";
?>
profesor.php (guardar igual que admin)
Código PHP:
<?php
session_start();
error_reporting(E_ALL);
$nivel="1";
if(!isset($_SESSION["inicio"]) || !isset($_SESSION["usuario"]["nivel"]) || !isset($_SESSION["usuario"]["logeado"])){
header("location: ../puerta.php?error=acceso_equivocado");
exit;
}
if($_SESSION["inicio"]!="desde_la_puerta" || $_SESSION["usuario"]["nivel"]!=$nivel || $_SESSION["usuario"]["logeado"]!="si"){
header("location: ../puerta.php?error=logearse_de_nuevo");
exit;
}
echo "Bienvenido a la seccion del profesor";
?>
destruir.php (no hay ningún enlace hacia éste archivo, ingreso directamente desde la barra de direcciones para poder destruir las sesiones)
Código PHP:
<?php
error_reporting(E_ALL);
session_start();
session_destroy();
header("location: puerta.php");
exit;
?>
Podrías decirme (en forma de ayuda) cómo harías tu para hacerlo mas seguro? osea, como protegerlo contra XSS, SQL Inyection? Bueno debo confesar que lo hice en casi una hora de trabajo, claro que no justifica las vulnerabilidades que no sé corregir (por ahora

)
Cita: Yo digo que demasiado simple
Estoy de acuerdo contigo, echen todo lo malo que vean, mientras mas hayan, mejor.. un abrazo y muchas gracias por sus sugerencias.