Foros del Web » Programando para Internet » PHP »

Error session

Estas en el tema de Error session en el foro de PHP en Foros del Web. Estoy usando el clásico access.php asi: <?php session_start(); if (isset($_SESSION['check'])) { if($_SESSION['check'] != "s") { header("Location:index.html"); exit(); } } else { include "index.html"; exit(); } ...
  #1 (permalink)  
Antiguo 23/03/2005, 11:49
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 21 años
Puntos: 0
Error session

Estoy usando el clásico access.php asi:
<?php
session_start();
if (isset($_SESSION['check']))
{
if($_SESSION['check'] != "s")
{
header("Location:index.html");
exit();
}
}
else
{
include "index.html";
exit();
}
?>

Pero me esta arrojando el siguiente error:

Warning: open(/tmp\sess_cf6aa82dd96b59f1ddb9b049fe18d144, O_RDWR) failed: No such file or directory (2) in access.php on line 2

Warning: open(/tmp\sess_cf6aa82dd96b59f1ddb9b049fe18d144, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

Verifique el path que me dicen al final y esta bien.
Gracias de antemano.
  #2 (permalink)  
Antiguo 23/03/2005, 11:52
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Eso es que no tenes acceso al dir temporal donde se guardan las sessiones, o tal vez a la misma session. Antes del session_Start pone:
session_save_path("sessiones");
session_name("UnNombre");
session_save_path lo que hace es definir en que dir se guaradaran las sessiones. por ende tendrás que crear un dir llamado sessiones en el mismo nivel, y darle permisos de escritura. Session_name le asigna un nombre que la identificara en el ambiente.
Intenta esto, y conta como fue.
__________________
Mi punto de partida es Que Bueno Lo Nuevo

Última edición por nicolaspar; 23/03/2005 a las 11:54
  #3 (permalink)  
Antiguo 23/03/2005, 13:05
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 21 años
Puntos: 0
Ahora esto

Despues de entrar a una de las páginas que contiene el access.php (indicado arriba), y tratar de saltar a otra se cierra sola la sesion y me envia de nuevo al index.

Última edición por killerchess; 23/03/2005 a las 13:11
  #4 (permalink)  
Antiguo 23/03/2005, 13:07
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Disculpas por mi ignorancia...que es el access.php??
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 23/03/2005, 13:16
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 21 años
Puntos: 0
Ahora esta así

El session_path no hizo falta. Ya puedo entrar pero ahora me pasa lo que escribi arriba.

<?php
session_name('ccv');
session_start();
if (isset($_SESSION['check']))
{
if($_SESSION['check'] != "s")
{
header("Location:index.html");
exit();
}
}
else
{
header("Location:index.html");
exit();
}
?>
  #6 (permalink)  
Antiguo 23/03/2005, 13:20
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
El session_save_path nunca deberia hacer falta, pero a mi me gusta tener el control de las cosas que yo hago, por eso lo uso.
Con tu problema, dos cosas, Simplifica un poco las cosas para que sea mas legible, y fijate que siempre estas mandando a index.html, pase lo que pase¿¿¿¿?????

session_name('ccv');
session_start();
if (isset($_SESSION['check']) && $_SESSION['check']!= "s"){
header("Location:index.html");
exit;
}else{
header("Location:index.html");
exit;
}
Aparte, donde seteas a $_SESSION['check']? por que lo seteas con un string?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 23/03/2005, 13:25
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 21 años
Puntos: 0
Repuesta

El check lo seteo despues de comprobar el user y pass. Esta mal poner un string?. Como que lo mando siempre al index?. Como deberia ser entonces?.

Última edición por killerchess; 23/03/2005 a las 13:28
  #8 (permalink)  
Antiguo 23/03/2005, 13:28
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Y es mejor para mi consepto comparar por int, y si es por binario mejor aún.
Pero no me respondiste lo importante. Por que siempre pateas a index.html?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #9 (permalink)  
Antiguo 23/03/2005, 13:35
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 21 años
Puntos: 0
Que estoy haciendo mal?

Como que siempre voy al index?.Voy si check no tiene nada o es diferente de "s". Como deberia hacerlo?.

La cuestion es rara porque es cuando entro a una de las paginas cierra y vuelve al index. Hay otra que no, ambas tienen el access al comienzo, sin espacios.

Última edición por killerchess; 23/03/2005 a las 13:41
  #10 (permalink)  
Antiguo 23/03/2005, 13:55
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Mira esto:
if (isset($_SESSION['check']) && $_SESSION['check']!= "s"){
header("Location:index.html"); #Vas a index
exit;
}else{
header("Location:index.html"); #Vas a index
exit;
}
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #11 (permalink)  
Antiguo 23/03/2005, 14:05
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 21 años
Puntos: 0
Lo cambie asi:

if (!isset($_SESSION['check'] || $_SESSION['check']!= 1){
header("Location:index.html");
exit;
}

Pero el error continua.
  #12 (permalink)  
Antiguo 23/03/2005, 14:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cual es el error que "continua"?

Este?:
Warning: open(/tmp\sess_cf6aa82dd96b59f1ddb9b049fe18d144, O_RDWR) failed: No such file or directory (2) in access.php on line 2

Si es ese .. en tu php.ini debes ajustar e indicar un directorio para:
session.sava_path = .. que tenga permisos de escritura. Por defecto dirá /tmp .. eso hace referencia a una ruta de Linux que para Windows ni corresponde ni existe ..

Un saludo,
  #13 (permalink)  
Antiguo 23/03/2005, 16:20
 
Fecha de Ingreso: noviembre-2003
Mensajes: 61
Antigüedad: 21 años
Puntos: 0
Despues de 4 horas indagando

El problema que tenia era el siguiente. En el archivo para seguridad básica que incluyo en mis paginas:

session_name('xxx');
session_start();
if (!isset($_SESSION['check'] || $_SESSION['check']!= 1){
header("Location:index.html");
exit;
}
check obtiene el valor de 1 al validar el usuario y contraseña en un formulario.

Pero!. En una de mis paginas tengo algo asi:

$check=mysql_num_rows($result);

Que hace que el programa falle?, pues register_globals ON
Se confundia el check de las sesión con el $check de my consulta.

Como muchos ya saben, register_globals en ON, trae problemas graves de seguridad.
Solución: Me comunico con el host para que cambien su configuración (recomendado) o cambio el valor de my variable de sesion check por otra cosa.

Gracias.
  #14 (permalink)  
Antiguo 24/03/2005, 06:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Solución: Me comunico con el host para que cambien su configuración (recomendado) o cambio el valor de my variable de sesion check por otra cosa.

Estaría bueno que tu servicio de hosting cambiase a OFF dicha directiva .. pero si es un servicio de hosting compartido .. eso afectará a otros sitios ya funcionando en ese servidor, por ende .. a muchos otros que tenían problemas similares o que no usan los arrays superglobales ($_POST, $_SESSION, $_GEt .. etc..) de la noche a la mañana sus aplicaciones ya no funcionarán . .(imagina la cantidad de reclamos para tu proveedor por eso ...).

Para empezar .. preocupate de usar y acceder a tus variables de sesión y otras externas por los arrays superglobales: $_SESSION .. etc .. Y no mezcles nombres de variables que puedan ser "asumidas" por otros métodos.

Un saludo,
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 13:11.