Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/11/2004, 15:40
kirof
 
Fecha de Ingreso: noviembre-2004
Mensajes: 47
Antigüedad: 19 años, 5 meses
Puntos: 0
Problemas con las sesiones (más)

Hola. He creado un script donde el usuario mete los datos en un formulario, se comprueba q existe y a partir d ahí:
Si existe --> creo 2 vbles d sesion con los valores del login y del password y redirecciono (éste es mi problema) la pág hacia el menú d opciones.
Si no existe --> aviso d q no existe tal usuario y lo mando de nuevo al inicio.
Probé a redireccionar automáticamente con
Código PHP:
header("menuAlumno.php"); 
pero me da l siguiente ERROR:

Código HTML:
Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\index_usuario.php:7) in c:\apache\htdocs\index_usuario.php on line 46
He buscado acerca de este problema pero no saco mucho en claro.Por eso si alguien sabe cómo solucionar esto, q si me puede echar una mano.

Adjunto el código d 2 scripts con los q trabajo:

Nota:¿Sería correcta la forma de comenzar las sesiones y de terminarlas?; es decir, si las etiquetas están bien situadas y si son las correctas.

"index_usuario.php"

Código PHP:
<?session_start();?>
<HTML>
<HEAD>
<TITLE>Bienvenido a CorreoLab</TITLE>
</HEAD>
<BODY bgcolor="#cccccc">
<?

function formulario($login,$password){
?>
<div align="center"> </div>
   <form name="formlogin" method="post" action="index_usuario.php">
    <div align="center">
      <table>
      <tr><td>Login: </td><td><input name="login" type="text" maxlength="30"></td></tr>
      <tr><td>Password: </td><td><input type="password" name="password"></td></tr>
      <tr><td><input type="submit" name="submit" value="aceptar"></td></tr>
      </table>
    </div>
  </form>
</div>
<BR><div align="center">Si eres un usuario nuevo, <a href="alumno_peticion.php">REGISTRATE</a></div>

<?
//fin formulario


function comprobar($login,$password){
include(
"conexionBD.php");
 
$ok=0;
 
$tipo="alu";
 
$consulta="select login,pass,tipo from usuarios;";
 
$resul=mysql_query($consulta);
 while (
$row mysql_fetch_array($resul)){
   if ((
$login==$row[0])&&($password==$row[1])&&($tipo==$row[2])){
    
$ok=1;
    break;
   }
  }

 if (
$ok){    //SI EL USUARIO EXISTE
  
$login=$row[0];
  
$password=$row[1];
  
$_SESSION["login"]=$login;
  
$_SESSION["password"]=$password;
  
header("menuAlumno.php");

/*  echo "<BR>",'<div align="center"><font size=3 color ="#000080"><b>HOLA '.$_SESSION["login"].'. BIENVENIDO A LABMAIL</b></font></div>';
  echo "<BR>",'<div align="center"><font size=3 color ="#000080"><a href="menuAlumno.php">CONTINUAR</a></font></div>';
  echo '<div align="center">';     */
 
}
 else { 
// SI EL USUARIO NO EXISTE
  
session_destroy();
  echo 
"<BR>",'<div align="center">Ha ocurrido un error.El nombre de usuario o la contraseña son incorrectos</div>';
  echo 
"<BR>",'<div align="center"><a href="index_usuario.php">Volver</a></div>';
 }

//fin comprobar

if (!isset($submit)){
 
formulario($login,$password);}
else {
 
comprobar($login,$password);}
?>

</BODY>
</HTML>

"menuAlumno.php"

Código PHP:
<?session_start();?>
<?
if(!($_SESSION["login"])) {
   
header("indice.htm");

//  echo '<div align="center"><BR><BR><b>ERROR: USUARIO NO VALIDO</b></a></div>';
//  echo '<div align="center"><a href="indice.htm"><BR><BR>SALIR</a></div>';
 
}
 else{
?>  //else sesion
<HTML>
<HEAD>
<TITLE>Modificar</TITLE>
</HEAD>
<BODY bgcolor="#cccccc">
<?include("conexionBD.php");
 
$ok=0;
 
$tipo="alu";
 
$consulta="select login,pass,tipo from usuarios;";
 
$resul=mysql_query($consulta);
 while (
$row mysql_fetch_array($resul)){
   if ((
$login==$row[0])&&($password==$row[1])&&($tipo==$row[2])){
    
$ok=1;
    break;
   }
  }
if (
$ok){ //PRINCIPAL
 
$login=$row[0];

// echo "<BR>",'<div align="center"><font size=3 color ="#000080"><b>HOLA '.$row[0].'. BIENVENIDO A LABMAIL</b></font></div>';
 
echo '<div align="center">';

 
//Conexion con la base
 
include("conexionBD.php");

//DECLARACIÓN DE FUNCIONES
function recuperar(&$nombre,&$apellidos,&$dni,&$email,$login,&$password){
 include(
"conexionBD.php");
 
$consulta="select * from usuarios where login='$login';";
 
$resul=mysql_query($consulta);
 while (
$row mysql_fetch_array($resul)){
  
$nombre=$row[0];
  
$apellidos=$row[1];
  
$dni=$row[2];
  
$email=$row[3];
  
//$login=$row[4];
  
$password=$row[5];
 }
}  
//FIN RECUPERAR



function comprobar_email($email){
    
$mail_correcto 0;
    
//compruebo unas cosas primeras
    
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
       if ((!
strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
          
//miro si tiene caracter .
          
if (substr_count($email,".")>= 1){
             
//obtengo la terminacion del dominio
             
$term_dom substr(strrchr ($email'.'),1);
             
//compruebo que la terminación del dominio sea correcta
             
if (strlen($term_dom)>&& strlen($term_dom)<&& (!strstr($term_dom,"@")) ){
                
//compruebo que lo de antes del dominio sea correcto
                
$antes_dom substr($email,0,strlen($email) - strlen($term_dom) - 1);
                
$caracter_ult substr($antes_dom,strlen($antes_dom)-1,1);
                if (
$caracter_ult != "@" && $caracter_ult != "."){
                   
$mail_correcto 1;
                }
             }
          }
       }
    }
    if (
$mail_correcto)
       return 
1;
    else
       return 
0;
}  
//FIN COMPROBAR_EMAIL



function formulario($nombre,$apellidos,$dni,$dni2,$email,$login,$password,$passconf) {
?>
<CENTER>
<FORM ACTION="alumno_modificar.php" method=post>
<TABLE BORDER=0 CELLSPACING=5 CELLPADDING=2>
<TR>  <TD>Nombre: </TD>
<TD><INPUT TYPE="TEXT" NAME="nombre" VALUE="<? echo $nombre ?>"></TD></TR>
<TR>  <TD>Apellidos: </TD>
 <TD><INPUT TYPE=TEXT SIZE=30 NAME="apellidos" VALUE="<? echo $apellidos ?>"></TD></TR>
<TR>  <TD>DNI: </TD>
 <TD><INPUT TYPE=TEXT SIZE=30 NAME="dni2" VALUE="<? echo $dni2 ?>"></TD></TR>
<TR>  <TD>e-mail: </TD>
 <TD><INPUT TYPE=TEXT SIZE=40 NAME="email" VALUE="<? echo $email ?>"></TD>
</TR>
<TR>  <TD>LOGIN: </TD>
 <TD><INPUT TYPE=TEXT SIZE=20 NAME="login" VALUE="<? echo $login ?>"></TD>
</TR>
<TR>  <TD>Password: </TD>
 <TD><INPUT TYPE=PASSWORD SIZE=20 NAME="password" VALUE="<? echo $password ?>"></TD></TR>
<TR>  <TD>Confirma Password: </TD>
 <TD><INPUT TYPE=PASSWORD SIZE=20 NAME="passconf" VALUE="<? echo $passconf ?>"></TD></TR>

<INPUT TYPE="hidden" SIZE=20 NAME="dni" VALUE="<? echo $dni ?>">

</TABLE>

 <table>
<tr>
  <td><INPUT TYPE="submit" name="aceptar_form" value="Modificar datos"></td>
</tr>
<tr>
  <td> <input type="button" name="borrar" value="Desactivar de listas" onClick="this.form.action='desactivar_listas.php';this.form.submit()"></td>
</tr>
<tr>
  <td> <input type="button" name="fuera" value="Cerrar sesi&oacute;n <?echo $login?>" onClick="this.form.action='cerrar_sesion_isset.php';this.form.submit()"></td>
</tr>
</table>


</FORM>

</CENTER>
<?}//FIN FORMULARIO

function confirma($nombre,$apellidos,$dni,$dni2,$email,$login,$password){?>
 <BR><font size=4>Verifique si los datos son correctos:</font>
 <hr width="40">
 <table>
 <tr><td>
  <?
   
echo "<b>Nombre: </b>",$nombre,"<BR><b>Apellidos: </b>",$apellidos,"<BR><b>DNI: </b>",$dni2,"<BR><b>e-mail: </b>",$email,"<BR><b>Login: </b>",$login;
  
?>
 </td></tr>
 </table>
 <hr width="40">
<table border=0>
 <tr><td>
 <a href="modificar_isset.php?nombre=<?php echo $nombre?>&apellidos=<?php echo $apellidos?>&dni=<?php echo $dni?>&dni2=<?php echo $dni2?>&email=<?php echo $email?>&login=<?php echo $login?>&password=<?php echo $password?>"><b><font size=3>ACTUALIZAR DATOS</font></b></a>
 </td><td><a href="menuAlumno.php"><b><font size=3>CANCELAR</font></b></a>
 </td></tr>
 </table>
 <BR><BR>
<?
//FIN CONFIRMA




function chequear($nombre,$apellidos,$dni,$dni2,$email,$login,$password,$passconf){
 
$comp_email comprobar_email($email);
 if(!
$nombre||!$apellidos||!$dni2||!$email||!$login||!$password||!$passconf||!$comp_email||($password!=$passconf)){
  echo(
"<H3>Se ha producido un error:<H3>");
 if (!
$nombre){
  echo (
"Tiene que introducir el <b>Nombre</b>.<br>");}
 if (!
$apellidos){
  echo (
"Tiene que introducir los <b>Apellidos</b>.<br>");}
 if (!
$dni2){
  echo (
"Tiene que introducir el <b>DNI</b>.<br>");}
 if (!
$email){
  echo (
"Tiene que introducir el <b>e-mail</b>.<br>");}
 if (!
$login){
  echo (
"Tiene que introducir el <b>login</b>.<br>");}
 if (!
$password){
  echo (
"Tiene que Introducir el <b>Password</b>.<br>");}
 if(!
$passconf){
  echo (
"Tiene que confirmar el <b>Password</b>.<br>");}
 if(
$password!=$passconf){
   echo (
"El password no coincide. Por favor, introdúzcalo de nuevo.<br>");}
 if (!
$comp_email){
  echo (
"El formato de correo no es valido. Por favor, introdúzcalo de nuevo");}
 
formulario($nombre,$apellidos,$dni,$dni2,$email,$login,$password,$passconf);
}
 else {
  
confirma($nombre,$apellidos,$dni,$dni2,$email,$login,$password);
  }
// FIN CHEQUEAR




//CUERPO DEL PROGRAMA
 
$nom="";
 
$ape="";
 
$mail="";
 
$dni="";
 
$passw="";

 if(!isset(
$aceptar_form)){
   
recuperar($nom,$ape,$dni,$mail,$login,$passw);
   
formulario($nom,$ape,$dni,$dni,$mail,$login,$passw,$passw);
  }
 else{
   
chequear($nombre,$apellidos,$dni,$dni2,$email,$login,$password,$passconf);
    }
/*?>
 <BR><div align="center"><a href="cerrar_sesion_isset.php">Cerrar sesión</a></div>
<?*/
//FIN PRINCIPAL
else{
    
session_destroy();
    echo 
"<BR>",'<div align="center">Ha ocurrido un error.<br>Escriba correctamente su nombre de usuario y contraseña</div>';
    echo 
"<BR>",'<div align="center"><a href="index_usuario.php">Volver</a></div>';
   }

//fin else sesion
?></BODY></HTML>


Muchas gracias de antemano.