Session

Hola experto.
Tengo el siguiente problema. Cargo un usuario y si es jose me carga una pagin a diciendo usuario registrado pero si no es jose es otro usuario me carga una página diciendo usuario incorrecto.
Tengo el siguiente error
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\19nov09.php:11) in C:\AppServ\www\19nov09.php on line 21
aca esta la codificacion de las 3 paginas : 19nov09.php formulario, 19nov09a.php usuario registrado, y 19nov09b.php
-----------19nov09.php-----------
<?php
session_start(); // inicio sesion
if (isset($_POST["texto"])) {  //verifico que tenga un valor en la variable de formulario $_POST["texto"]
 //$_SESSION["opciones"][] = $_POST["texto"];   // en caso afirmativo guardo en la variable de sesion el vector "opciones" con el valor que me mandaron en el formulario
$_SESSION[] = $_POST["texto"];
}
?>
<form action="19nov09.php" method="post">
<input type="text" name="texto"><br>
<input type="submit">
<?php
//print_r($_SESSION);
if (texto=="jose")
{
header("Location: 19nov09a.php");
}
else
{
header("Location: 19nov09b.php");
}
?>
-----19nov09a.php----------
<?php
session_start(); // inicio sesion
echo "hola usuario resgistrado";
?>
-----19nov09b.php----------
<?php
echo "hola usuario NO resgistrado";
?>

1 Respuesta

Respuesta
1
Tienes que poner esto:
if (texto=="jose")
{
header("Location: 19nov09a.php");
}
else
{
header("Location: 19nov09b.php");
}
Antes de escribir cualqeuir código html, de otra forma, no puedes modificar los headers ya enviados.
QUE tal Experto probé y cuando ingreso jose o cualquier otro usuario me dice usuario no registrado acá esta el código
-----------20nov09aa.php--------
<?php
session_start(); // inicio sesion
if (isset($_POST["texto"])) {  //verifico que tenga un valor en la variable de formulario $_POST["texto"]
 //$_SESSION["texto"] = $_POST["texto"];   // en caso afirmativo guardo en la variable de sesion el vector "opciones" con el valor que me mandaron en el formulario
$_SESSION[texto] = $_POST["texto"];
if (texto=="jose")
{
header("Location: 20nov09a.php");
}
else
{
header("Location: 20nov09b.php");
}
}
?>
<form action="20nov09aa.php" method="post">
<input type="text" name="texto"><br>
<input type="submit">
-----20nov09b.php-----
<?php
echo "hola usuario NO resgistrado";
?>
-----20nov09a.php-----
<?php
echo "hola usuario registrado";
?>
Reemplza
if (isset($_POST["texto"])) {  //verifico que tenga un valor en la variable de formulario $_POST["texto"]
 //$_SESSION["texto"] = $_POST["texto"];   // en caso afirmativo guardo en la variable de sesion el vector "opciones" con el valor que me mandaron en el formulario
$_SESSION[texto] = $_POST["texto"];
if (texto=="jose")
{
header("Location: 20nov09a.php");
}
else
{
header("Location: 20nov09b.php");
}
}
por
if (isset($_POST["texto"])) {  
$_SESSION['texto'] = $_POST["texto"];
if ($_SESSION['texto']=="jose"){
header("Location: 20nov09a.php");
}else{
header("Location: 20nov09b.php");
}
}
Experto solo una duda me quedo. El código enviado por Uds anda perfecto, pero me quedo la duda de lo que es session es decir la página principal me logeo y escribo jose tendría que caducar la página o expirar si una vez que se cargo la página con el usuario registrado presiono el botón atrás <-- de la barra estandar del navegador para ir devuelta al logeo o volver a escribir el url para volverme a logear. No se si me comprende.
Ejemplo me logeo con el usuario jose en la página principal (20nov09aa.php)y se me abre una página de usuario registrado ej 20nov09a.php, ¿si yo vuelvo a la página anterior es decir 20nov09aa.php tendría que aparecer la página expirada o caducada o no? Y en este caso no aparece, ¿es cómo que se pierda la session o no? Estoy dudando mucho en eso.
La session dura, lo que dure el navegador abierto, o lo que setees que es el tiempo de session. Lo que ocurra primero, por lo que si abres un navegador, te logueas con jose, si abres otro, seguirá siendo josé
Para borrar la session hay una función llamada session_destroy(), que lo que hace es destruir la session.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas