Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-05-2003
Fr@n Fr@n is offline
Registrado
 
Registrado: may 2003
Posts: 8
Poder: 0
Fr@n Va por buen camino
Unhappy Sesiones y variablaes

Wnas... soy bastante novato, y con los libros no me aclaro... alguien me puede ayudar!!?? Como se crea una sesión y se mantiene en todas mis páginas??? y como creo una variable en la primera página y mantengo su contenido hasta la última ??? ( hay 4 páginas... tampoco esq sean muchas... )
Responder Con Cita
  #2  
Antiguo 25-05-2003
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
Hola!

Tienes que, en cada pagina que vas a utilizar las variables de sesion, inicializarlas con:

session_start();

Luego, asignas los valores a las variables que seran guardadas en la sesion:

$variable_id = "talocualvalor";

Y, registras la variable:

session_register("variable_id");

Luego, en cualquier otra pagina, puedes acceder al valor de la variable, iniciando la sesion:

session_start();
echo $variable_id;
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #3  
Antiguo 26-05-2003
Fr@n Fr@n is offline
Registrado
 
Registrado: may 2003
Posts: 8
Poder: 0
Fr@n Va por buen camino
Wink

Gracias por la respuesta, ha sido la mas aclaradora!!
Responder Con Cita
  #4  
Antiguo 26-05-2003
Fr@n Fr@n is offline
Registrado
 
Registrado: may 2003
Posts: 8
Poder: 0
Fr@n Va por buen camino
El session_start(); se tiene q poner en cada página ??? osea como ya he dixo antes tengo unas 6 páginas aproximadamente... con variables cada una de ellas... todas las tengo q empezar con
<?
session_start();
...
...
?>

??????????????

Gracias de toas maneras...
Responder Con Cita
  #5  
Antiguo 26-05-2003
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Si lo unico que quieres es mantener el valor de una variable no te lies con sesiones y utiliza una "cookie" mira la funcion "setcookie"
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #6  
Antiguo 26-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Hola kayetano

Yo no es que sea un guru del PHP, todo lo cantrario, tambien empiezo ahora, pero creo que las sesiones le funcionaran seguro, en cambio, las cookies, si el cliente las tiene desactivadas, no va a funcionarle. Es cierto lo que digo?
Responder Con Cita
  #7  
Antiguo 26-05-2003
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
En cada pagina que vayas a utilizar los valores guardados en las variables de sesion, si, tienes que poner el session_start()
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #8  
Antiguo 26-05-2003
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
hola cadetill

Si no recuerdo mal cuando se crea una sesion lo primero que hace php es crear una cookie, en caso de que no pueda arrastra el ID de la sesion por metodo GET ( si no recuerdo mal :-) )

Por lo tanto hay que tener en cuenta los pro y los contra.

Con una cookie es mas rapido y menos lioso, una vez creada la cookie, ya no hay que hacer nada mas, podemos acceder a ella con el nombre de la variable o a traves de $HTTP_COOKIE_VARS, y la mayoria de usuarios tienen activa la opcion de cookies.

Por otro lado una sesion hay que iniciarla, con lo que crea una cookie y mantenerla ( session_start() en cada pagina ).

Esto, claro, hablando de una unica variable, cuando se trata de estructuras yo me decanto por la sesion.

La verda es que yo uso las dos modalidades y funcionan perfectamente, ya que nadie se a quejado todavia :-).
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #9  
Antiguo 26-05-2003
Fr@n Fr@n is offline
Registrado
 
Registrado: may 2003
Posts: 8
Poder: 0
Fr@n Va por buen camino
Puedes explicarme como puedo hacerlo por el método de cookies ???? gracias... pon un ejemplo plis!!
Responder Con Cita
  #10  
Antiguo 26-05-2003
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
Creo que el manejo de los estados de sesion es independiente de la implementacion del lenguaje de scripting, ya sea PHP o ASP, y en ambos casos para utilizar variables de sesion es necesario que el usuario tenga habilitadas las cookies, por la forma de funcionamiento de la tecnologia de sesion.

Esta lo que hace es copiar un valor en la maquina del cliente (con cookies), lo que llamamos ID de session (SessionID), y con ese valor puede identificar cada peticion en el servidor, y guardar valores correspondientes a X peticion entre las paginas del mismo dominio.

No se si php se valga de algun algoritmo especial, como ocultar ese valor en algun campo oculto añadido a las paginas o algo asi. En ASP.NET solucionaron ese problema de una forma elegante, y es pasando el id de la sesion siempre en el querystring, de tal forma que cada peticion queda de la forma:

http://www.dominio.com/valoresqueide...io/pagina.aspx

siendo "valoresqueidentificanlasesion" una cadena identificadora unica para el visitante. Es muy poco elegante (visualmente) pero terrificamente poderosa, y con una sencillez en cuanto al desarrollo envidable (cero preocupacion por habilitar cookies ni nada de eso)
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #11  
Antiguo 26-05-2003
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Hola.

El tema de las sessiones y las cookies son para cosas totalmente distintas y nada tienen que ver unas con otras, intento explicarme.

La session como su nombre indica, es para mantener "la conexión con el usuario", por ejemplo para mantener un carrito de la compra con los productos seleccionados, sus importes y la información que precisemos mantener en esa session y que PHP se encarga de guardar en un fichero en el servidor.

Por el contrario, las cookies se guardan como todos sabemos en el cliente, y generalmente se utilizan para que al establecer un primer contacto con el servidor, podamos leer de ellas de que usuario se trata, con ello podemos establecer sus preferencias o simplemente no obligar al usuario a tener que identificarse cada vez que acude a nuestra aplicación.

Ambas cosas son muy útiles, pero cada cosa está pensada para una utilidad distinta.

El cómo usarlas ya está explicado por ahí y no creo necesario repetirlo.

Saludos
Emilio.
Responder Con Cita
  #12  
Antiguo 27-05-2003
Fr@n Fr@n is offline
Registrado
 
Registrado: may 2003
Posts: 8
Poder: 0
Fr@n Va por buen camino
Unhappy

Segun he ido leyendo el caso que debería utilizar es el de las Sesiones..., Tengo tres paginas, de las cuales index.php es la principal, login.php es un validador, y menu.php, que es donde finaliza si se ha logueado correctamente... el problema q tengo esq me decíis que tengo que poner el session_start(); en cada pagina... si hago esto la variable $var, pierde su valor de la pagina index.php a login.php, puesto q las dos tienen el session_start()... si elimino el session_start(); de la segunda, la variable pasa, pero en la tercera pagina ( menu.php ), la variable pierde su contenido...

Y este es el problema que llevo investigando desde hace ya un tiempo... No lo entiendo, para contrastar opiniones he dedicado tiempo en viajar por varios foros, y en muchos me dicen q el session_start(); solo se debe poner en la 1ª pagina... pero como ya he dicho antes, a la tercera pagina no le llega el contenido de la variable... Estoy confundido...
Responder Con Cita
  #13  
Antiguo 27-05-2003
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

X Emilio
Siento llevarte la contraria Emilio pero las cookies sirven para mucho mas que eso que tu cuentas. En una cookie se puede guardar un valor en una pagina y recuperarlo en cualquier otra durante el tiempo que este activo el navegador o durante mas tiempo. Y vuelvo a repetir que es un metodo valido cuando se trata de una simple variable y con una caducidad corta.

Con esto no quiero decir que sea mejor que una sesion, si no que es una alternativa en unos casos muy puntuales.

Queda claro que una sesion no es una cookie y que una sesion sirve para mucho mas que una simple cookie, como el ejemplo del corrito.

Yo suelo utilizar las cookies en las webs que llevan varios idiomas, defino el idioma que desea el usuario y lo mantengo tanto timpo como quiera en la cookie y me sirve tanto en la ejecucion actual de la pagina como en posteriores.

X Fran
Una vez que creas una sesion con no es necesario que pongas al principio de cada pagina esa instruccion, solo debes ponerla en las paginas en las que quieras usar las variables de sesion, me explico:

Pongamos el caso de que tenemos tres paginas, en la primera creamos una sesion y guardamos unos valores, estos valores son necesarios en la tercera pagina pero no en la segunda, por lo tanto solo tendras que poner "session_start()" en la primera y en la tercera, pero no es necesario en la segunda.

Por lo tanto y resumiendo una vez creada una sesion, esta no se destruye hasta que no cierres el navegador por lo que no es necesario que pongas en todas las paginas el famoso "session_start", simplemente tienes que ponerlo cuando quieras acceder a las variables de sesion. Y muy importante, hay que ponerlo antes de mandar cualquier otra cabecera.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente

Última edición por kayetano fecha: 27-05-2003 a las 10:13:26.
Responder Con Cita
  #14  
Antiguo 27-05-2003
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 23
__hector Va por buen camino
Aqui vuelvo...

Cita:
Posteado originalmente por hector
En cada pagina que vayas a utilizar los valores guardados en las variables de sesion, si, tienes que poner el session_start()
Hice enfasis en un inicio en que el session_start() debe incluirse obligatoriamente "en cada pagina que vayas a utilizar los valores guardados en las variables de sesion". Es logico que no tienes que modificar todas las paginas del sitio, pero SI en las que emplees dichos valores, pq esa instruccion sirve para inicializar los datos de una sesion.

Ahora bien, si estas probando php sobre IIS es muy probable que no te funcione. Por que?, pues ni yo mismo lo se, y tuve una vez ese problema: los datos de la sesion no se guardaban correctamente. Creo que habia que modificar algo en el archivo php.ini, pero como siempre que lo subia a produccion (sobre linux/apache) funcionaba sin problemas, pues no segui investigando.

Ahora, con respecto al punto debatido con Emilio y kayetano, me sirvo hacer esta cita textual extraída del manual de php (traducido al español):

Cita:
Hay dos formas de propagar un "session id":

Cookies
Parámetro en la URL

El módulo de sesiones admite ambas formas. Las Cookies son la mejor opción, pero como no son fiables (los clientes no están obligados a aceptarlas), no podemos confiar en ellas. El segundo método incrusta el "session id" directamente en las URLs.

PHP es capaz de hacerlo de forma transparente al usuario cuando se compila con --enable-trans-sid. Si activa esta opción, las URIs relativas serán modificadas de forma que contengan el session id automáticamente. Alternativamente, puede usar la constante SID que está definida, si el cliente no envía la cookie adecuada. El SID puede tener la forma de nombre_de_sesion=session_id o ser una cadena vacía.
De esto se entiende que la sesion siempre utilizara al menos una cookie, para guardar en el cliente el ID de la sesion, y poder asociar valores de servidor -> valores hacia el cliente.

La otra alternativa vendria como una solucion mas o menos parecida a la que se implementa en ASP.NET, que es utilizar un identificador de sesion en la URL. Cada uno aborda este punto de forma diferente, y en php vendria de la forma:

http://www.dominio.com/pagina.php?PH...ificanlasesion
__________________
Héctor Geraldino
Software Engineer

Última edición por __hector fecha: 27-05-2003 a las 15:17:46.
Responder Con Cita
  #15  
Antiguo 27-05-2003
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola a todos

Hace tiempo que no veia in hilo de PHP tan concurrido y tan animado .

Quiero puntualizar que el arrastrar el id de la sesion en la url es algo peligroso.

En la empresa en la que trabajo, entre otras cosas, damos el servicio de "posicionamiento en buscadores", o como se llame, y una de las cosas importantes que hay que tener en cuenta es que las URL's cuanto mas limpias mejor y si se mete, como ya nos ha pasado alguna vez, un id de sesion en la url y el motor de busqueda ( ej. google ) coge esta direccion ¡YA LA HAS CAGADO!

Simplemente queria dar a conocer este punto, que no siempre se tiene en cuenta y normal mente es muy importante.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #16  
Antiguo 27-05-2003
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Hola de nuevo.

Es cierto que da gusto ver que se va moviendo el foro de PHP, aunque sea para llevarme la contraria

Vamos al grano. Todas las páginas que hago para la aplicación de la empresa empiezan de la siguiente forma....

Código PHP:
<?
   session_start
();
   
session_register("aguan");
   
session_register("apeich");
   
session_register("agromenaguer");
   include(
"header.php");
   .
   .
?>
Y jamás pierdo un valor por mucho que salte de página en página. Por mi parte zanjado el tema de las sesiones.

Kayetano, dices que sientes llevarme la contraria. Lo cierto es que no veo que discrepemos demasiado, comentas, que las cookies sirven para mucho más, de lo que yo digo que se puede hacer con ellas. Yo digo, y mantengo, que las cookies son ficherillos en el cliente, en los que podemos guardar ciertos valores, que tengamos más o menos pericia para hacer más o menos cosas con ellas, ya no dependen de ellas,´sino de nosotros.

Con las cookies podemos hacer cosas que no podemos hacer con las sesiones, por ejemplo guardar como por ahí comentas, el idioma, la resolución de pantalla, el navegador, fecha de última visita, nombre del usuario etc.... así podemos cargar sus preferencias en SESSION y mantenerla durante su estancia en el servidor.

Ahora bien, dices....

Cita:
En una cookie se puede guardar un valor en una pagina y recuperarlo en cualquier otra durante el tiempo que este activo el navegador o durante mas tiempo.
Totalmente de acuerdo en lo que dices, pero.. jeje tenía que haber un pero

Pero es mucho mejor usar las sesiones para cualquier cosa que no sea lo citado anteriormente, las cookies únicamente deberían usarse al cargar la primera página, es decir, al iniciar la sesión.

Seguro que le sacas punta y me parece perfecto así le damos vidilla al foro de PHP.

Saludos
Emilio.
Responder Con Cita
  #17  
Antiguo 28-05-2003
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Creo que el tema ya se ha explicado demasiado, y sera mejor dejar de profundizar en el puesto que es muy posible que llegemos a confundir a amigo FRAN que fue el iniciador el hilo.

Espero que haya sido de utilidad este hilo para todos. Y que cada uno saque sus propias conclusiones.

La programacion no es una ciencia es un arte, y como tal cada uno lo interpreta como quiere.

PD. "session_register" lleva implicita la llamada a session_start
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente

Última edición por kayetano fecha: 28-05-2003 a las 10:06:34.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:23:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi