Foros del Web » Programando para Internet » PHP »

tomar el valor de un sesion en otra pagina

Estas en el tema de tomar el valor de un sesion en otra pagina en el foro de PHP en Foros del Web. Lo que quiero hacer es, tomar el valor de la sesión en otra página que no haya creado la seción. Cuando quiero utilizar el valor ...
  #1 (permalink)  
Antiguo 29/04/2003, 22:14
 
Fecha de Ingreso: agosto-2002
Mensajes: 22
Antigüedad: 22 años, 3 meses
Puntos: 0
tomar el valor de un sesion en otra pagina

Lo que quiero hacer es, tomar el valor de la sesión en otra página que no haya creado la seción. Cuando quiero utilizar el valor de la sesión me tira como vacío. Voy a la carpeta donde se guardan los archivos de seción y contiene el valor de la sesión.

/* logueo.php */
session_start();
$_SESSION['usu'] = mysql_result($sql, 0, "usuario");
>

/* pantalla.php */
echo $_SESSION['usu'] ;
  #2 (permalink)  
Antiguo 29/04/2003, 22:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
en "pantalla.php" debes de INICIAR el uso de sessiones via:

Código PHP:
session_start();
echo 
$_SESSION['usu']; 
Siempre que uses sessiones (bien sea para definir alguna variable en la session o bien para leerla o cualquier otro tipo de acción sobre las sessiones) debes iniciar el uso de sesiones con session_start()

... Revisa en el manual de PHP oficial el tema del SID y demas teoría sobre sesiones.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 29/04/2003, 23:55
Avatar de davidMS  
Fecha de Ingreso: abril-2003
Ubicación: Chepe
Mensajes: 202
Antigüedad: 21 años, 6 meses
Puntos: 0
Tambien esto depende del servidor, por ejemplo si es un Apache, si en el archivo de configuracion se encuentra el valor "session_autostart=1", entonces iniciando la session en un solo archivo no tenes que hacerlo en los demas....

Saludos
  #4 (permalink)  
Antiguo 30/04/2003, 12:27
 
Fecha de Ingreso: agosto-2002
Mensajes: 22
Antigüedad: 22 años, 3 meses
Puntos: 0
Provee lo que me digiste pero no me funciona, tendre que confifurar algo en el "php.ini".

/*logueo.php */
<?php
session_start();
$_SESSION['usu'] = mysql_result($sql, 0, "usuario");
$_SESSION['cla'] = mysql_result($sql, 0, "clave");
$_SESSION['cod'] = mysql_result($sql, 0, "cod_cargo");
$_SESSION['cargo'] = mysql_result($sql2, 0, "cargo");
?>

/* pantalla.php */
<?php
session_start();
echo $_SESSION['usu'];
?>
  #5 (permalink)  
Antiguo 30/04/2003, 13:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pero .. entre logueo.php y pantalla.php .. como accedees ? .. por un link en logueo.php .. redireccion? o como ?

Te recomiendo que leas este mensaje:
http://www.forosdelweb.com/showthrea...hreadid=127983

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 30/04/2003, 13:35
 
Fecha de Ingreso: agosto-2002
Mensajes: 22
Antigüedad: 22 años, 3 meses
Puntos: 0
De logueo.php a pantalla.php paso mediante header. Te paso los scripts completos:

/* logueo.php */
<?php
$u = $_POST["usuario"];
$c = $_POST["clave"];
include("conexion.php");
$sql = mysql_query("select * from usuarios where usuario = '$_POST[usuario]' and clave = '$_POST[clave]'");
$sql2 = mysql_query("select cargo from cargos where cod_cargo = '$_SESSION[cod]'");
if(mysql_num_rows($sql) <> 0 & $u == mysql_result($sql, 0, "usuario") & $c == mysql_result($sql, 0, "clave")){
session_start();
if (!isset($_SESSION['usu'])) {
$_SESSION['usu'] = mysql_result($sql, 0, "usuario");}
header("Location: pantalla.php");}
else{
echo "<center>El nombre de usuario y/o clave son incorrectas. Haz clic ".
"<a href='http://localhost/comunicaciones'>aquí.</a><br>".
"<br>El sistema distingue mayúsculas y minúsculas</center>";}
mysql_close($con);
?>

/* pantalla.php */
<html>
<head>
<title></title>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<link href="../estilo.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width='75%' height='297' border='1' align='center' cellpadding='0' cellspacing='0'>
<tr align='center' valign='middle'>
<td height='69' colspan='3' class='titulo'>
<?php
session_start();
if (session_is_registered("usu")){
echo $_SESSION['usu'];}
else{
echo "No esta registrada".$usu;}
?>
</td>
</tr>
<tr align='center' valign='middle'>
<td width='33%' height='26'><a href='pantalla.php?o=b' class='texto'>Bandeja
de entrada</a></td>
<td width='33%'><a href='pantalla.php?o=m' class='texto'>Mensajes</a></td>
<td width='33%'><a href='pantalla.php?o=n' class='texto'>Notas</a></td>
</tr>
<tr align='center' valign='middle'>
<td height='200' colspan='3' class='texto'>
<?php
if(isset($_GET['o'])){
if($_GET['o'] == 'b'){
include('bandeja.php');}
if($_GET['o'] == 'm'){
include('cargos.php');}
if($_GET['o'] == 'n'){
include('notas.php');}
}
else{
session_start();
echo "Bienvenido";}
?>
</td>
</tr>
</table>
</body>
</html>
  #7 (permalink)  
Antiguo 30/04/2003, 13:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pues si no usas session.use_cookies = ON (o 1) en tu php.ini o lo ajustas en tiempo de ejecución via ini_set() como comento en el link del mensaje que te dí .. Parece que estas perdiendo el SID por el camino.

Revisa esa directiva en tu php.ini y lee mas afondo todo el tema del SID y su propagación en el manual oficial de PHP (empieza por el mensaje que te puse .. )

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 30/04/2003, 13:55
 
Fecha de Ingreso: agosto-2002
Mensajes: 22
Antigüedad: 22 años, 3 meses
Puntos: 0
me aparece esto:

http://localhost/comunicaciones/scri...3d1803620a37d7
  #9 (permalink)  
Antiguo 30/04/2003, 14:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pues si te aparece eso .. ahí ya se está propagando el SID .. pero al hacer tu header("location: ") no se está propagando el SID .. Las directivas de PHP NO reescriben ese tipo de funciones añadiendo el SID como así lo hacen el LINKs o formularios ..

Y ya te dije que revisaras las directivas de tu PHP.ini sobre el tema sessiones que tienen MUCHO que ver con el SID y su propagación .. el cual si en algun paso se "pierde" se inicia una nueva session (SID) y no tienen validez las variables que puedas tener en la "otra" sesión inciada.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 30/04/2003, 14:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Otro detalle:

Código PHP:
<?php
session_start
();
if (isset(
$_SESSION['usu'])){
echo 
$_SESSION['usu'];}
else{
echo 
"No esta registrada".$usu// ese $usu no tiene sentido .. si no está registra no tendrá valor ...
}
?>
Las funciones session_is_register() si lo has registrado usando el array superglobal $_SESSION .. tan solo tienes que preguntar si está declarada la variable como indice de ese array via isset() ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 30/04/2003, 14:07
 
Fecha de Ingreso: agosto-2002
Mensajes: 22
Antigüedad: 22 años, 3 meses
Puntos: 0
cuando pasa de logueo.php a pantalla.php me crea dos archivos de sesion, en la carpeta C:\PHP\sessiondata. Uno con los valores ingresados y otro sin valores. Cuando le doy que me imprima el id de la sesion (echo session_id();). Me imprime el id de la sesión que esta vacía. Osea que toma el archivo sin los datos.
  #12 (permalink)  
Antiguo 30/04/2003, 14:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
enadoque .. Todo eso ya te lo he dicho varias veces ..

Leistes yá como se ha de propagar el SID de forma manual? .. te distes cuenta que en header("location: tupagina.php") no va añadir PHP el SID aunque trabajes en modo automatico la propagación del sid ? .. Y si a eso le sumas que no usas propagación por cookie .. menos va a propagar el SID? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 30/04/2003, 14:16
 
Fecha de Ingreso: agosto-2002
Mensajes: 22
Antigüedad: 22 años, 3 meses
Puntos: 0
le cree un link que dice: "Usuario logueo. Haz click aquí para ingresar". Por suerte funciona y te agradezco por preocuparte
  #14 (permalink)  
Antiguo 30/04/2003, 14:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Bueno .. veo q tirastes por la opción más "fácil" .. pero lo que he pretendido en estos tantos mensajes es enseñarte que hay ciertos <tag HTML> o formas de redirecionar que PHP nunca va a propagar el SID .. así q en esos casos particulares hay que hacerlo a mano ...

En tu caso solo era hacer:

Código PHP:
$sid=session_name()."=".session_id(); // Componemos el SID con el nombre de la sesion y su ID .. podriás usar SID como constante en lugar de esto ..
header("location: pantalla.php?$sid"); // haces tu redirección .. pero le pasas el SID a "mano". 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 30/04/2003, 14:28
 
Fecha de Ingreso: agosto-2002
Mensajes: 22
Antigüedad: 22 años, 3 meses
Puntos: 0
gracias con lo que me explicaste volví a utilizar el "header". Muchisimas gracias.
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:00.