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 29-09-2007
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Manejo de sesiones

Bueno compañeros tengo 5 dias aprendiendo lo esencial de php y he aprendido algunas cosas, pero al llegar a esto de las sesiones tope con pared, alguien sabe como pasar las sesiones de un html a un PHP y viceversa por la url, ya lei suficienet informacion pero en ningun lado veo un ejemplo, quisiera versi alguien me puede poner u pequeño ejemplo de como crearla y enviarla y estando en la siguiente pagina como recuperarla, es algo parecido a lo que hace los servlets y el Jsp pero no doy con bola se le agradece a quien me pueda ayudar de antemano gracias que tengan buena tarde
Responder Con Cita
  #2  
Antiguo 29-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cuando dices "pasar sesiones a través de una URL"... pareciera que más bien te estás refiriendo a pasar variables y valores, no sesiones, propiamente dichas. Las sesiones, si no me equivoco, no se guardan en el cliente, sino en el propio servidor, y puedes acceder a una sesión valiéndote de la variable global "$_SESSION", y tienes varias funciones para trabajar con estas, como pueda ser "session_start()".

En cuanto a pasar variables y valores a través de una URL... la cosa es más o menos sencilla. Suponiendo esta URL:

Código:
http://www.sitioweb.com/script.php?nombre=Manolo&apellido=Monegros
El archivo "script.php" recibiría dos variables a través de la URL a las que puede accederse mediante la variable global "$_GET", o "$_REQUEST". El asunto quedaría más o menos así:

Código PHP:

if(isset($_GET['nombre']){
  echo 
'La variable nombre vale: ' $_GET['nombre'];

__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 29-09-2007
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
sip asi es las sesiones se guardan en el servidor pero por lo que he leido en el cliente se guarda el id de la sesion ya sea en cookies o se pasa por la url, pero dicen que en cookies n oes recomendable por que algunos n oaceptan cookies ademas de quedar grabado el id de sesion en la maquina del cliente otra dicen que para pasarlo por la url esta a la vista de todos cuando se pasa jeje osea que com ose hace de todos modos gracias moderador le echare un ojo a las direcciones que me diste para ver que puedo aprender
Responder Con Cita
  #4  
Antiguo 29-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Efectivamente, parece que el ID de una sesión puede guardarse en una Cookie o pasarse a través de la URL. Lo que ignoro ahora mismo es si esto es transparente al programador, es decir, si en caso de no estar disponibles las Cookies, automáticamente se usa la URL para pasar el ID de una sesión.

Pero, también hay que distinguir entre el ID de una sesión y las variables y valores que una sesión puede guardar. No estoy muy puesto, pero, pareciera que el ID no es siempre necesario. Uno puede acceder desde la variable global "$_SESSION" a variables y valores de una sesión, sin necesidad de utilizar el ID de la misma.

Respecto de pasar variables y valores mediante URLs... efectivamente, son datos que pueden verse, pero, por lo general algo así se usa para pasar datos no comprometedores, como pueda ser el número de registros que quieran listarse en una página determinada, o el tipo de orden de ciertos registros... nunca contraseñas, por ejemplo, o datos sensibles en todo caso.

Pero, lo mismo que usamos la URL para pasar variables y valores (método HTTP GET) podemos usar un formulario que traspase dichas variables y valores a través de HTTP POST. De este modo nos llegarán al Script de la misma forma: en lugar de la variable global "$_GET", nos fijaremos ahora en "$_POST", y, en todo caso, los datos ya no viajarán en la URL.

Es decir, siguiendo con el ejemplo anterior:

Código PHP:

<form action="script.php" method="POST">
 <
input type="text" name="nombre" />
 <
input type="text" name="apellido" />
 <
input type="submit" />
</
form
Ahora a "script.php" nos llegarían las variables "nombre" y "apellido" mediante HTTP POST, en lugar de HTTP GET. Pero... reconozco que me pierdo un poco con esto de las sesiones en PHP, por lo que te aconsejo que eches un vistazo al manual de PHP... (disponible en línea) a las funciones relacionadas con el trabajo con sesiones.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 29-09-2007 a las 01:10:49.
Responder Con Cita
  #5  
Antiguo 01-10-2007
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Gracias moderador echare un vistazo
Responder Con Cita
  #6  
Antiguo 01-10-2007
betiitooo betiitooo is offline
Miembro
 
Registrado: sep 2007
Ubicación: chilpancingo, guerrero. mexico
Posts: 18
Poder: 0
betiitooo Va por buen camino
Efectivamente PHP tiene dos formas para dar continuidad a una sesion. 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, etc. El segundo método es incrustar 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.

<A HREF="siguiente_pagina.php?<?php echo SID?>">aqu&iacute;</A>.


Se asume que las URLs no relativas apuntan a sitios web externos, y por tanto no se añade el SID, ya que pasar el SID a un servidor diferente podría ocasionar un agujero de seguridad.
Responder Con Cita
  #7  
Antiguo 01-10-2007
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Cita:
Empezado por betiitooo Ver Mensaje
Efectivamente PHP tiene dos formas para dar continuidad a una sesion. 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, etc. El segundo método es incrustar 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.

<A HREF="siguiente_pagina.php?<?php echo SID?>">aqu&iacute;</A>.


Se asume que las URLs no relativas apuntan a sitios web externos, y por tanto no se añade el SID, ya que pasar el SID a un servidor diferente podría ocasionar un agujero de seguridad.

Muchas gracias betito pero lo que me escribes no se cuanats veces lo he leido que devo de modificar el php.ini, el problema al que real mente me enfrento es que cuando paso de un form a una pagina puedo recuperar el id de sesion y el nombre de usuario que lo escribio en un imput, al querer hacer esto para mandarlo a otra pagina el id de sesion y el usuario los pierdo y no entiendo por que gracias.
Responder Con Cita
  #8  
Antiguo 01-10-2007
semptrion semptrion is offline
Miembro
 
Registrado: abr 2007
Posts: 112
Poder: 18
semptrion Va por buen camino
El tema de las sesiones

Me parece bien que te documentes antes de utilizar "lo que todo el mundo" ya que un exceso de confianza puede resulta en serios problemas a la larga.

El administrador de sesiones de php intenta transferir en id de la sesión tanto por cookies (puaj!) como por get, automáticamente.

Si no esta haciéndolo, puedes hacerlo tu directamente. Por ejemplo, cuando el usuario se conecta, creas un número de sesión y lo transfieres en cada una de tus peticiones get.

1. Para crear el número de sesion:
Código PHP:
$idSession md5uniqidrand() ) * microtime()); 
2. Creas la sesión con ese número
Código PHP:
session_id$idSession ); 
3. Transfieres a la siguiente mediante get.
Código PHP:
echo '<a href="foo.php?idSession=' $idSession ' title="etc">Tócame</a>'
Es decir, todas tus anclas deberán enviar el idSession. Lo mismo cuando haces solicitudes Post.
4. Recibes lo enviado y abres la siguiente sesión.
Código PHP:
$idSession $_GET['idSession']; 
Obviamente si $idSession está vacía, entonces te vas al paso 1. Sino, directamente al paso 2.

Hasta ahí es lo que puedes hacer para crear, enviar y recibir el id de una sesión sin dramas. Eso sí, es en extremo laborioso el tema.

Hace años, en amazon incluian el número de sesión en el url pero no como una variable get, sino como parte de la ruta. Me explico mejor. Supongamos que generas el siguiente número de sesión:

8a1baa671439cbbc56a613ebb4f111f6

mediante el método que acabo de explicarte, tus urls se verían así como:

http://www.example.com/foo.php?idSes...a613ebb4f111f6
Incluyendo en la ruta se vería algo así como:

http://www.example.com/8a1baa671439c...f111f6/foo.php

De todas formas se envía el número de sesión en el url pero de una forma más sútil.

Con el PHP y el apache se puede lograr esto utilizando el mod_rewrite de apache.

El mod_rewrite te permite analizar y modificar las peticiones al servidor web, transformándolas on the fly, cambiando servidores, rutas, recursos o variables. Eso ya depende de lo que querramos. En este caso queremos cambiar una ruta.

En el mismo directorio donde se encuentran nuestros programas php, crearemos un archivo llamado .htaccess

Este archivo contendrá reglas acerca de cómo transformar la solicitud y ponerla de una manera más usable.

Código:
RewriteRule ^([0-9A-Za-z]{32})/(.*)$ $2?idSession=$1 [QSA]
La primera parte le da una regla para que reescriba el url (rewriterule)
Luego, mediante expresiones regulares indica que encuentre la primera combinación de 32 letras y caracteres (variable 1) y todo lo que sigue (variable 2) y que la reescriba colocando primero la variable 2 y como parámetro la variable 1.

Sea (nuevamente) el siguiente url:

http://www.example.com/8a1baa671439c...f111f6/foo.php

El mod rewrite analiza la siguiente solicitud:

8a1baa671439cbbc56a613ebb4f111f6/foo.php

donde la variable 1 se establece como

8a1baa671439cbbc56a613ebb4f111f6

y la variable 2 como

/foo.php

Y rearma la solicitud como:

http://www.example.com//foo.php?idSe...a613ebb4f111f6

que ya es algo que conocemos.

Si todavía sigues aquí, debo aclararte que insertar la sesión en la ruta se realiza una sola vez, y que una vez insertada, ya se queda en todas las demás peticiones sin necesidad que tu alteres tus anclas o tus formularios post.

Para insertar el id de sesión en el url modificaremos ligeramente el paso 1.

Código PHP:
 $idSession md5uniqidrand() ) * microtime());
header'Location: http://www.example.com/' $idSession '/foo.php' ); 
Bueno. Esto es lo que puedo ayudarte en el breve tiempo que disponemos. Espero sea de utilidad.

Un abrazo.
Responder Con Cita
  #9  
Antiguo 01-10-2007
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
muchas gracias semptrion seguire tus consejos luego posteo como me fue mil gracias por tu tiempo
Responder Con Cita
  #10  
Antiguo 04-10-2007
Avatar de tazzmk
tazzmk tazzmk is offline
Miembro
 
Registrado: sep 2007
Posts: 45
Poder: 0
tazzmk Va por buen camino
hola como se llama es script
en donde esxite una pagina llamada descargas

solo puede acceder al contenido si a iniciado sesion
como se puede hacer eso?

porfavor algun ejemplo completo, ya que cuando veo la variable $sesion_start no tengo idea como se usa ni donde se pone
Responder Con Cita
  #11  
Antiguo 04-10-2007
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
Cita:
Empezado por tazzmk Ver Mensaje
hola como se llama es script
en donde esxite una pagina llamada descargas

solo puede acceder al contenido si a iniciado sesion
como se puede hacer eso?

porfavor algun ejemplo completo, ya que cuando veo la variable $sesion_start no tengo idea como se usa ni donde se pone

Hola hermano veo que empiezas a aprender PHP hace unos dias estaba igual que tu (creo que ya avanze un poco) esta pagina es muy buena aqui aclare un poco de mis dudas http://edgarjs.wordpress.com/2007/04...siones-en-php/ espero y te sirva y lo de llamar a otras paginas PHP como no encontre la solucion jeje pues lo hago con javascript
<SCRIPT LANGUAGE="javascript">
location.href = "Menu.php";
</SCRIPT>
esto lo puedes incrustar en codigo PHP claro tienes que cerrar y abrir las etiquetas correspondientes para cada tipo y funciona bien ya que la sesion se propaga entre paginas usando la variable $_Session[var] espero y te sirve saludos

Última edición por richy08 fecha: 04-10-2007 a las 16:14: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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
manejo de arbol de contenidos y manejo se sonido y video Buelos Internet 4 09-07-2007 14:52:45
Sesiones en PHP dieleo PHP 2 21-06-2007 13:40:04
TidHTTPServer y sesiones Val Internet 0 08-03-2007 19:13:49
Sesiones David PHP 6 01-03-2007 00:18:48
Sesiones en PHP... Tanix PHP 2 11-08-2003 15:02:50


La franja horaria es GMT +2. Ahora son las 11:10:18.


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