Foros del Web » Programando para Internet » PHP »

Problema php.ini y sessiones

Estas en el tema de Problema php.ini y sessiones en el foro de PHP en Foros del Web. Hola, soy nuevo en php, estoy trabajando con sessiones y tengo un problema que creo ha de ser del php.ini, ya que la aplicación la ...
  #1 (permalink)  
Antiguo 11/05/2004, 09:52
 
Fecha de Ingreso: mayo-2004
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
Problema php.ini y sessiones

Hola, soy nuevo en php, estoy trabajando con sessiones y tengo un problema que creo ha de ser del php.ini, ya que la aplicación la he subido a un servidor y funciona perfectamente, así que el código está bien. EL problema es que al pasar de el primer php a un segundo , en este, las variables de $_session han perdido su valor.

Las sesiones están activadas por que en el primer php la redireccion se efectúa mediante
if($_SESSION['login']) , entra por este if, pero al pedir esta variable de nuevo en la siguiente página esta ha perdido su valor. Pienso que debe ser cosa de mi php.ini, ya que lo he subido a un servidor y este problema no ocurre, si alguien tiene alguna idea, muchas gracias de antemano!!
  #2 (permalink)  
Antiguo 11/05/2004, 11:45
 
Fecha de Ingreso: mayo-2004
Ubicación: Managua, Nicaragua
Mensajes: 281
Antigüedad: 13 años, 7 meses
Puntos: 0
pon al comienzo de la página html algo así
<?php if(isset($_SESSION[variable])){session_start(); session_name("nombresesion");}else{header("locatio n:http://nombredetupagina.com/logindeusuarios.php");}

Tenes que iniciar la sesión otra vez para recuperar los valores de las sesiones, pregunta primero si esas varibles están inicializadas con sesión en tu primera página y si es así, inicializá sesión. Podes también preguntar una vez dentro sobre los valores de esas variables sesión si son correctas para más seguridad.
__________________
Julio Hernández
  #3 (permalink)  
Antiguo 11/05/2004, 19:30
 
Fecha de Ingreso: mayo-2004
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
el problema no puede estar en el codigo, de lo contrario no funcionaría en el servidor al que lo he subido, tiene que ser algo del php.ini
  #4 (permalink)  
Antiguo 11/05/2004, 20:00
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 15 años, 1 mes
Puntos: 4
es q existen sevidores q ponen archivos autoprepend (q se cargan al princìpio de cualquier script) donde puede q se inicie session automaticamente, o lo otro es q en el php.ini este activada la directiva de session q permite iniciar sesion automaticamente en todos los scripts.

usa phpinfo() y revisa el apartado de session, seguramente alguna de estas dos posibilidades q te e contado esta activada.
__________________
Blog | Tecnosquad
  #5 (permalink)  
Antiguo 11/05/2004, 21:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Primero hay que iniciar el uso de sesiones con:

session_start()

y desde ahí se puede intentar acceder a una variable de sesión por su array superglobal: $_SESSION ...

Pero de que el SID (identificador único de sesión) se propague o no correctamente depende de la configuración del tema correspondiente:

session.use_trans_sid = 1 (por defecto PHP viene a 0 por qué usa session.use_cookies = 1 .. lo cual implica que se propagará el SID en una cookie y por ende requiere de un navegador que acepte cookies)

Y .. hay que indicar a PHP donde va a guardar sus sesiones:
session.save_path con un directorio en ruta absoluta (c:\nose\sesiones) que exista y que tenga permisos de escritura.

Todo esto lo detalla la documentación oficial de PHP sobre sesiones:
www.php.net/session

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 12/05/2004, 08:59
 
Fecha de Ingreso: mayo-2004
Ubicación: Managua, Nicaragua
Mensajes: 281
Antigüedad: 13 años, 7 meses
Puntos: 0
El moderador está en lo correcto, intentá algo así entonces al comienzo de tu página Web.

<?php
session_start();
if(!(isset($_SESSION["variable"])))
header("location:http://tupagina.com/logueodeusuarios.php");
echo "<?"; ?>xml version="1.0" encoding="iso-8859-1"?>

En este caso, si la variable sesión no se ha inicializado, redireccionalo a el logueo de usuarios, de lo contrario, puedes validar también si las variables de sesión son correctas, como password, login, etc, continua en tu página, verás que tus variables de sesión están inicializadas o tienen un valor de sesión.

Algunas configuraciones de php.ini lo debes de tener de la siguiente forma:

session.use_cookies On On
session.use_trans_sid 1 1, donde el sid por defecto activada
session.auto_start Off Off

Te recomiendo verificar el estado de otras directivas de sesión deacuerdo a lo necesites usar y así activar o configurar estas!!!.
__________________
Julio Hernández
  #7 (permalink)  
Antiguo 12/05/2004, 09:54
 
Fecha de Ingreso: mayo-2004
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
Este es el primer archivo, aqui todo funciona perfectamente:

<?
session_start();
//incluimos el archivo de configuración y conexión a la BD.
include("conexion.php");

//tratamos los datos recibidos
$nombre = stripslashes($_POST["nombre"]);
$nombre = strip_tags($nombre);
$password = stripslashes($_POST["password"]);
$password = strip_tags($password);
$_SESSION['user']=$nombre;
$_SESSION['pass']=$password;


//Nos validamos con la base de datos
$link=Conectarse();
$result=mysql_query("select * from usuarios",$link);
while($row = mysql_fetch_array($result)) {
//echo ($row["cliente"]."-".$_SESSION['user'] ."-". $row["password"]."-".$_SESSION['pass']);
if($row["cliente"]==$_SESSION['user'] && $row["password"]==$_SESSION['pass']){
$_SESSION['login']=true;
}
else{
$_SESSION['login']=false;
}
}
mysql_free_result($result);
mysql_close($link);

if($_SESSION['login']){
Header("Location: controlador.php?componente=directorio&tipo=inc".SI D);

}
else{
Header("Location: controlador.php?componente=salir&tipo=php");

}
?>

Este es el segundo archivo , en el que ya no puedo recoger $_session['login']

<?
session_start();
?>
<html>
<head>
<title>Controlador</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body >

<?
include("../inc/cabecera_general.inc");

//comprobamos el login

if($_SESSION['login']){
include("../inc/cabecera_logeado.inc");
}
else{
include("../inc/cabecera_nologeado.inc");
}

include("../inc/pie.inc");

?>
</body>
</html>

Aqui siempre se mete por el else ( en local ).
Mis valores del php.ini son:

session.auto_start = 0
session.save_handler = files
session.use_cookies = 1
session.save_path = C:\WINDOWS\sesiones_php
session.use_trans_sid = 1

register_globals = Off


DEBERIA FUNCIONAR NO?
  #8 (permalink)  
Antiguo 12/05/2004, 11:20
 
Fecha de Ingreso: septiembre-2003
Mensajes: 25
Antigüedad: 14 años, 2 meses
Puntos: 0
session.auto_start = 0
session.save_handler = files
session.use_cookies = 1
session.save_path = C:\WINDOWS\sesiones_php
session.use_trans_sid = 1

register_globals = Off

Yo tenia el mismo problema que vos en mi servidor local asi que la unica diferencia que encuentro con mi php.ini es que register_globals deberia estar en On

Ademas no se que tanta relacion pueda tener el parametro include_path de php.ini pero lo setee de otra manera y todo empezo a funcionar...

espero que te sirva, saludos
  #9 (permalink)  
Antiguo 12/05/2004, 11:34
 
Fecha de Ingreso: mayo-2004
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
pues register_globals=On y todo igual
:(
  #10 (permalink)  
Antiguo 12/05/2004, 11:56
 
Fecha de Ingreso: mayo-2004
Mensajes: 8
Antigüedad: 13 años, 7 meses
Puntos: 0
Ya me funciona, gracias a todos, ahora me quedan un par de dudas.

para que funcione es necesario poner siempre en cada enlace la variable SID ?
Se tiene que ver siempre en la barra de direcciones?
  #11 (permalink)  
Antiguo 13/05/2004, 07:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lee en php.net: www.php.net/session todas las directivas de configuración que te hemos mostrado en este tema .. Todas son referentes a la propagación del SID y que este es necesario .. Se puede hacer en cookies o por el URL

Y usa preferentemente:

if(isset($_SESSION['login'])){

en lugar de:

if($_SESSION['login']){

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 02:43.