Foros del Web » Programando para Internet » PHP »

De nuevo error con sesiones

Estas en el tema de De nuevo error con sesiones en el foro de PHP en Foros del Web. Tengo un archivo "login.php" con el siguiente código: <?php session_start(); if(isset($SESSION)){ header("location:user.php"); /* Si ha iniciado la sesion, vamos a user.php */ } else { ...
  #1 (permalink)  
Antiguo 27/06/2010, 14:33
 
Fecha de Ingreso: julio-2008
Mensajes: 62
Antigüedad: 15 años, 9 meses
Puntos: 0
Tengo un archivo "login.php" con el siguiente código:

<?php session_start();
if(isset($SESSION)){
header("location:user.php"); /* Si ha iniciado la sesion, vamos a user.php */
} else {
/* Cerramos la parte de codigo PHP porque vamos a escribir bastante HTML y nos será mas cómodo así que metiendo echo's */
?>
</p>
<h1>Identificación</h1>
<form class="miform" action="comprueba.php" method="post"> Usuario:
<input name="usuario" type="text" />Password:
<input name="password" type="password" /> <input class="boton" type="submit" value="Enviar" /> </form>
<?php
}
?>

El archivo comprueba.php:

<?php session_start();
include("conexion.php");
$login = $_POST['usuario'];
$pass = $_POST['password'];
$query="SELECT * FROM encargado_cuestionario WHERE usuario='$login'";
$result=mysql_query($query,$link);
if(mysql_num_rows($result)){ // nos devuelve 1 si encontro el usuario y el password
$array=mysql_fetch_array($result);
$_SESSION["login"]=$array["usuario"];
$_SESSION["nombre"]=$array["nombre"];
$_SESSION["ape_1"]=$array["ape_1"];
$_SESSION["ape_2"]=$array["ape_2"];
$_SESSION["cargo"]=$array["cargo"];
header("Location:user.php");
} else {
echo "Login o Password Incorrectos";
}
?>

Pues cuando introduzco los datos en login.php, y pulso el botón, aparece el error: "no se puede mostrar la página". ¿Qué hago mal?

He probado a refrescar la página, y me saca el mensaje de:

"Login o password incorrectos"


Última edición por GatorV; 29/06/2010 a las 13:42
  #2 (permalink)  
Antiguo 27/06/2010, 14:57
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: De nuevo error con sesiones

En el archivo login.php creo que en $SESSION te has comido el _ $_SESSION
  #3 (permalink)  
Antiguo 27/06/2010, 15:06
 
Fecha de Ingreso: julio-2008
Mensajes: 62
Antigüedad: 15 años, 9 meses
Puntos: 0
Perdón, ya se lo que pasó, no encontraba una sola fila, sino varias....y por eso nunca entraba en la condición. Había estado haciendo pruebas y tenía muchas filas con el mismo usuario y password.

Cita:
Iniciado por all-ill Ver Mensaje
En el archivo login.php creo que en $SESSION te has comido el _ $_SESSION
Pues si, muchas gracias...es que a estas horas ya no veo.

De todas formas el header no me funciona

Última edición por GatorV; 29/06/2010 a las 13:42
  #4 (permalink)  
Antiguo 27/06/2010, 17:10
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: De nuevo error con sesiones

Comprueba que la ruta sea correcta y si a pesar de eso no funciona prueba con una ruta absoluta.
Cita:
Nota: HTTP/1.1 requiere un URI absoluto como argumento de » Location: incluyendo el esquema, hostname y path absoluto, pero algunos clientes aceptan URIs relativos. Generalmente puedes usar $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] y dirname() para construir un URI absoluto partiendo de uno relativo:
Código PHP:
Ver original
  1. <?php
  2. /* Redirect to a different page in the current directory that was requested */
  3. $host  = $_SERVER['HTTP_HOST'];
  4. $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
  5. $extra = 'mypage.php';
  6. header("Location: http://$host$uri/$extra");
  7. ?>
  #5 (permalink)  
Antiguo 28/06/2010, 10:25
 
Fecha de Ingreso: julio-2008
Mensajes: 62
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: De nuevo error con sesiones

Cita:
Iniciado por all-ill Ver Mensaje
Comprueba que la ruta sea correcta y si a pesar de eso no funciona prueba con una ruta absoluta.
He probado con lo que me dices....te dejo el código de los dos archivos, pero no veo que pase de una página a la otra.......

login.php:

<?php
session_start();
echo session_id();
echo "<br><br>";
echo isset($_SESSION);
if(isset($_SESSION)){
echo "<br>Vamos a la zona de usuarios";
$host=$_SERVER['HTTP_HOST'];
$uri=rtrim(dirname($_SERVER['PHP_SELF']),'/\\');
$extra='user.php';
header("Location: http://$host$uri/$extra");
}else{
?>
</p>
<h1>Identificación</h1>
<form class="miform" action="comprobar.php" method="post"> Usuario:
<input name="usuario" type="text" />Password:
<input name="password" type="password" /> <input class="boton" type="submit" value="Enviar" /> </form>
<?php
}
?>

user.php:

<?php
session_start();
echo session_id();
echo "<br><br>";
echo isset(S_SESSION);
echo "He entrado en el archivo de usuario<br>";
if(!isset($_SESSION)){
$host=$_SERVER['HTTP_HOST'];
$uri=rtrim(dirname($_SERVER['PHP_SELF']),'/\\');
$extra='login.php';
header("Location: http://$host$uri/$extra");
}else{
echo "";
echo "<h1>Indicadores de sostenibilidad ambiental en el sector industrial de Castilla y León</h1>";
echo "<strong>Bienvenido al Area de usurios: ";
echo $_SESSION["nombre"]." ".$_SESSION["ape_1"]." ".$_SESSION["ape_2"]." ";
echo "</strong>Has entrado con el nick: <strong> ";
echo $_SESSION["usuario"];
echo "</strong>
$host=$_SERVER['HTTP_HOST'];
$uri=rtrim(dirname($_SERVER['PHP_SELF']),'/\\');
$extra='logout.php';
Para cerrar la sesión, pulsa: <a href="http://$host$uri/logout.php">Aqui</a>";
echo "";
}
?>

comprobar.php:

<?php
session_start();
include "conexion.php";
$login = $_POST['usuario'];
echo "$login<br>";
$pass = $_POST['password'];
echo "$pass<br>";

$sql = "SELECT * FROM encargado_cuestionario WHERE usuario LIKE '$login' AND password LIKE '$pass' LIMIT 1";
$result=mysql_query($sql, $link);
echo "$result";
if($result){
echo "Se ha realizado la consulta a la base de datos<br>";
$num_filas_result=mysql_num_rows($result);
echo "$num_filas_result<br>";
if($num_filas_result!=0){
echo "Ha encontrado al menos una fila<br>";
$array=mysql_fetch_array($result);
print_r($array);
$_SESSION["login"]=$array["usuario"];
print_r($_SESSION);
echo "<br><br>";
$_SESSION["nombre"]=$array["nombre"];
$_SESSION["ape_1"]=$array["ape_1"];
$_SESSION["ape_2"]=$array["ape_2"];
$_SESSION["cargo"]=$array["cargo"];
print_r($_SESSION);
$host=$_SERVER['HTTP_HOST'];
$uri=rtrim(dirname($_SERVER['PHP_SELF']),'/\\');
$extra='user.php';

header("Location: http://$host$uri/$extra");
}
else{
echo "Login o password incorrectos<br>";
}
}else{
echo "No se ha podido realizar la consulta";
}

?>

logout.php:

<?php
session_start();
if(!isset($_SESSION)){
$host=$_SERVER['HTTP_HOST'];
$uri=rtrim(dirname($_SERVER['PHP_SELF']),'/\\');
$extra='login.php';
header("Location: http://$host$uri/$extra");
}else{
session_unset();
session_destroy();
echo '
<h1>Indicadores de sostenibilidad ambiental en el sector industrial de Castilla y León</h1>
';
echo "Las variables de sesión han sido eliminadas, y la sesión se ha dado por finalizada correctamente.";
$host=$_SERVER['HTTP_HOST'];
$uri=rtrim(dirname($_SERVER['PHP_SELF']),'/\\');
$extra='login.php';
echo 'Da click <a href="http://$host$uri/$extra">aqui para loguearte</a>';
}
?>


Esos son los cuatro archivos que tengo....algo debo hacer muy mal....
  #6 (permalink)  
Antiguo 28/06/2010, 13:12
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: De nuevo error con sesiones

Cita:
Iniciado por marvellous Ver Mensaje
Esos son los cuatro archivos que tengo...
También tienes el archivo conexion.php ¿no?
¿Con las consultas obtienes resultados de la base de datos?
¿Consigues pasar de una página a otra mediante header()?
¿Las variables de sesión se mantienen al pasar a otra página?
¿Qué URI o URL genera el código en cada caso?
  #7 (permalink)  
Antiguo 29/06/2010, 13:04
 
Fecha de Ingreso: julio-2008
Mensajes: 62
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: De nuevo error con sesiones

Si tengo el archivo conexion.php, y las consultas funcionan bien a la base de datos. El header no funciona para pasar de una página a otra. Te explico como lo hago:

1. Página datos_empresa.php, [/I]que recoge datos de un formulario, y en ella al inicio del archivo declaro <?php session_start() y luego recojo el valor de una variable en la variable $_SESSION["nombre_empresa"]=$nombre;. Esa variable $nombre la recogí vía POST. Si imprimo la matriz $_SESSIOn, veo que está rellan. Esta página pasa a otra a través de echo "<a href=http://localhost/formulario_compromiso_ambiental.php>Compromiso ambiental</a>";
2. En la página formulario_compromiso_ambiental.php, también he declarado al inicio <?php session_start(); y he recogido la variable de la sesión así: $nempresa=$_SESSION["nombre_empresa"];
echo "El nombre de la empresa es: $nempresa<br>";
. Al pasar a esta segunda página, me da error: HTTP 500 Internal Server Error. ´

¿Qué hago mal?
  #8 (permalink)  
Antiguo 29/06/2010, 14:04
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: De nuevo error con sesiones

¿Puedes indicar el formato resultante del URL a la que redirige Location? Es decir, la dirección a la que intenta redirigirte (ya sea apuntando lo que pone en la barra de direcciones o usando echo antes de usar header).

Puede ser útil revisar el registro de errores del servidor, ubicado generalmente en alguna subcarpeta de /var/log/, para determinar el problema (si es por alguna regla del .htaccess u otro tipo de error...)
  #9 (permalink)  
Antiguo 29/06/2010, 14:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: De nuevo error con sesiones

Cita:
Iniciado por marvellous
session_start();
echo session_id();
echo "<br><br>";
echo isset(S_SESSION);
echo "He entrado en el archivo de usuario<br>";
if(!isset($_SESSION)){
$host=$_SERVER['HTTP_HOST'];
NO PUEDES enviar absolutamente nada al navegador antes de usar header()... ni un espacio, ni un salto de linea... NADA... por eso no hace la redireccion.
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 29/06/2010, 14:44
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: De nuevo error con sesiones

Cita:
Iniciado por Triby Ver Mensaje
NO PUEDES enviar absolutamente nada al navegador antes de usar header()... ni un espacio, ni un salto de linea... NADA... por eso no hace la redireccion.
A pesar de haberlo visto en los archivos del segundo ejemplo no me di cuenta de ello, craso error
  #11 (permalink)  
Antiguo 29/06/2010, 15:25
 
Fecha de Ingreso: julio-2008
Mensajes: 62
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: De nuevo error con sesiones

Cita:
Iniciado por all-ill Ver Mensaje
¿Puedes indicar el formato resultante del URL a la que redirige Location? Es decir, la dirección a la que intenta redirigirte (ya sea apuntando lo que pone en la barra de direcciones o usando echo antes de usar header).

Puede ser útil revisar el registro de errores del servidor, ubicado generalmente en alguna subcarpeta de /var/log/, para determinar el problema (si es por alguna regla del .htaccess u otro tipo de error...)
No se dónde está exactamente el registro de errores del servidor. Tengo instalado "XAMPP", ¿dónde estaría? ¿En la carpeta Apache?
  #12 (permalink)  
Antiguo 29/06/2010, 15:27
 
Fecha de Ingreso: julio-2008
Mensajes: 62
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: De nuevo error con sesiones

Cita:
Iniciado por all-ill Ver Mensaje
¿Puedes indicar el formato resultante del URL a la que redirige Location? Es decir, la dirección a la que intenta redirigirte (ya sea apuntando lo que pone en la barra de direcciones o usando echo antes de usar header).

Puede ser útil revisar el registro de errores del servidor, ubicado generalmente en alguna subcarpeta de /var/log/, para determinar el problema (si es por alguna regla del .htaccess u otro tipo de error...)
Creo que lo encontré:

[Tue Jun 29 16:53:54 2010] [warn] pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Tue Jun 29 16:54:48 2010] [notice] Digest: generating secret for digest authentication ...
[Tue Jun 29 16:54:48 2010] [notice] Digest: done
[Tue Jun 29 16:54:49 2010] [notice] Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Tue Jun 29 16:54:49 2010] [notice] Server built: Nov 11 2009 14:29:03
[Tue Jun 29 16:54:49 2010] [notice] Parent: Created child process 4080
[Tue Jun 29 16:54:52 2010] [notice] Digest: generating secret for digest authentication ...
[Tue Jun 29 16:54:52 2010] [notice] Digest: done
[Tue Jun 29 16:54:53 2010] [notice] Child 4080: Child process is running
[Tue Jun 29 16:54:53 2010] [notice] Child 4080: Acquired the start mutex.
[Tue Jun 29 16:54:53 2010] [notice] Child 4080: Starting 150 worker threads.
[Tue Jun 29 16:54:53 2010] [notice] Child 4080: Starting thread to listen on port 443.
[Tue Jun 29 16:54:53 2010] [notice] Child 4080: Starting thread to listen on port 80.
  #13 (permalink)  
Antiguo 29/06/2010, 16:20
 
Fecha de Ingreso: junio-2002
Mensajes: 750
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: De nuevo error con sesiones

El registro de errores está en C:\xampp\apache\logs\error.log (la ruta puede variar según en qué carpeta esté instalado xampp), y es el archivo que has encontrado.
¿No hay más errores en ese archivo? Ahí no veo nada que muestre indicios del problema.

Prueba a hacer lo que ha dicho Triby. Si a pesar de eso no te funciona vuelve a revisar el log de errores y/o añade lo siguiente en los archivos php para ver si da más detalles del error.
Código PHP:
Ver original
  1. <?php error_reporting(E_ALL); ?>
  #14 (permalink)  
Antiguo 30/06/2010, 07:20
 
Fecha de Ingreso: julio-2008
Mensajes: 62
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: De nuevo error con sesiones

Muchísimas gracias....creo que ya funciona...eran los "echo" que ponía antes del "header"....buff qué alivio!!!

Ya me diréis cómo os lo agradezco...jeje

Etiquetas: sesiones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:42.