En uno de ellos (la columna izquierda) cargo un menú con las diferentes secciones de la página, y bajo estas, un formulario de login que apunta a la página log.php.
La página de log.php crea una sesión y se redirige al mismo menú. El formulario de login, así mismo, debería desaparecer de dicho frame al estar la sesión abierta...
El formulario de login del menú tiene el siguiente código:
Código PHP:
<?php
if (isset ($_GET["pass"]) && $_GET["pass"] == 'y')
session_start();
$dbh = mysql_connect ("serv","usr","pass") or die ('I cannot connect to database because: ' . mysql_error ());
mysql_select_db ("db",$dbh);
?>
<!-- Secciones del menú -->
<?php
if (isset ($_SESSION["login"]) && $_SESSION["login"] == true)
{
$d = "SELECT nombre FROM colegiados WHERE id_colegiado='" . $_SESSION["id_colegiado"] . "'";
$e = mysql_query ($d,$dbh) or die ('I cannot execute the query because: ' . mysql_error ());
$f = mysql_fetch_array ($e);
?>
<script language="javascript">
function verifica() {
if ((document.formulario.user.value == "") || (document.formulario.user.value== null)) {
alert("Escriba un usuario");
document.formulario.user.focus();
return false;
}
else {
if ((document.formulario.pass.value == "") || (document.formulario.pass.value== null)) {
alert("Escriba una contraseña");
document.formulario.pass.focus();
return false;
}
else
document.formulario.submit();
}
}
</script>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td height="5" colspan="2"></td></tr>
<tr>
<TD align="center">
Sesión de<br><b><?php echo $f["nombre"];?></b><br>
<a href="log.php?logout=si" target="_top"><b>Cerrar sesión</b></a>
</TD>
<td width="50"></td>
</tr>
</table>
<?php }else{?>
<table align="center" width="130" cellpadding="0" cellspacing="0" border="1" bordercolor="#669900">
<TR valign="top">
<TD align="center" width="130" valign="top">
<?php if (isset ($_GET["error"])){?>
<?php echo $_GET["error"];?><br>
<?php }?>
<form name="formulario" method="post" action="log.php">
<input type="hidden" name="login" value="si">
<u>Acceso Colegiados</u><br>
<b>Usuario:</b><br>
<input type="text" name="user" size="14"><br>
<b>Contraseña:</b><br>
<input type="password" name="pass" size="10"><br>
<a onClick="return verifica();">Entrar</a>
</form>
</TD>
</TR>
</table>
<?php }?>
Código PHP:
if ($_POST["login"] == 'si' || $_GET["login"] == 'si')
{
$dbh = mysql_connect ("sitio","usr","pass") or die ('I cannot connect to database because: ' . mysql_error ());
mysql_select_db ("bd",$dbh);
$a = "SELECT id_colegiado FROM colegiados WHERE usuario='" . $_POST["user"] . "' AND contrasena='" . $_POST["pass"] . "'";
$b = mysql_query ($a,$dbh) or die ('I cannot execute the query because: ' . mysql_error ());
$c = mysql_num_rows ($b);
$d = mysql_fetch_array ($b);
if ($c > 0)
{
session_start ();
$_SESSION["login"] = true;
$_SESSION["id_colegiado"] = $d["id_colegiado"];
//Hago la redirección con un meta en lugar de con un header
//Para poder redireccionar la página en el mismo frame que el menú
echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://sitio/menu.php?pass=y\";TARGET=topFrame\">";
}
else
{
session_start ();
$_SESSION = array();
session_destroy();
echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.sitio.com/\";TARGET=_top\">";
}
}
if (isset ($_GET["logout"]) && $_GET["logout"] == 'si')
{
session_start ();
$_SESSION = array();
session_destroy();
header ("Location: http://www.sitio.com/");
}
A mí particularmente me da lo mismo, pero supongo que la mayoría de usuarios usen el explorer y el script este me está trayendo por la calle de la amargura (no veo el posible fallo por ningún lado)...
¿Alguien tiene alguna idea?
Muchísimas gracias por descontado...