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...
 
