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)>1 && strlen($term_dom)<5 && (!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ó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.