Foros del Web » Programando para Internet » PHP »

Problema con...¿navegadores?

Estas en el tema de Problema con...¿navegadores? en el foro de PHP en Foros del Web. Y esque es muy raro... He probado mi web modular en varias maquinas diferentes (con navegadores diferentes...) y el sistema de logueo no siempre funciona. ...

  #1 (permalink)  
Antiguo 08/04/2005, 14:02
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
Problema con...¿navegadores?

Y esque es muy raro...
He probado mi web modular en varias maquinas diferentes (con navegadores diferentes...) y el sistema de logueo no siempre funciona.
En opera y firefox (y este ultimo no en todas las versiones que he probado) funcionan, es decir, se loguea y los input text para introducir log i pass desaparecen como tiene que ser y se permite el paso a secciones privadas.
En canvio, en explorer y allguna version del mozilla firefox( nose cual) al darle al submit para loguearse, me duevuelve al index (como tendria que ser si se introdujera un usuario no valido) conservando el estado de invitado.

Como puede estar pasando esto si el comportamiento de php depende del servidor?
PD: en el explorer de mi casa (6) funciona perfectamente; en el del curro (6 tambien) nop....
Pudiera ser alguna funcion javascript que esté dando problemas?
  #2 (permalink)  
Antiguo 08/04/2005, 14:14
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Estas usando Cookies o sessiones? Puede estar ahi el problema.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 08/04/2005, 16:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Deberías definir y aclarar si tu aplicación usa sesiones o cookies .. en cualquier caso el uso de sesiones también puede usar cookies para la propagación del SID (en tu aplicación si usas sesiones deberías indicar como propagas el SID).

En cualquier caso, por ejemplo IE dispone del tema de "seguridad" y privacidad que lo que hacen en el fondo es aceptar o no determinadas cookies que se puedan pedir .. como por ejemplo las que el uso de sesiones genera .. (si propagas el SID en cookies) o las cookies como tales directamente. Revisalo y nos comentas.

Un saludo,
  #4 (permalink)  
Antiguo 08/04/2005, 17:51
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Nota

Una de las grandes ventajas de PHP es que no importa si el cliente esta bloqueando las cookies, las sesiones las maneja de forma local, entonces en tu servidor de php debes activar la directiva maneje las sesiones de forma local cuando es necesario, asi tu problema se acabara, pero es solo para sesiones, el envio de cookies si queda condicionado totalmente al cliente.

No recuerdo cual es el valor, pero esta en el php.ini, es algo de session_id_auto, no recuerdo, buscalo y revisa ese tema, asi no te preocuparas si el cliente no acepta cookies.

Bay.
  #5 (permalink)  
Antiguo 09/04/2005, 06:18
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
Cierto... olvidé comentar que uso sesiones y estas propagan el SID por cookies (creo, no estoy del todo seguro, pero por lo que veo en las urls que se generan no se reescriben pasando el SID ni yo tampoco los paso manualmente).
Al php.ini no tengo acceso ya que uso un hosting ajeno a mi.
  #6 (permalink)  
Antiguo 11/04/2005, 10:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por clinisbut
Cierto... olvidé comentar que uso sesiones y estas propagan el SID por cookies (creo, no estoy del todo seguro, pero por lo que veo en las urls que se generan no se reescriben pasando el SID ni yo tampoco los paso manualmente).
Al php.ini no tengo acceso ya que uso un hosting ajeno a mi.
Puedes forzar la propagación del SID en cookies usando ini_set() tipo:

ini_set("session.use_only_cookies","on");

Pero antes tendrás que asegurarte que tu cliente (navegador) acepte dicha cookie.

Un saludo,
  #7 (permalink)  
Antiguo 11/04/2005, 10:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por Neuron_376
Una de las grandes ventajas de PHP es que no importa si el cliente esta bloqueando las cookies, las sesiones las maneja de forma local, entonces en tu servidor de php debes activar la directiva maneje las sesiones de forma local cuando es necesario, asi tu problema se acabara, pero es solo para sesiones, el envio de cookies si queda condicionado totalmente al cliente.

No recuerdo cual es el valor, pero esta en el php.ini, es algo de session_id_auto, no recuerdo, buscalo y revisa ese tema, asi no te preocuparas si el cliente no acepta cookies.

Bay.
Realmente las "grandes" ventajas de PHP es que en el tema concreto de sesiones te dá opción a dos formas de propagación del SID:

A) Por el URL
B) por cookies

Por el URL no dependes de cookies que acepte el cliente (navegador) .. PHP por defecto re-escribirá ciertos tag's HTML (que define en url_rewrite_tags de tu php.ini) si usas session.use_trans_sid a ON. Pero, esto no lo hace en todo tipo de redireccionamiento como por ejemplo en javascript (un window.open .. o un window.location) o en META (etiquetas) de refresco . .o en PHP con un header("Location ...").

Propagando el SID en cookies presenta por su lado ventajas de seguridad y "comodidad" a la hora de propagar vs a que el cliente debe aceptar dichas cookies.

Si quieres leer sobre por qué son seguras las cookies para propagar el SID .. puedes leer este documento recomendado por www.php.net

http://www.acros.si/papers/session_fixation.pdf

Un saludo,
  #8 (permalink)  
Antiguo 11/04/2005, 11:12
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Cierto

Ok, bueno dejar esto cerrado:

Cuando utilizas Sesiones sin la URL, se maneja en base a cookies del cliente.
PHP tiene la capacidad de leer los href del html y agregar el SID automaticametne, sin embargo cierto, funciones de JavaScript y PHP no funciona, esto se soluciona facilmente, a tus ligas en html y php debes agregar el comando SID=#SID#, entonces desde el php solamente debes hacer esto:

1. Lee el SessionID actual, existe el comando que lo hace
2. Haz un Replace en tu HTML para cambiar las etiquetas #SID#

Y con eso lo arreglas...

Bueno, pero mencionas que no tienes acceso al PHP.INI para asegurar que esta correcto, sin embargo puedes hacer pruebas facilmente:

1. Corre el phpinfo.php para revisar los parametros de sesiones.
2. Crea una pagina que contenga una liga hacia ti mismo, he ingresa con un cliente que tu te asegures que esta bloqueando las cookies, y mira lo que sucede, en base a ese archivo de prueba mira todos los casos que necesitas para preparar el resto de tus archivos.

Suerte!!
  #9 (permalink)  
Antiguo 12/04/2005, 07:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
2. Haz un Replace en tu HTML para cambiar las etiquetas #SID#
No entendí esto? ... Podrías comentar como hacer eso?...

Observación: SID no es un "comando" es una constante .. la cual la puedes obtener tambien por el uso de:

Código PHP:
$SID=session_name()."=".session_id(); 
Ejemplos:

Links comunes
Código PHP:
<a href="nose.php?"<? echo SID ?>>nose</a>
PHP
Código PHP:
header ("Location: nose.php?".SID); 
Javascript (abrir ventana)
[/php]<a href="#" onClick="window.open('nose.php?<? echo SID ?>','ventana','propiedades')">[/php]

O si usamos la versión $SID .. eso mismo ...

SI usamos session.use_trans_sid = ON .. podemos ahorrarnos tener que insertar el SID -a mano- en los tag's HTML que define: url_rewrite_tags (links <a...> y algunos más).

Un saludo,
  #10 (permalink)  
Antiguo 12/04/2005, 11:59
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola

Ok, si, escribi mal, SID es solo un parametro en el URL, mira, lo que yo he hecho para esto, es que es mis ligas de HTML siempre agrego el SID, sin embargo en el sistema que utilizo yo tengo un punto donde puedo agregar estos parametros al URL automaticamente simplemente remplazando un TAG (Tag es el nombre que utilizo para decir que en mi html ese pedacito debe ser remplazado por otra cosa)

Pero bueno, en este caso, lo que tienes que hacer seguro es lo siguiente:

Javascript:
location.href="/pagina.php?SID=<?echo $SessionID?>"

Es decir agregar el SID en el codigo, yo manejo un sistema de Tags que me permite hacer estos replace automaticamente, solo digo esto:

if (blnCookiesDisabled)
strHtml = str_replace("#SID#", "SID=" . $SessionID, strHtml)
else
strHtml = str_replace("#SID#", "", strHtml)
end if

Pero bueno, eso se logra si estas manejando una funcion central que te controle un template

Pero de todas formas en tu codigo normal siempre puedes hacer eso:

SID=<?echo $SessionID?>"

Y asi funcionara correctamente.

NOTA: Si tienes TRANS_ID en ON, no debes basarte en eso, porque es posible que el usuario no soporta cookies, entonces el problema te deja igual si no previenes este caso poniendo a mano el SID la GRAN VENTAJA DE PHP respecto a Sesiones, no sirve de nada, entonces para siempre aprovecharla es mejor trabajar un poquito mas y poner mas atencion, claro, esto trae mas posibilidades de errores.... Pero !!! Vivan las ventajas de PHP !!! ... y lo dice un admirador fiel de ASP y Microsoft.

jejejeje

Suerte!!

Última edición por Neuron_376; 12/04/2005 a las 12:19
  #11 (permalink)  
Antiguo 13/04/2005, 07:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Neuron_376 .. leistes este documento?:
http://www.acros.si/papers/session_fixation.pdf

Cita:
Si tienes TRANS_ID en ON, no debes basarte en eso, porque es posible que el usuario no soporta cookies,
Creo que te confundistes . . no es session.use_trans_sid lo que define que PHP propague el SID en cookies .. sino session.use_cookies (y/o con session.use_only_cookies).

Por lo demás insisto que SID es una constante .. lo trabajes con un ssitema de templates o lo pongas a mano desde código PHP incrustrado entre HTML es lo de menos.

No sé que valor le das a: $SessionID .. pero recuerda que SID no es sólo el "ID" de la sesión sino también el nombre de la sesión:

$SID=session_name()."=".session_id();

Un saludo,
Neuron_376, no te lo tomes a mal que ando detras tuyo haciendo este tipo de acotaciones .. pero es simplemente para evitar confusiones y aclarar las cosas.
  #12 (permalink)  
Antiguo 13/04/2005, 10:25
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
No hay problema

De hecho te lo agradezco, es mejor salir de dudas a seguir confundido, mira, lo que yo me referia con prevenir el error, es este...

A lo que tengo entendido y segun mis pruebas con esto, segun el valor en session.use_trans_sid, lo que pasa es que primero se apoya en cookies y luego si el cliente no soporta cookies, entonces tiende a pasar el SID (Constante) por la URL, dime si en esto estoy bien.

Luego, si tu usas session.use_only_cookies, realmente estas privando que la segunda opcoin pase, porque si php encuentra que no soportas cookies, entonces tampoco pasara el SID por la URL porque encuentra session.use_only_cookies. Dime si estas de acuerdo.

En mi opinion, es preferible usar las cookies para el session, porque resulta menos consumo de memoria en tu servidor y mas seguridad, porque si en un URL el usuario cambia el valores de SID directamente entonces perdera la sesion en la siguiente pagina.

Otra ventaja es de seguridad, los hackers no pueden ver facilmente el identificador de SessionID de esa manera.(pero esto es algo extra)

Pero bueno, para mi, es mejor preparar el codigo para transmitir el SID en cualquier URL como PHP(a mano), HTML(automatico), JavaScript (a mano), porque fuera del detalle de seguridad, es mejor asegurar que mis usuarios pueden entrar a su cuenta en todo momento sin depender de la configuración de su navegador, FireWalls, antivirus, configuraciones de red, etc.

Entonces, yo tengo esto:

session.use_trans_sid = ON ó 1, no tengo el php.ini aqui
session.use_only_cookies = OFF ó 0, no tengo el php.ini aqui

Asi, lo que digo es... primero intenta sessio en cookies, sino, utiliza el URL para pasar el SID

Esa es la manera que tengo entendida que trabaja, por eso decia antes que para esto utilizo algo como:

if (blnCookiesDisabled)
strHtml = str_replace("#SID#", "SID=" . $SessionID, strHtml)
else
strHtml = str_replace("#SID#", "", strHtml)
end if

$SessionID es igual a la constante SID

Es decir, hago el proceso de pasar el SID en las partes donde es a mano solamente cuando se que es necesario porque el cliente no soporta cookies.
  #13 (permalink)  
Antiguo 13/04/2005, 10:47
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Algo mas..

Gracias por el documento me sirvio mucho, se que los hackers pueden hacer cualquier cosa, pero es bueno conocer los metodos, si tienes mas documentos de ese tipo, o bien de como prevenir los ataques, etc, te lo agradeceria.

Aun asi, en mi mensaje anterior pues bueno, no cambia nada, existe riesgo en cookies y el URL por igual, entonces hay que pensar mas que nada en que si pueden accesar a una cuenta de usuario, pues bien, sera cosa del usuario y su cuenta, y siempre tener extremado cuidado de los derechos y herramientas del usuario dentro de su session, para evitar cualquier sorpresa grave.

Nos vemos despues.
  #14 (permalink)  
Antiguo 13/04/2005, 16:19
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
bueno... me perdí un poco con todo esto, he estado unos dias q no he podido conectarme...
Cuando pueda miraré la configuración php del servidor y cuento algo sobre mi problema.
  #15 (permalink)  
Antiguo 13/04/2005, 17:35
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Cluster, has visto algun articulo similar a http://www.acros.si/papers/session_fixation.pdf en español?
__________________
I Love Programming...
  #16 (permalink)  
Antiguo 13/04/2005, 18:39
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
Todo el tema de las consideraciones de seguridad en el manejo de sesiones está bien explicado en este artículo: Manejo de sesiones en php

No es que lo haya escrito yo por supuesto, es que está bien explicado.

Saludos!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #17 (permalink)  
Antiguo 13/04/2005, 18:57
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Esta muy bien...

Sin embargo, entonces, lo que yo pienso que esta pasando con las sesiones en mi codigo esta bien?, o esta mal?, si quiero que me aclaren ese pensamiento:

Aun con lo que lei, no me queda claro.. mira, yo tengo:

session.use_trans_sid = ON ó 1, no tengo el php.ini aqui
session.use_only_cookies = OFF ó 0, no tengo el php.ini aqui

Y en mis paginas de PHP siempre utilizo esta metodologia para usar las sesiones hago esto:

<?

session_start(); //Yo entendia que este, primero busca en la cookie, si no la encuentra entonces busca en la URL, eso es lo que sabia.

x = $_SESSION["varX"];

?>

Con esto, lo que he visto, es que cuando soporto cookies, nunca pasa nada por el URL (cosa que me gusta, porque asi lo quiero), pero cuando bloqueo las cookies entonces, si me transfiere el SID por el URL, cosa que tambien quiero, porque si el usuario no soporta cookies entonces quiero que el manejo de las sesiones sea en mi servidor, asi el usuario no se preocupa y siempre puede entrar a su cuenta.

Espero respuesta a esto, tu documento esta muy claro, pero esas cositas ya las sabia, lo que no me queda claro aun, es si lo que estoy pensando es cierto, o por si azares del destino en mi server local y mi cliente si lo esta haciendo, pero si esto esta mal, porque no es el verdadero funcionamiento, entocnes dedusco que tengo un error y debo corregirlo porque no quiero subir algo que tiene errores y ademas me cree fugas de memoria si estoy usando mal el session.

Gracias.

Aclaro algo: Me urge porque estoy a 2 semanas de abrir al publico en general mi sitio de Internet, empezar la promocion, y presentar mis servicios a mis clientes, entocnes eso es super importante para mi.
  #18 (permalink)  
Antiguo 14/04/2005, 04:39
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 13 años
Puntos: 0
Bueno, referente a mi problema, he descubierto q en el pc del trabajo (donde no me logueaba) lo que ocurria es que el explorer me estaba bloqueando las cookies de mi sitio.
Por lo tanto las he desbloqueado y todo funciona correctamente.
Pero me surge ahora el como hacer esto que comenta Neuron_376, de que si estan bloqueadas se pase entonces el SID por URL automaticamente.
Teniendo en cuenta que no tengo acceso al php.ini para configurarlo
  #19 (permalink)  
Antiguo 14/04/2005, 13:39
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Bueno

Mira, en mis pruebas de la forma en que lo tengo funciona tal como digo arriba, sin embargo tu que tienes posibilidad de probar tus PHP desde muchos puntos diferentes, pruebalo asi como lo manejo, y entonces nos dices, porque naide me ha contestado si estoy correcto en mis pensamientos, o si estoy mal y realmente lo que obtengo en mi prueba local es un error, grave error.

Vamos haciendo esa prueba en tu caso particular y ver que pasa...

Gracias.
  #20 (permalink)  
Antiguo 14/04/2005, 17:10
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
Neuron, no puedo asegurar las condiciones en las que hicistes tus pruebas. Pero ten en cuenta lo siguiente, session_start() no hace ningún tipo de detección de si el navegador acepta cookies o no, así que no dependas de ello. session_start() depende del método que tú indicaste para propagar el session_id, y no toma ninguna decisión por su parte.

Si tu has activado la directiva session.use_cookies en la ausencia de un cookie session_start() interpreta que no existía ninguna sesión y va a procurar crear una sesión nueva y propagarla escribiendo un cookie en el cliente. No hay forma dentro de la misma respuesta HTTP en la que escribes un cookie de consultar si el mismo fué efectivamente aceptado, por lo que session_start() no tiene un mecanismo válido sobre HTTP para dentro de la misma solicitud verificar si se pudo escribir el cookie, simplemente acepta como que se escribió y se inició la sesión. Si por algún motivo el cookie no se escribió, en el próximo llamado, va a pensar que no hay ninguna sesión, creará entonces una nueva e intentará nuevamente de escribir el cookie.

En el caso de que tengas activada la directiva session.use_trans_sid se va a utilizar la propagación del session_id por URL. Si esta directiva no está encendida esto nunca va a pasar.

A partir de php 4.3.0 en adelate apareció la directiva session.use_only_cookies que de estar activada asegura que no se va a utilizar propagación por URL bajo ninguna condición.

Si no se tiene acceso al php.ini, todas estas directivas se pueden manipular en tiempo de corrida por la función ini_set(), por ejemplo:

Código PHP:
ini_set("session.use_trans_sid"1);
ini_set("session.use_cookies"0);
ini_set("session.use_only_cookies"0); 
Establece que un sistema utiliza la propagación por URL del session_id.

De esta forma, asegurándose de setear todas las directivas a gusto en cada script, se puede establecer un comportamiento a placer de la propagación del session_id a lo largo de toda la aplicación web. Esto es lo mejor para no asumir nada acerca del entorno en el que estás corriendo.

Saludos!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #21 (permalink)  
Antiguo 14/04/2005, 17:53
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
OK, Pregutna ??

Lo que mencionas acerca de session_start();, lo se, lo entiendo:

session_start(), no pone cookies, no regresa si soportas cookies, nada de eso, eso lo entiendo...

session_start() hace lo siguiente:

PASO 1. Busca si existe una seccion antes.

PASO 2. Si existia entonces la CONTINUA la sesion actual.

PASO 3. Si no existia entonces CRE una nueva sesion.

Aqui es la pregunta que pido respuesta, exactamente en el PASO 1 de session_start()...

Tu dices, session_start() busca la session en una cookie, bien, eso tambien lo se, pero creo que en el PASO 1 funciona asi...

PASO 1.1. Busca session en una cookie y carga session si existe.

PASO 1.2. Si no existe session en cookie, busca session en el URL y carga session si existe.

De esta manera PHP cubre el caso de que...

1. Estas usando la propagacion por COOKIES.

2. Estas usando la propagacion por URL

session_strat() funciona para ambos correctamente ?

ESA ES MI PREGUNTA, SOLOMENTE NECESITO UN SI O UN NO, los detalles del php.ini para decidir que tipo de propagacion voy a soportar los conozco bien, y me han quedado mucho mas claro con este tema.

Pero solo eso, esa pregunta sencilla... si en lo que pienso estoy bien, entonces todo mi metodo actual es correcto, la forma de revisar si el cliente soporta cookies o no, eso es un metodo aparte que a mi me sirve para asegurar que el SID siempre se propague por ligas donde el PHP no pega este valor en forma automatica, como por ejemplo JAVASCRIPT.

Pero bueno, pregunta 2, si session_start() no funciona para propagacion por URL, entonces que tengo que utilizar para iniciar una session cuando uso la propagacion por URL?

La verdad creo que lo que estoy haciendo es totalmente correcto, pero es este tema me han confundido un poco, por eso pido un SI o un NO por favor.

Gracias a todos
  #22 (permalink)  
Antiguo 14/04/2005, 22:35
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
A ver Neuron, evidentemente las pruebas que has hecho te han dejado confundido, por algo te dije que este tema ya estaba demasiado entreverado.

Aquí voy, lisa y llanamente NO, no hace lo que tú dices, session_start() no elije un método de propagación en función de donde encuentre un aparente session_id, eso no existe, si existiera sería un bug, pues el usuario podría establecer a placer el método de propagación, al menos durante su sesión, con todas las posibles disfunciones que eso puede significar para un sitio, además de los problemas de seguridad, etc.

Lo que sí hace session_start() es, en caso de que no hayas establecido como métido exclusivo los cookies, con session.use_only_cookies, es buscar el posible session_id en ambos lados, en el cookie, y en un parámetro de GET. Tanto si lo encuentra en cualquiera de los dos lados, como si lo tiene que generar, lo va a escribir y propagar SOLAMENTE por el método establecido por tí, sean cookies o URL.

Ten en cuenta que puedes haber entrado en confusión al hacer pruebas por olvidarte de reiniciar apache cuando modificaste el php.ini, o por dejar habilitado session.use_trans_sid. Hay muchos casos en los que la prueba te puede haber fallado. Estás propagando por tu cerebro una funcionalidad inexistente en session_start().

Aún esto que hace de detectar el session_id en cookie o en GET si no has especificado como medio exclusivo los cookies, te recomendaría que no lo utilices, primero, porque no me figuro un escenario donde pueda serte útil sin confundirte más, y segundo, porque es una funcionalidad no documentada, y es muy probable que diferentes o futuras versiones de PHP se comporten de manera dispar ante esta situación.


Saludos!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #23 (permalink)  
Antiguo 15/04/2005, 10:34
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Gracias !!!!

Ok, gracias por responder... sin embargo...

Tu respuesta es NO... pero yo dije...

"PASO 1.1. Busca session en una cookie y carga session si existe.

PASO 1.2. Si no existe session en cookie, busca session en el URL y carga session si existe."

Y tu dices...

"Lo que sí hace session_start() es, en caso de que no hayas establecido como métido exclusivo los cookies, con session.use_only_cookies, es buscar el posible session_id en ambos lados, en el cookie, y en un parámetro de GET"

Eso es exactamente como lo tengo.

Entonces hasta ahi estoy correcto bien... lo que tu dices es que session_start() no elige un metodo basado en donde encontro el session, eso estoy de acuerdo tambien, session_start() no se encarga de eso... y tienes razon, estoy de acuerdo, bien... creo que entonces estoy bien en lo que pensaba de session_start()... pero en lo que creo entonces que estoy mal, es en esto....

Yo pensaba... que con esto en el PHP.INI:

session.use_trans_sid = ON ó 1, no tengo el php.ini aqui
session.use_only_cookies = OFF ó 0, no tengo el php.ini aqui

Yo pensaba que pasaba esto:

php compiler basaso en el php.ini... decia,

1. Quiero escribir la session en una cookie

2. Si no puedo escribir la cookie, entonces if session.use_trans_sid = 1 la voy a propagar por el URL...

3. session_start(), no se preocupaba por el metodo, el simplemente buscaba.. primero en cookie y luego en URL...

Entonces eso es lo que creo que es en lo que estoy mal, que yo miraba PHP compiler como el encargado de propagar el cookie, es decir, session_start() solamente lo creaba, pero el PHP compiler (en x momento) la propagaba segun la configuracion...

Creo que ahi es donde estoy mal... entonces mi teoria de que podia utilizar ambos metodos de propagacion automaticamente esta mal, y mis pruebas en efecto algo debo haber hecho mal como mencionas, porque estoy obteniendo resultados erroneos... cual es tu opinion de esto ?

Y si si estoy mal... mi pregunta, existe una forma en el PHP.INI para que automaticamente cuando el cliente no soporta cookies, empiece a propagar el SID.... ???

Mira si eso no es posible no hay problema, yo ahorita a mano ya se cuando el cliente no soporta cookies, como..

1. Pagia 1 escribe una cookie
2. Pagin 2 intenta leer cookie mediante varios metodos ... si no la lee, digo que no soportas cookies, y pongo eso en mis variables.
3. En mi codigo empiezo a remplazar un tag #SID# para propagarlo yo en las partes donde no se propaga automaticamente, por ejemplo JAVASCRIPT.

Pero este metodo no se preocupaba por el HTML porque yo pensaba que PHP lo haria automatico...

Por favor dime que piensas de eso, y si en tu experiencia eso pasa, o si acaso es posible que a veces pasa, pero a veces falla.

Gracias.
  #24 (permalink)  
Antiguo 15/04/2005, 12:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo ya me lié ya con las explicaciones .. pero respondiendo puntualmente a:

Cita:
mi pregunta, existe una forma en el PHP.INI para que automaticamente cuando el cliente no soporta cookies, empiece a propagar el SID.... ???
Te comento lo mismo que:

elmaster
Cita:
en caso de que no hayas establecido como métido exclusivo los cookies, con session.use_only_cookies, es buscar el posible session_id en ambos lados, en el cookie, y en un parámetro de GET.
Añadiendo .. dependiendo de los tag's HTML que se re-escriban según:
url_rewrite_tags .. así se añadirá el SID en tus URL's (de tag's como <a href .. etc>) y algunos más o no según el estado de session.use_trans_sid .. por eso .. y debido a que No se sobreescribe todo tipo de redireccionamiento .. como por ejemplo un header("Location: ...") o algo de javascript (window.open() .. window.location .. etc) .. en esos casos particulares .. si tu no añades el SID en dicho URL que se redirecciona .. el comportamiento de tu aplicación podría ser inesperado.

En resumen .. identifiques tu a mano o no si tu cliente acepta cookies (navegador) como para insertar el SID en los redireccionamientos que hagas/links .. etc, puedes dejar que PHP añada el SID en los casos mencionados y sólo añadirlos manualmente en los otros.

Por mi parte .. prefiero propagar el SID en cookeis (forzado: session.use_only_cookies) y avisar a mis usuarios de este hecho (de que acepten la cookie de mi sistema).

Un saludo,
  #25 (permalink)  
Antiguo 15/04/2005, 12:19
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
Neuron, si lo que quieres hacer es eso, de utilizar un método u otro según el cliente, vas a tener que verificar a mano con el procedimiento que describes.

Por lo demás, coincido con cluster, si he elejido propagar por cookies, prefiero decir que es un requerimiento del sistema y listo.

Se dice que por principio de diseño no está bien basar funcionalidades fundamentales de un sistema en cookies, javascript u otro elemento cuyo funcionamiento dependa del cliente, pero en la práctica y en la mayoría de los proyectos, son funcionalidades comunmente soportadas por la mayoría de los clientes, así que siempre que se usen apropiadamente vamo' arriba :)

Saludos!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #26 (permalink)  
Antiguo 15/04/2005, 12:25
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Gracias...

Tego esto en el PHP.INI:

session.use_cookies = 1
session.use_trans_sid = 1
session.use_only_cookies = 0

Con esto:

Lo que me comenta elmaster y tu, es que estoy correcto con que session_start() intenta leer desde cookie o desde URL la session actual.

Bien, la otra preunta que no me contestaron... con esta configuracion de PHP.INI pienso que pasa esto:

PHP compiler (en x momento) dice:

1. Propagar la sesion por cookie (session.use_cookies).

2. Si el cliente no soporta cookies, entonces: Propagar la session por URL (session.use_trans_sid = 1), y entonces remplazar en el html los tags ya mencionados automaticamente

Eso esta bien, o esta mal ?

Tienes razon Cluster, por razones de seguridad lo de cookies seria mejor opcion, pero en mi opinion es un peso menos para el usuario, porque en muchas ocasiones su firewall, administrador de red, etc, mil factores, aun cuando tengas cookies no les permitira el acceso, me pasa mucho con mi sitio de ASP ese caso, simplemente desde el certificado de seguridad empieza a bloqearte cookies.

Gracias a todos, creo que seremos expertos en el tema cuando esto quede totalmente aclarado
  #27 (permalink)  
Antiguo 15/04/2005, 12:38
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
Está mal, seguís insistiendo en que PHP detecte si puede propagar la sesión por cookies y PHP NO HACE ESO.

En el caso que planteas PHP simplemente va a propagar la sesión por los dos métodos. Si te fijás vas a tener tanto el cookie como el SID en la URL.

jeje .. bueno esto ya está jocoso. Te pago el psicólogo para que te saque de la cabeza el síndrome de autodetección de método de propagación de sesiones de php.

Saludos!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #28 (permalink)  
Antiguo 15/04/2005, 12:47
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Gracias...

La terapia cuesta mucho dinero, que amable.... pero bueno, al fin me contestaste claramente, si no presiono no me sacan de dudas....

Entonces, con esto:

session.use_cookies = 1
session.use_trans_sid = 1
session.use_only_cookies = 0

Lo que va a pasar, es que la session se esta escribiendo en la cookie, y se esta escribiendo en el URL al mismo tiempo verdad? no hace una primera comparacion, donde dice, primero en cookies y luego en URL.

Esa es la respuesta que necesitaba escuchar

Gracias, bien, entonces pregunta, lo mas recomendable seria:

session.use_cookies = 1
session.use_trans_sid = 0
session.use_only_cookies = 0

Y entonces, con mi metodo a mano para detectar cookies en el cliente, yo manejo la propagacion del SID en el URL mediante mi codigo verdad ?

Y bien, si hago eso, session_start() sigue funcionando correctamente ?

Sean directos, si o no, con letras rojas grandotas, jajajaja
  #29 (permalink)  
Antiguo 15/04/2005, 13:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Y entonces, con mi metodo a mano para detectar cookies en el cliente, yo manejo la propagacion del SID en el URL mediante mi codigo verdad ?
Así es .. buen aviso a tu usuario para decirle "acepta la cookie por tu seguridad" ...

Cita:
Y bien, si hago eso, session_start() sigue funcionando correctamente ?
session_Start() es necesario siempre para indicar "inicio de uso de sesiones" .. como ya te han comentado a lo largo de este tema .. los temas de propagación del SID .. se hacen por el estado de otras directivas .. ahora, si .. por supuesto que esa función .. "inicia" ese checkeo de -esas- directivas .. no de "comprobaciones" de aceptación de cookies o similar para determinar si hay que crear un SID nuevo o seguir usando uno propagado por el método que indicas.

Un saludo,
  #30 (permalink)  
Antiguo 15/04/2005, 13:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Sean directos, si o no, con letras rojas grandotas, jajajaja
A veces hay "peros" como pasa en este caso .. así que dar una afirmación SI o NO no es del todo correcta en muchos casos si no se delimita bien de que hablamos concretamente.

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:02.