Hola a todos.
Tengo mis paginas programadas en forma modular segun el tutorial -->
http://www.webtaller.com/construccio..._modulares.php
Y copie parte del Autentificator de Cluster para hacer la seguridad de mi pagina. Pero lo malo es que cuando entro, no se conectaa la base de datos (eso si la seguridad es perfecta), pero si "malogro" la sesion poniendole algo antes, ahi si entra a la base de datos (claro pero ya no sirve porque no hay seguridad!)
Aqui les dejo mi código (el código de mi index, es igualito al del tutorial):
verifica.php
Código PHP:
<?php
// Nombre de la session (puede dejar este mismo)
$usuarios_sesion="autentificator";
$url = explode("?",$_SERVER['HTTP_REFERER']);
$pag_referida=$url[0];
$redir=$pag_referida;
// chequear si se llama directo al script.
if ($_SERVER['HTTP_REFERER'] == ""){
die ("Error cod.:1 - Acceso incorrecto!");
exit;
}
// Chequeamos si se está autentificandose un usuario por medio del formulario
if (isset($_POST['user']) && isset($_POST['pass'])) {
// Conexión base de datos.
putenv("ORACLE_SID=agri");
putenv("ORACLE_HOME=/opt/oracle/product/9.2.0");
// si no se puede conectar a la BD salimos del scrip con error 0 y
// redireccionamos a la pagina de error.
$conectar=@ora_plogon($_POST['user']."@bdtest",$_POST['pass']);// or die(header ("Location: $redir?error_login=0"));
echo "<p>Aqui esta la variable de coneccion:".$conectar." viste?";
//vemos si el usuario y contraseña es váildo
if ($conectar){
$op=ora_open($conectar);
//usuario y contraseña válidos
//defino una sesion y guardo datos
// le damos un mobre a la sesion.
session_name($usuarios_sesion);
// incia sessiones
session_start();
$_SESSION["autentificado"]="SI";
session_cache_limiter('nocache,private');
// Paranoia: decimos al navegador que no "cachee" esta página.
header ("Location: ?mod=encuesta_cultivos");
}else {
//si no existe le mando otra vez a la portada
header ("Location: index.php?error_login=0");
// header("Location: index.php?errorusuario=si");
}
// En este punto, el usuario ya esta validado.
// Grabamos los datos del usuario en una sesion.
// Asignamos variables de sesión con datos del Usuario para el uso en el
// resto de páginas autentificadas.
} else {
// -------- Chequear sesión existe -------
// usamos la sesion de nombre definido.
session_name($usuarios_sesion);
// Iniciamos el uso de sesiones
session_start();
// Chequeamos si estan creadas las variables de sesión de identificación del usuario,
// El caso mas comun es el de una vez "matado" la sesion se intenta volver hacia atras
// con el navegador.
if (!isset($_SESSION["autentificado"])){
// Borramos la sesion creada por el inicio de session anterior
session_destroy();
die ("Error cod.: 2 - Acceso incorrecto!");
exit;
}
}
?>
formulario.php
Código PHP:
<Form action="?mod=pagina1" method="post">
<table width="100%" border="1" cellpadding="0" align="center" cellspacing="0" bordercolor="E5E5D1" >
<!--DWLayoutTable-->
<tr bgColor=#F2F4E9>
<td width="399" height="22" align="center" valign="top">
<P><FONT face=verdana size=1>Usuario:
<input class=caption type="text" name="user">
Password:
<input class=caption type="password" name="pass">
layout_simple.php
Código PHP:
<?php require('modulos/verifica.php');?>
<?php include('includes/navcontainer.htm'); ?>
<?
if (file_exists( $path_modulo )) include( $path_modulo );
else die('Error al cargar el módulo <b>'.$modulo.'</b>. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
?>
<?php //include('includes/footer.html'); ?>
</body>
</html>
conf.php
Código PHP:
define('MODULO_DEFECTO', 'home');
define('LAYOUT_DEFECTO', 'layout_simple.php');
define('LAYOUT_VALIDA', 'layout_valida.php');
define('LAYOUT_INICIO','layout_ini.php');
define('LAYOUT_FIN','layout_end.php');
define('MODULO_PATH', realpath('./modulos/'));
define('LAYOUT_PATH', realpath('./layouts/'));
$conf['home'] = array(
'archivo' => 'formulario.php',
'layout' => LAYOUT_INICIO );
$conf['valida'] = array(
'archivo' => 'verifica.php',
'layout' => LAYOUT_VALIDA );
$conf['pagina1'] = array(
'archivo' => 'pagina1.php',
layout_ini.php
Código PHP:
<?php
// No almacenar en el cache del navegador esta página.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Expira en fecha pasada
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // Siempre página modificada
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
/* Se establecen las variables mas importantes de SESION para que al inicio
de cada página ellas retornen a un valor vacío*/
?>
<?php include('includes/navcontainer_inicial.htm'); ?>
<?
if (file_exists( $path_modulo )) include( $path_modulo );
else die('Error al cargar el módulo <b>'.$modulo.'</b>. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
?>
<?php //include('includes/footer.html'); ?>
</body>
</html>
layout_valida.php
Código PHP:
<?php //include('includes/navcontainer_final.htm'); ?>
<?
if (file_exists( $path_modulo )) include( $path_modulo );
else die('Error al cargar el módulo <b>'.$modulo.'</b>. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
?>
<?php //include('includes/footer.html'); ?>
</body>
</html>
Que estoy haciendo mal???
saludos a todos y gracias de antemano,