Foros del Web » Programando para Internet » PHP »

Problemas con mi session en Php 5

Estas en el tema de Problemas con mi session en Php 5 en el foro de PHP en Foros del Web. Hola.. Pliss ayuda... tengo un problema con las sesiones en php 5 miren tengo 3 archivos ...son los sigtes 1.- el index.php - muestro el ...
  #1 (permalink)  
Antiguo 04/07/2006, 16:22
 
Fecha de Ingreso: junio-2006
Mensajes: 3
Antigüedad: 17 años, 10 meses
Puntos: 0
Problemas con mi session en Php 5

Hola..
Pliss ayuda...
tengo un problema con las sesiones en php 5
miren tengo 3 archivos ...son los sigtes

1.-
el index.php - muestro el form de acceso usuario y clave
en el formulario tengo esto:
<form action="valida.php" method="POST">
aca es donde valido el usuario

2.-
el valida.php
si el usuario existe en la base creo la session asi:
if ..... {
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: mipaginasegura.php");
exit; }
y lo direcciono a mipaginasegura.php

3.-
el mipaginasegura.php
al principio de todo veo si existe la sesion asi:

session_start();
if ($_SESSION["autentificado"] != "SI")
{
header("Location: index.php");
exit();
}
si no existe la variable de sesion direcciona a index.php..

el problema es ke no hace nada ni error ni nada de nada..loke me fije es ke la variable en $_SESSION["autentificado"] en mipaginasegura.php no tiene valor por eso se va a index.php...
-por que no tiene valor ?, que me falto por hacer ?, asi no se usa en php 5?..

Ayuda por favoooor...
gracias..
  #2 (permalink)  
Antiguo 04/07/2006, 16:49
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 19 años, 5 meses
Puntos: 1
Que tal eveliz30, yo no pondria el session_start() dentro de un if lo colocaria al inicio de las paginas por que si anterior a eso hay etiquetas html te arroja un warning revisa eso y cambia el session_start al inicio de las paginas primero que todo de todas formas no esta de más, otra cosita tu primer exit; no tiene parentesis el del if no se para que lo utilices pero revisa eso tambien . Espero que te sirva.. Saludos
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #3 (permalink)  
Antiguo 05/07/2006, 05:46
 
Fecha de Ingreso: julio-2006
Mensajes: 5
Antigüedad: 17 años, 10 meses
Puntos: 0
Buenas eveliz30

La solucion a tu problema es el siguiente, ya que yo lo tengo así y funciona muy bien.

Crea un fichero php,llamese control.php
Este fichero debe estar al principio de cada página que quieras controlar por sesion.

Código PHP:
<? include ("control.php"); ?>
P.Ej: Puede que necesites controlar que solo puedan entrar a un formulario si está autenticado pero no hace falta que lo esté para ver una página de créditos.

Si esto queda claro vamos a ver el contenido del fichero:

Código PHP:
<?php
//Inicio la sesión
     
session_start();
//Aqui controlo que no haya cookies maliciosos ni antigüos
     
session_set_cookie_params(0"/"$_SERVER["HTTP_HOST"], 0); 
//Comprueba que el usuario no está  autentificado
     
if ($_SESSION["Autentificado"] != "SI")
      {
//si no existe, envio a la página de autentificacion
       
header("Location: Index.php");
 
//ademas salgo de este script
       
exit();
      }
//Si está autentificado pones aqui lo que sea si precisa
// Yo tengo puesto un control de tiempo
// Si pasado un tiempo no hay actividad, destruye la sesion y redirige a pagina principal
// .....
// y aqui acaba el fichero
?>
Espero que te sirva

Última edición por Cluster; 05/07/2006 a las 06:33
  #4 (permalink)  
Antiguo 05/07/2006, 06:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
el problema es ke no hace nada ni error ni nada de nada..loke me fije es ke la variable en $_SESSION["autentificado"] en mipaginasegura.php no tiene valor por eso se va a index.php...
-por que no tiene valor ?, que me falto por hacer ?, asi no se usa en php 5?..
Deberías asegurarte como propagas el SID (Identificador único de sesión) .. Si no lo especificas ni sabes que es dicho término entonces "asumes" que propagas el SID en cookies, por ende dependes de que tu navegador acepte dichas cookies y que PHP esté configurado para propagar el SID en cookies .. pues si lo haces por el URL (forzado en configuración de PHP) PHP no va a insertar el SID en redireccionamientos como los que hacer por header() de tipo "Location".

Revisa tu configuración de PHP:

Para propagar el SID en cookies debes usar:
session.use_trans_sid = OFF
session.use_cookies = ON
session.use_only_cookies = ON

También revisar donde PHP genera los archivos de sesiones:
session.save_path = un directorio de tu servidor que exista y tenga permisos de escritura.

Del lado del "cliente" debes revisar:
1) tu navegador que acepte cookies (el "nivel de seguridad" de navegadores como IE afectan a que tipo de cookies se aceptan .. revisalo).
2) que ningún antivirus, firewall, proxy u otro tipo de software esté bloqueando esas cookies.

En general lo que pretendo hacer incapié con mi respuesta es que se -DEBE- saber como PHP hace la "magia" para que las sesiones funcionen .. principalmente por qué se ha de "propagar" un "dato" (el SID) para que PHP sepa que "sesión" y que "cliente" (navegador) está usandola .. esa "relación" cliente-servidor para la sesión lo hace por médio del nunca bien ponderado: SID .. Si ese dato no se consigue hacer llegar a un script (por el URL propagado o en una COOKIE) que use sesiones (por eso usamos "session_Start()" para indicar que pretendemos acceder a variables de sesión en ese código/Script), los datos de la sesión "aparentemente" se pierden .. pero lo que realmente se ha perdido no son los datos que siguen estando en el servidor por el tiempo de vida que duren (que define session.gc_maxtimelife directiva de php.ini al respecto) .. lo que se "pierde" es el SID. PHP en un script al usar "session_Start()" lo que hace es "buscar" ese SID en una cookie o en el URL .. si no lo encuentra: genera otro SID (otra sesión) ..

Espero que quede claro el tema .. es parte fundamental del uso de sesiones conocer estos conceptos para "saber" por qué en "tales condiciones" funcionan las sesiones y otras no. Tanto para echarle la culpa al "servidor" (PHP y su configuración) como al "cliente" (navegador y configuración sobre todo a nivel de cookies).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 05/07/2006, 06:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por pepitoperez1
Buenas eveliz30

La solucion a tu problema es el siguiente, ya que yo lo tengo así y funciona muy bien.

Crea un fichero php,llamese control.php
Este fichero debe estar al principio de cada página que quieras controlar por sesion.

Código PHP:
<? include ("control.php"); ?>
P.Ej: Puede que necesites controlar que solo puedan entrar a un formulario si está autenticado pero no hace falta que lo esté para ver una página de créditos.

Si esto queda claro vamos a ver el contenido del fichero:

Código PHP:
<?php
//Inicio la sesión
     
session_start();
//Aqui controlo que no haya cookies maliciosos ni antigüos
     
session_set_cookie_params(0"/"$_SERVER["HTTP_HOST"], 0); 
//Comprueba que el usuario no está  autentificado
     
if ($_SESSION["Autentificado"] != "SI")
      {
//si no existe, envio a la página de autentificacion
       
header("Location: Index.php");
 
//ademas salgo de este script
       
exit();
      }
//Si está autentificado pones aqui lo que sea si precisa
// Yo tengo puesto un control de tiempo
// Si pasado un tiempo no hay actividad, destruye la sesion y redirige a pagina principal
// .....
// y aqui acaba el fichero
?>
Espero que te sirva
Para "redondear" tu ejemplo .. te faltó mencionar parte importate referente a como "propagas el SID" (como en mi anterior mensaje comenté ya).

A su vez .. ya que "ajustas" algunas propiedades de la cookie que PHP va a generar (por ende "asumes" que propagas el SID en cookies) .. no estaría de más "forzar" a PHP para que propague el SID en cookies y así completar tu ejemplo. Esto lo puedes hacer vía funcion ini_set() (y así no depender de la configuración puntual de php.ini de cada servidor)

más info:
www.php.net/ini_set
(se trata de usar o mejor dicho forzar el estado de las directivas de PHP que mencioné antes).

También se puede ajustar esta configuración a nivel php.ini o .htaccess u otros médios más "generales" para todo script que corra en ese servidor o lugar concreto y así no tener que ir colocando dicho código en todos los scripts de PHP (además que hay ciertas configuraciones de PHP que no se pueden alterar por ini_set())

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 05/07/2006, 08:31
 
Fecha de Ingreso: junio-2006
Mensajes: 3
Antigüedad: 17 años, 10 meses
Puntos: 0
gracias a todos

Hola a todos
gracias por sus respuestas , ahora todo funKA LINDO!!
eso sii cambie algunas cositas en el php.ini

Adios..
Saludos.
  #7 (permalink)  
Antiguo 05/07/2006, 11:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por eveliz30
Hola a todos
gracias por sus respuestas , ahora todo funKA LINDO!!
eso sii cambie algunas cositas en el php.ini

Adios..
Saludos.
Podrías comentar que "cositas" cambiastes (por si alguien está en tu misma situación) y comentar como al final propagas el SID (supongo que por cookies).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 16/08/2007, 18:49
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
Re: Problemas con mi session en Php 5

hoal me pasa lo mismo con php 4.4.4 el tema es que tengo un script que si actualizo mi archivo archivoSeguro.php me redirecciona funcionando perfecta la autentificacion, pero en otro script no me funca me que da en el mismo archivo sin redireccionar..porque pudelelgar a ser ?
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #9 (permalink)  
Antiguo 15/10/2007, 12:33
 
Fecha de Ingreso: octubre-2003
Ubicación: La Paz - Bolivia
Mensajes: 116
Antigüedad: 20 años, 7 meses
Puntos: 1
Re: Problemas con mi session en Php 5

Hola yo tambien tengo problemas con php5 que cosas hay quer cambiar en la configuracion de php.ini por favor agradeceria su respuesta

Graciass....
__________________
"El viento puede soplar fuerte, pero la montaña no lo reverencia"
  #10 (permalink)  
Antiguo 07/11/2007, 07:11
Avatar de tricampeon27  
Fecha de Ingreso: enero-2007
Ubicación: Macul
Mensajes: 300
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Problemas con mi session en Php 5

esto nesecito entender yo que me pede ayudar , ya cree un tema con esto, y no logro hacer que me funcione
__________________
*****Si Hasta En La Cana X Ti Estado*****
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 18:31.