Foros del Web » Programando para Internet » PHP »

Php.ini para sesiones

Estas en el tema de Php.ini para sesiones en el foro de PHP en Foros del Web. Hola a todos. Sigo con las sesiones y todavía no lo logro. La parte de sesiones en mi php.ini, es la siguiente: [Session] ; Handler ...
  #1 (permalink)  
Antiguo 07/02/2003, 15:29
 
Fecha de Ingreso: julio-2002
Mensajes: 219
Antigüedad: 15 años, 5 meses
Puntos: 0
Php.ini para sesiones (Por favor)

Hola a todos.

Sigo con las sesiones y todavía no lo logro.

La parte de sesiones en mi php.ini, es la siguiente:

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
session.save_path = C:\php3\sesiones

; Whether to use cookies.
session.use_cookies = 1


; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler = php

; Percentual probability that the 'garbage collection' process is started
; on every session initialization.
session.gc_probability = 1

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
session.referer_check =

; How many bytes to read from the file.
session.entropy_length = 0

; Specified here to create the session id.
session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; Set to {nocache,private,public} to determine HTTP caching aspects.
session.cache_limiter = nocache

; Document expires after n minutes.
session.cache_expire = 180

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
; to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
; in publically accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.
session.use_trans_sid = 0

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeent ry"



********************
Y cuando hago session_start(), me da este error:

Warning: open(/tmp\sess_fad3110a5d94244753159bb6241a5afa, O_RDWR) failed: No such file or directory (2) in c:\mis documentos\php archivos\nuevo philips\sistema\funcionesPHP.phtml on line 55


*******************
Seguro tiene algo que ver con el php.ini. La carpeta C:\php3\sesiones si existe y tiene todos los permisos.


Qué tengo que cambiar.

Gracias de nuevo por la atención.

NOTA: En verdad estoy desesperado con esto de las sesiones.

Última edición por dagui; 11/02/2003 a las 13:34
  #2 (permalink)  
Antiguo 07/02/2003, 15:52
 
Fecha de Ingreso: junio-2001
Ubicación: Cordoba, Argentina
Mensajes: 190
Antigüedad: 16 años, 6 meses
Puntos: 0
Los errores que estas teniendo son comunes de alguien que recien empiezan y estan en todos los foros.

Este error que te dio ahora, es distinto, al anterior, o sea que el error anterior esta solucionado(session_start). El nuevo problema que tenes ahora es de configuracion de los archivos temporales, donde se guardan los datos de sesion. Por cada session se crea un archivo de texto en donde se guardan los datos y tenes que especificarle al php en donde se guardan.

edita el archivo php.ini

y busca algo como esto
session.save_path = /tmp

lo tenes que cambiar por algo asi

session.save_path = C:\PHP\sessiondata

obviamente tiene que existir la carpeta C:\PHP\sessiondata
__________________
Martin
  #3 (permalink)  
Antiguo 07/02/2003, 20:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si te da ese error referente a un tal directorio /tmp .. pese q dices haber cambiado la configuración de php.ini directiva en cuestion .. pued ser por:

1) no editastes el PHP.ini que PHP lee .. eso lo puedes verificar haciendo un:
<? phpinfo(); ?>

Ahí dice que php.ini y donde está ubicado el php.ini q está usando .. Ese es el que debes de modificar ..

2) No reiniciastes tu servidor HTTP (tu Apache o el q uses ..). Si no reinicias .. no tiene efecto los cambios de tu php.ini (por lo menos en PHP como módulo de Apache)..

Un saludo,
  #4 (permalink)  
Antiguo 11/02/2003, 13:06
 
Fecha de Ingreso: julio-2002
Mensajes: 219
Antigüedad: 15 años, 5 meses
Puntos: 0
¡Por favor!

Gracias Martin y Cluster.

Ya no me da error. Pero aunque ya especifiqué la carpeta donde se guardan las sesiones y coloqué el register_globals = On, cuando quiero obtener el valor de una variable en una páguina, que guardé en otra, me sale vacío.

Qué puede ser?

Si sirve de algo, coloco el código de las dos páginas aquí:

Luego de verificar que el usuario esté en la base de datos, hago lo siguiente.

ob_start();
session_start();
session_register("autentificado");
$autentificado = "SI";
session_register("nombre");
$nombre = "YO";
session_register("nivel");
$nivel = 1;
header("Location: principal.php3?usuario=$nombre");
flush();

Y en "principal.php3" tengo: (ESTOY USANDO PHP4)


ob_start();
//TOMO VARIABLES DE SESION SOBRE LA AUTENTIFICACION
session_register("autentificado");
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($autentificado != "SI")
{
//si no existe, envio a la página de autentificacion
header("Location: index.php3");
//ademas salgo de este script
exit();
}
flush();


No parece haber error.

Disculpen tantas molestias y gracias por la atención.

Daniel Guía.

Última edición por dagui; 11/02/2003 a las 13:47
  #5 (permalink)  
Antiguo 11/02/2003, 13:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si usas session_register() .. los "registros" de las variables de sesion que vas a usar .. usando register_globalas a ON los puedes tener agrupados al principio de tu script (bajo el session_start() ...)

Done quieras leer el valor de una variable de session NO has de hacer session_register() .. pues con eso la estas volviendo a "registrar" con el valor q tenga .. en ese script (si está definida .. el q corresponda y si no lo está pues NULL ..)

Para leer una variable de sesion registrada tan solo tienes que hacer:

<?
session_start(); // Inicio uso de session.
echo $nombre_variable_sesion;
?>


Pero desde ya te digo (y si revisas las FAQ's veras mas detalles) .. que NOOOO debes leer variables de sesion asumiendolas GLOBALES! .. debes accederlas a ellas via sus arrays asociados ..

Minimo:
$HTTP_SESSION_VARS['nombre_variable_sesion'];

Y si usas PHP 4.1.x en adelante ya puedes usar: $_SESSION['variable_session'] tanto para registrarla (sin usar session_register() ..) como para leer su valor como si de un array cualquiera se tratase ...

El Uso del "buffer" .. así tal cual lo tienes no le veo mucho sentido .. en tal caso si existiera algo de HTML antes de los session_start() .. o de los header() deberias usarlo .. Usar el buffer de salida así sobre-carga el servidor si no es realmente necesario su uso .. Aprende a diseñar bien una aplicación q use cabeceras (header) o sessiones y optimizaras el funcionamiento de tus scripts y servidor.

Otro detalle ..
Si en una variable de sesion te guardas un "nombre" .. y siempre q inicie la session va a existir esa variable . pues la defines en la sesion .. Ese "flag" (bandera, estado) de tu variable de sesion $autentificado .. no tiene mucho sentido .. Pues tan solo con ver si esa variable de sesion $nombre y/o $nivel .. sobraría para chekear si existe la session con tus variables.

Te recomiendo q leas el manual de php en el tema de sessiones y las FAQ's donde veras ejemplos de usos de sessiones basicos y sobre todo revisa la FAQ q habla sobre register_globals ..

Un saludo,

pd: .. En PHP es muyyyy importante las versión completa del mismo .. decir "PHP 4" es muyyy generico .. hay muchos cambios entre un simple PHP 4.1 y 4.3 .. ademas q hay a su vez mas sub-versiones 4.2.3 ... 4.3.0 ... etc
  #6 (permalink)  
Antiguo 12/02/2003, 09:07
 
Fecha de Ingreso: julio-2002
Mensajes: 219
Antigüedad: 15 años, 5 meses
Puntos: 0
Gracias de nuevo Cluster.

Voy a tomar en cuenta todo lo que me dices que considere.

Mi última pregunta es: (A pesar de haber leído lo que hay sobre seiones en php.net y el las faqs, aun no me queda claro esto)

El SID de la session, debo pasarlo de página en página, o éste se pasa sólo. Porque a pesar de tener el session.use_trans_id = 1, no me está funcionando. Sólo me sirve si paso el SID por medio del URL.

Si hay una manera de que el SID se envíe solo de página en página, me gustaría saberla.


Gracias por todo.

Última edición por dagui; 12/02/2003 a las 09:45
  #7 (permalink)  
Antiguo 12/02/2003, 09:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si usas propagacion del SID en cookies y el cliente (navegador) que uses NO permite guardase cookies .. el SID no se va a propagar ...

(revisa en tu PHP.ini)
session.use_cookies = 1

y mira si tu navegador aceptas o no cookies ...

Por lo demas .. si dejas la directiva de cookies a 0 .. el SID se propagará en los <tag> HTML que se indique en:
url_rewriter.tags = " a=href,area=href,frame=src,input=src,form=fakeentr
y"

(q son la mayoria . links, formularios .. frames .. etc) Con eso veras q por ejemplo en tus formulario se añade un campo extra hidden con el SID (eso lo reescribe PHP) ..Todo esto si usas el enable trasn id .. a "1"

Tambien confirma q estas modificaciones q haces de tu php.ini .. lo haces sobre el php.ini correcto (lo puedes ver en un phpinfo() que php.ini es el q está usando tu PHP y los estados finales de los cambios q hagas de las directivas implicadas).

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 10:50.