Foros del Web » Programando para Internet » PHP »

problemas con el envío de variables?

Estas en el tema de problemas con el envío de variables? en el foro de PHP en Foros del Web. Saludos Siguiendo con las consultas... En mi formulario de inicio de sesión(en el frame central), al ingresar nick y pass, y aceptar, se recarga la ...
  #1 (permalink)  
Antiguo 07/09/2005, 14:51
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
problemas con el envío de variables?

Saludos

Siguiendo con las consultas...
En mi formulario de inicio de sesión(en el frame central), al ingresar nick y pass, y aceptar, se recarga la pág, adicionalmente, envío algunos datos a otro frame(izq), estó con una función js.
<form action="central.php" target="cen"...>
...
// el js está en el <head>
function asesion(){
document.iniciar.submit();
top.izq.location='barrafotos1.php?usr=<?php echo $usr; ?>&c=<?php echo $carpeta; >';
}

En el frame de la izquierda, tengo, para la captura de las variables,
if ($_REQUEST['usr']) {
$_SESSION['usuario']=$_REQUEST['usr'];
$usuario=$_SESSION['usuario'];
} elseif ($_POST['usr']) {
$_SESSION['usuario']=$_POST['usr'];
$usuario=$_SESSION['usuario'];
} else {
$usuario=$_SESSION['usuario'];
}

La razón, es que los datos vienen de diferentes pág en diferentes momentos, según lo que esté haciendo el usuario. Sin embargo, quiero verificar que las variables estén llegando, y lo hago con un simple <?php echo "Usuario: ".$usuario ?>

Tengo sendos datos que viajan y son recibidos de la misma forma... pero, los datos lelgan a veces si y a veces no (será caché?), o, peor aún, llegan unos si y otros no!!!

Hay algo que esté haciendo mal?

Gracias de una
__________________
Gracias de todas todas
-----
Linux!
  #2 (permalink)  
Antiguo 07/09/2005, 15:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Esas variables que ya tienes en tu sesión:
$_SESSION['usuario'] y las otras ... Deberías leerlas directamente en tus otros scripts que cargas en otros frames de tu frame-set. Es decir .. al hacer tu login y crear tus variables de sesiones lo único que deberías hacer es mandar a recargar tus otros frames (con javascript) .. no pasarle por el URL datos que ya tienes en tus sesiones .. además que se supone que son "sensibles" (no querras que alguien los altere?).

En resumen ... el procedimiento sería:

1) Tu X.frame.central.php ... ahí tu formulario lo envias a su respectivo script de proceso.php .. (o si mismo .. como gustes).
2) Registras tus variables de sesión.
3) Vía javascript recargas todos los restantes scripts que componen tu frame-set. C

Cada script que se ejecuta en tu frame-set .. tan sólo verificas tus variables de sesión con:

Código PHP:
if (empty($_SESSION['usuario'])){
// haces lo que tengas que hacer si no existe tu variable de sesión .. supongo que
exit; // terminas la ejecución del script
}
// lo que corresponda si existe esa variable de sesión . .no hace falta el "else" bajo esta estructura. 
Todo el resto de datos que traspasas entre frames .. es muy probable que puedas usar la misma sesión para que ahí viajen esos datos también y menos propagar en el URL, de esta manera aseguras tus datos, ahorras trasnferencia y ganas en simpleza de código. Recuerda que las sesiones no sólo existen para temas de "validación" o "autentificación" .. usalas en la medida de lo posible en el resto de tu aplicación.

Un saludo,
  #3 (permalink)  
Antiguo 08/09/2005, 06:15
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
ok... he estado probando... pero, dónde está la (mi?) falla, pues, cargo cada una de las variables con
if ($_REQUEST['usr']) {
$_SESSION['usuario']=$_REQUEST['usr'];
$usuario=$_SESSION['usr'];
}

y luego las leo, en los otros frames con
$usuario=$_SESSION['usuario'];
$carpeta=$_SESSION['carpeta']; //por ejemplo

pruebo mostrar con un simple echo, dos variables y sólo me muestra $usuario...

En todas las págs, tengo en el encacbezado de php, session_start();
__________________
Gracias de todas todas
-----
Linux!
  #4 (permalink)  
Antiguo 08/09/2005, 06:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
if ($_REQUEST['usr']) {
$_SESSION['usuario']=$_REQUEST['usr'];
$usuario=$_SESSION['usr'];
}

No sé por qué haces $usuario=$_SESSION['usr']; .. si ya defines $_SESSION['usuario'] .. Si en ese mismo script que tienes ese código necesitas usar ese valor de $_REQUEST['usr'] .. usalo directamente o haz:
$usuario=$_REQUEST['usr'] ..

Las variables de sesión no tiene validez (o quedan registrados sus valores reales) hasta la próxima petición al servidor de uno de tus scripts o si mismo (= recarga de página, llamar a otro script .. etc).

A todo esto no se vé (por qué pusistes el código demasiado resumido) si haces un session_start() antes de pretender acceder a tus variables de sesión .. si no lo haces o el SID (Identificador único de sesión) lo pierdes o no lo propagas correctamente .. nunca podrás acceder a tus variables de sesión registradas.

Un saludo,
  #5 (permalink)  
Antiguo 08/09/2005, 07:21
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
ok...

$_REQUEST['usr'], es producto de que el valor lo tomo de la recarga de la misma pág; datos que provienen del formulario que permite iniciar sesión en el sitio.

la asigno a $_SESSION['usuario'] para tenerla globalmente y en todas las págs, incluyendo frames (obio, también son págs)

la asigno a $usuario, por simple pereza, para escribir menos...

el valor de esa(s) variable(s), lo necesito en la misma pág (script) y en otras... va y viene...

En cuanto a si pongo o no el session_start(), en el psot anterior, decía al final, que en todas las págs lo tengo, al principio del código php, y no necesariamente seguido de la toma o asignación con $_SESSION...
__________________
Gracias de todas todas
-----
Linux!
  #6 (permalink)  
Antiguo 08/09/2005, 07:30
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
De hecho, puedo acceder, pero sólo auna de las variables de session! es lo que más me tiene de cabeza!

<?php
session_start();
$usuario=$_SESSION['usuario'];
$clave=$_SESSION['clave'];
echo "Usuario: ".$usuario."Clave: ".$clave;
?>

sólo me muestra $usuario
__________________
Gracias de todas todas
-----
Linux!
  #7 (permalink)  
Antiguo 08/09/2005, 08:10
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
y ahora confirmo, que la asignación $usuario=$_SESSION['usuario']; está en el FAQs, o sea, que debe ser el procedimiento correcto, o no?
__________________
Gracias de todas todas
-----
Linux!
  #8 (permalink)  
Antiguo 08/09/2005, 11:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Que "FAQ?" mencionas concretamente?

Donde le das valor a $_SESSION['usuario']; ??. Si una variable puedes obtener su valor (de las de sesión) significa que donde generas el valor para la otra variable tienes el problema. Indica el código completo que usas (con las últimas modificaciones) y revisa las asignaciones que haces.

Un saludo,
  #9 (permalink)  
Antiguo 08/09/2005, 13:01
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Hey, de entrada, gracias por el tiempo que dedicas, eh?

En el índice temático de FAQs de ésta misma web, aparecen 2 temas sobre sesiones, a la que me he referido es la "5. Como guardo y leo una variable de sesión." (http://www.forosdelweb.com/showthrea...998#post238998)

Por otr lado, creo, que le doy el valor a $_SESSION['usuario']; en
if ($_REQUEST['usr']) {
$_SESSION['usuario']=$_REQUEST['usr'];
$usuario=$_SESSION['usr'];
}

El código, donde genero el valor de las variables es:
<?php
include("../pages/includes/funciones.php");
session_start();
$album=$_REQUEST['album'];
$ci=$_REQUEST['ci'];
$carpeta=$_REQUEST['c'];
$cod=$_REQUEST['cod'];
$foto=$_REQUEST['f'];
if ($_REQUEST['usr']){
$_SESSION['usuario']=$_REQUEST['usr'];
}
if ($_REQUEST['cla']) {
$_SESSION['clave']=$_REQUEST['cla'];
$clave=$_SESSION['clave'];
}
?>
Luego tengo
<html>
<head>
<script LANGUAGE="JavaScript">
function asesion(){
if (document.iniciar.usr.value == '') {
alert ('Nick vacío');
} else {
if(document.iniciar.cla.value == '') {
alert ('Contraseña vacía');
} else {
document.iniciar.submit();
top.izq.location='barrafotos1.php?ci=<?php echo $ci; ?>&c=<?php echo $carpeta; ?>&sc=<?php echo $sc; ?>&album=<?php echo $album; ?>';
top.der.location='detallefoto1.php?f=<?php echo $foto; ?>&c=<?php echo $carpeta; ?>&sc=<?php echo $sc; ?>&album=<?php echo $album; ?>&cod=<?php echo $cod; ?>&s=<?php echo $_REQUEST['s']; ?>';
}
}
return null;
}
</script>
</head>
<body>
<table>
<tr>
<td><br><br>
<?php
$cod=$_REQUEST['cod'];
$_SESSION['usuario']=$_REQUEST['usr'];
$usuario=$_SESSION['usuario'];
echo "Usuario: $usuario<br>clave: $clave<br>Local: $f_a[scategoria]<br>Foto Nº: $cod";
}
?>
</td>
</tr>
</table>

Hasta aqui, todo bien, se cargan las 2 variables que cargo con $$_SESSION. Se puede ver en el js, que recargo la pág, y además, recargo 2 frames adicionales, que tienen:
<?php
include ("../pages/includes/funciones.php");
session_start();
$sc=$_REQUEST[sc];
$album=$_REQUEST[album];
$usuario=$_SESSION['usuario'];
$clave=$_SESSION['clave'];
echo "Usuario: ".$usuario."Clave:".$clave;
?>

y el frame de la derecha:
<?php
include ("../pages/includes/funciones.php");
session_start();
?>
<html>
<head>
<?php
$album=$_REQUEST[album];
$sc=$_REQUEST[sc];
$usuario=$_SESSION['usuario'];
$clave=$_SESSION['clave'];
?>
<body>
<?php
echo "Usuario: ".$usuario." Clave: ".$clave;
?>

en el frame central, se cargan las variables bien. En los frames izq y der, sólo se carga la variable $usuario...

Pendientes,
__________________
Gracias de todas todas
-----
Linux!
  #10 (permalink)  
Antiguo 08/09/2005, 14:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Insisto que deberías poner todos tus scripts -compleeeeeeeeeetos!!!- ..

por ejemplo .. aquí:
if ($_REQUEST['usr']) {
$_SESSION['usuario']=$_REQUEST['usr'];
$usuario=$_SESSION['usr'];
}

no sé vé si haces session_start() antes de pretender usar $_SESSION .. HACE FALTA! si o si que lo uses .. sino -noooo- registras nada en esa variable de sesión!. (de hecho parece que es tu "segundo" código que expones donde pertenece ese código extraido .. ahí no tienenes "session_start()".

Sigo sin comprender para que haces "$usuario=$_SESSION['usr'];" no le veo sentido ..

No sé si alcanzas a comprender que es una sesión o que es simplemente $_SESSION, te comento para que lo veas claro que es no es más que una "variable" pero que viaja en forma de array/arreglo/matriz .. donde el "indice" de ese array ($_SESSION) es tu nombre de "variable de sesión".

Y lo dicho .. muchas por no decir la mayoría de variables que propagas por el URL con esos redireccionamientos javascript los prodrías simplificar si creas más variables de sesión con esas variables y las lees en todos los scripts de tu frame-set cuando corresponda simplemente recargandolos (NO enviando datos por el URL).

Un saludo,
  #11 (permalink)  
Antiguo 08/09/2005, 15:47
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Vale... estoy de acuerdo en que el uso de variables SESSION es preferible que pasarlas por URL, apenas resuelva este pequeñin, las paso toditas por SESSION... prometido!!!

Ahora, quieres el código completo, no cabe!!!: (ojo, no todo el código es hecho por mi, aprte del trabajo estaba empezado... eso es lo que me duele, estar leyendo un código ajeno, ahí medio lo estoy "arreglando")

frame central = medio5.php
frame izquierdo = barrafotos.php (obviado por lo largo)
frame derecho = detallefoto.php

frame central:
Código PHP:
<?php
  
include("../pages/includes/funciones.php");
  
session_start();
  
$album=$_REQUEST['album'];
  
$ci=$_REQUEST['ci'];
  
$carpeta=$_REQUEST['c'];
  
$sc=$_REQUEST['sc'];
  
$cod=$_REQUEST['cod'];
  
$foto=$_REQUEST['f'];
  
$ses=$_REQUEST['s'];
  if (
$_REQUEST['usr']){ $_SESSION['usuario']=$_REQUEST['usr']; } 
  else { 
$usuario=$_SESSION['usuario']; }
  if (
$_REQUEST['cla']) {
    
$_SESSION['clave']=$_REQUEST['cla'];
    
$clave=$_SESSION['clave'];   }
  if (
$priv==0) { $privado=true; }
  else { 
$privado=false; }
 
$r_a=ejecutar("select album.*,scategorias.scategoria from
    scategorias,album where 
    album.id_album=$album and 
    album.id_scategoria=scategorias.id_scategoria and 
    album.activar=1"
);
  
$f_a=pg_fetch_array($r_a,NULL,PGSQL_ASSOC);
  
$sc=$f_a[id_scategoria];
  list(
$ano,$mes,$dia)=split("-",$f_a[fecha],3);  
?>
Código HTML:
<html>
<head>
<script LANGUAGE="JavaScript">
    function enviar(){ document.c.submit(); }
    function afoto(){
      window.open('privado.php?cod=<?php echo $cod ?>&usuario=<?php echo $usuario ?>&sc=<?php echo $sc; ?>&c=<?php echo $carpeta; ?>',"Privado","width=350,height=150,scrollbars=NO,left=350,top=30 0");
    }
    function consultar(){
      parent.izq.location.href=('barrafotos1.php?usuario=<?php echo $usuario; ?>&c=<?php echo $carpeta; ?>&sc=<?php echo $sc; ?>&album=<?php echo $album; ?>&v=<?php echo $val="1" ?>');
    }
    function asesion(){
      if (document.iniciar.usr.value == '') { alert ('Nick vacío'); }
      else { 
         if(document.iniciar.cla.value == '') { alert ('Contraseña vacía'); } 
           else {
              document.iniciar.submit();
              top.izq.location='barrafotos1.php?ci=<?php echo $ci; ?>&c=<?php echo $carpeta; ?>&sc=<?php echo $sc; ?>&album=<?php echo $album; ?>';
              top.der.location='detallefoto1.php?f=<?php echo $foto; ?>&c=<?php echo $carpeta; ?>&sc=<?php echo $sc; ?>&album=<?php echo $album; ?>&cod=<?php echo $cod; ?>&s=<?php echo $_REQUEST['s']; ?>';
            }
        }
        return null;
    }
    function fsesion() {
      <?php session_unset(); ?>
      top.location.href="galeriapers.php";
    }
  </script>
</head>
<body>
<table>
  <tr>
    <?php
      $sesion=$_REQUEST['s'];
      if (empty($sesion)) { echo "Usuario: Invitado<br>Local: $f_a[scategoria]<br>Foto Nº: $cod"; }
     else {
        session_start();
        $cod=$_REQUEST['cod'];
          if ($_REQUEST['usr']){
            $_SESSION['usuario']=$_REQUEST['usr'];
            $usuario=$_SESSION['usuario'];
          } else {
            $usuario=$_SESSION['usuario'];
          }
          echo "Usuario: $usuario<br>clave: $clave<br>Local: $f_a[scategoria]<br>Foto Nº: $cod";
        }
    ?>
    </td>
  </tr>
  <tr>
    <?php
        $clave_enc=md5($clave);
        $q_consulta="SELECT * FROM album_personal WHERE usuario='$usuario' AND clave='$clave_enc' AND activo='1'";
        $r_consulta=pg_query($q_consulta);
        $c_consulta=pg_num_rows($r_consulta);
        $f_consulta=pg_fetch_array($r_consulta);
        if ($c_consulta==0) {
          $sesion=session_id();
    ?>
    <td>Iniciar Sesión
    <form action="./medio5.php" method="POST" name="iniciar">
        <table>
          <tr><td>Nick:</td></tr>
          <tr><TD>
              <input type="text" name="usr">
              <INPUT type="hidden" name="cod" value="<?php echo $cod; ?>">
              <INPUT type="hidden" name="s" value="<?php echo $sesion; ?>">
              <INPUT type="hidden" name="album" value="<?php echo $album; ?>">
              <INPUT type="hidden" name="c" value="<?php echo $carpeta; ?>">
            </TD>
          <TR><TD>Contraseña:</TD>
          </TR>
          <TR><TD><INPUT type="password" name="cla"></TD>
            <TD><a href="#" onclick="javascript: asesion();"><img src="../img-galeria/okbtn.gif"></a></TD><td></td>
          </tr>
        </table>
        </form><?php  } else { ?>
    <td>Mi Album
      <FORM name="guardar_foto" method="POST" target="_top">
        <table>
          <tr><td>Agregar Foto:  </td>
            <td><a href="#" onclick="javascript:afoto();"><img src="../img-galeria/okbtn.gif"> </a></td><td></td>
          </tr>
        </table>
      </form> 
    </td>
  </tr>
  <tr>
    <td>
      <FORM action="" name="guardar_amigo" method="POST" target="_top">
        <table>
          <tr><td>Agregar Amigo:  </td>
            <td><a href="javascript:aamigo();"><img src="../img-galeria/okbtn.gif"   ></a></td>
          </tr>
        </table>
      </form>
    </td>
  </tr>
  <tr>
    <td>
      <FORM name="consultar" target="_top">
        <table>
          <tr><td>Consultar Mi Album: </td>
            <td><a href="javascript:consultar();"><img src="../img-galeria/okbtn.gif"> </a></td>
          </tr>
        </table>
      </form>
    </td>
  </tr>
  <tr>
    <td>
      <FORM name="fsesion" method="POST" target="_top">
        <table>
          <tr><td>Finalizar Sesión:  </td>
            <td><a href="javascript:fsesion();"><img src="../img-galeria/okbtn.gif"></a></td> </tr>
        </table>
      </form>
    </td>
    <?php } ?>
  </tr>
</table>
</body>
</html> 

frame derecho:
Código PHP:
<?php
  
include ("../pages/includes/funciones.php");
  
session_start();
?>
<html>
<?php
  $album
=$_REQUEST[album];
  
$sc=$_REQUEST[sc];
  
$c=$_REQUEST[c];
  
$cod=$_REQUEST[cod];
  
$f=$_REQUEST[f];
  
$q_f="select * from fotos where id_album='$album' and activar=1 order by numero asc";
  
$r_f=pg_query($q_f);
  
session_start();
  
$usuario=$_SESSION['usuario'];
  
$clave=$_SESSION['clave'];
  
$num=pg_num_rows($r_f);
  for(
$j=0;$j<$num;$j++){
    
$f_ids=pg_fetch_array($r_f,NULL,PGSQL_ASSOC);
    
$id[$j]=$f_ids[id_foto];
    
$img[$j]=$f_ids[img];
  }
  for(
$i=0;$i<$num;$i++){
    if(
$cod==$id[$i]){
      
$ant=$id[$i-1];
      
$sig=$id[$i+1];
      if(!empty(
$ant)){
        
$ope=$i-1;
        
$anterior="medio5.php?album=$album&f=$img[$ope]&sc=$sc&c=$c&cod=$ant";$_SESSION['usuario'];
        
$ant="detallefoto1.php?album=$album&f=$img[$ope]&sc=$sc&c=$c&cod=$ant";              
      }else
        
$ant="";
      if(!empty(
$sig)){
        
$ope=$i+1;
        
$siguiente="medio5.php?album=$album&f=$img[$ope]&sc=$sc&c=$c&cod=$sig";$_SESSION['usuario'];
        
$sig="detallefoto1.php?album=$album&f=$img[$ope]&sc=$sc&c=$c&cod=$sig";
      }else    
$sig="";
    }
  }
?>
<body>
<?php
echo "Usuario: ".$usuario.$clave;
$archivo="../../fotos/$sc/$c/$f";
if(
file_exists($archivo)&&!empty($f)){
  
$p=getimagesize($archivo);
  if(
$p[1]>$p[0]){
  
//Vertical
?>
  <table>
    <tr><td><img src="<?php echo $archivo?>"></td><td></td>
    </tr>
    <tr><td>ID: <?php echo $_REQUEST[cod]; ?></td>
    </tr>
    <tr><td>
      <?php        
        session_start
();
        if(!empty(
$ant))
         echo 
"<a href=\"$ant\" onclick=\"top.cen.location='$anterior'\"><img src=\"../img-galeria/backbtn.gif\" width=\"44\" height=\"35\" border=\"0\"></a>";$_SESSION['usuario'];
      
?>
      </td>
      <td>
      <?php    
        session_start
();
        if(!empty(
$sig))
          echo 
"<a href=\"$sig\" onclick=\"top.cen.location='$siguiente'\"><img src=\"../img-galeria/nextbtn.gif\" width=\"44\" height=\"35\" border=0></a>";$_SESSION['usuario'];
      
?>
      </td>
    </tr>
  </table>
  <?php
      
//Horizontal
  
}else{
  
?>
  <table>
    <tr><td><img src="<?php echo $archivo?>"></td>
    </tr>
  </table>
  <table>
    <tr><td>ID: <?php echo $_REQUEST[cod]; ?></td>
    </tr>
<td>
      <?php
        
if(!empty($ant))
    echo 
"<a href=\"$ant\" onclick=\"top.cen.location='$anterior'\"><img src=\"../img-galeria/backbtn.gif\" width=\"44\" height=\"35\" border=\"0\"></a>";$_SESSION['usuario'];
      
?>
      </td>
      <td>
      <?php
        
if(!empty($sig)) 
          echo 
"<a href=\"$sig\" onclick=\"top.cen.location='$siguiente'\"><img src=\"../img-galeria/nextbtn.gif\" width=\"44\" height=\"35\" border=0></a>";$_SESSION['usuario'];
      
?>
      </td>
    </tr>
  </table>
  <?php    
  
}
}
?>
</body>
</html>
__________________
Gracias de todas todas
-----
Linux!

Última edición por Cluster; 08/09/2005 a las 15:54
  #12 (permalink)  
Antiguo 08/09/2005, 16:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Como bien dices .. el código es bien extensio . .muyyyy enrevesado con tanto frame .. en fin .. no alcanzo a leerlo del todo.

Pero esto es lo que no comprendo para que lo usas:
Código PHP:
if ($_REQUEST['usr']){ $_SESSION['usuario']=$_REQUEST['usr']; } 
  else { 
$usuario=$_SESSION['usuario']; } 
  if (
$_REQUEST['cla']) { 
    
$_SESSION['clave']=$_REQUEST['cla']; 
    
$clave=$_SESSION['clave'];   } 
  if (
$priv==0) { $privado=true; } 
  else { 
$privado=false; } 
y bueno .. por otro lado tienes otro tremendo lio:
Código PHP:
<?php
      $sesion
=$_REQUEST['s'];
      if (empty(
$sesion)) { echo "Usuario: Invitado<br>Local: $f_a[scategoria]<br>Foto Nº: $cod"; }
     else {
        
session_start();
        
$cod=$_REQUEST['cod'];
          if (
$_REQUEST['usr']){
            
$_SESSION['usuario']=$_REQUEST['usr'];
            
$usuario=$_SESSION['usuario'];
          } else {
            
$usuario=$_SESSION['usuario'];
          }
          echo 
"Usuario: $usuario<br>clave: $clave<br>Local: $f_a[scategoria]<br>Foto Nº: $cod";
        }
    
?>
NO uses "if ($_ALgunavariable['tal']) .." en su defecto usa empty() o isset() ..
Si el objetivo de eso es determinar si tal página está un usuario autentificado o no .. basate en la existencia de $_SESSION['usuario'] (con empty()) en primer lugar. Y crea scripts de validación independientes donde valides a tu usuario si pasó por su login (autentificación) creando las variables de sesión, simplificaras el código.

No sé .. mas no te puedo orientar .. realmente está lioso (sin probar el código funcionando ni saber que ha de hacer) como para hacerse una idea de "como debería funcionar" y ver "como está funcionando".

Un saludo,
  #13 (permalink)  
Antiguo 09/09/2005, 06:03
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
ok... entonces, me dices que, si voy a utilizar la variable, por ejemplo, $_SESSION['usuario'] 5 veces, a cada una la tengo que encabezar con session_start() ?

Mi problema no tiene mucho que ver con lo enredado del código, sino con el uso de las variables $_SESSION...
__________________
Gracias de todas todas
-----
Linux!
  #14 (permalink)  
Antiguo 09/09/2005, 06:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por cacr
ok... entonces, me dices que, si voy a utilizar la variable, por ejemplo, $_SESSION['usuario'] 5 veces, a cada una la tengo que encabezar con session_start() ?

Mi problema no tiene mucho que ver con lo enredado del código, sino con el uso de las variables $_SESSION...
No, ..

session_start() se usa para inicializar el uso de sesiones, se usa una vez sólo por script al principio del mismo (o por lo menos antes de cualquier salida que origine ese script como HTML/echo "algo" .. etc).

------------
Cita:
Mi problema no tiene mucho que ver con lo enredado del código, sino con el uso de las variables $_SESSION...
Si te mencioné que el código es enredado es por qué cambias muchas veces de variables .. haces muchas asignaciones a las mismas variables, yo ahí me pierdo y creo que ahí tienes el problema, por qué con otras variables de sesión obtienes sus valores .. lo cual significa que en principio tus sesiones funcionan (se propaga el SID .. etc) correctamente.

Un saludo,
  #15 (permalink)  
Antiguo 09/09/2005, 13:07
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
vale vale... amigo cluster, antes que nada, debo agradecerte tu dedicación!

Fijate que he hecho cambios significativos. en la pág que llama los frames tengo,
Código PHP:
<?php
include ("../pages/includes/funciones.php");
session_start();
$_SESSION['ci']=1;
$_SESSION['album']=291;
$r_a=listar("select * from album where id_album=$album and activar=1","No existe albums con esos parámetros.");
$f_a=pg_fetch_array($r_a,NULL,PGSQL_ASSOC);
$r_f=ejecutar("select img,id_foto from fotos where id_album=$album and activar=1 order by numero asc limit 1");
$f_f=pg_fetch_array($r_f,NULL,PGSQL_ASSOC);
$_SESSION['carpeta']=$f_a[carpeta];
$_SESSION['id_foto']=$f_f[if_foto];
?>
el html de la misma pág
Código HTML:
<html>
<frameset rows="*" cols="177,*">
  <frame src="barrafotos2.php name="izq">
  <frameset rows="*" cols="140,*">
    <frame src="medio6.php name="cen">
    <frame src="detallefoto2.php name="der">
  </frameset>
</frameset>
<noframes><body>
</body></noframes>
</html> 
Luego tengo en cada uno de los frames,
Código PHP:
<?php
  
include ("../pages/includes/funciones.php");
  
session_start();
  echo 
"id de sesión: ".session_id();
  echo 
"Album: ".$_SESSION['album']."id foto: ".$_SESSION['id_foto'];
?>
El valor del session_id() me lo muestra en lso 3 frames, pero las variables,$_SESSION['album'] y $_SESSION['id_foto'] sólo funciona para los frames izq y cen, para el frame der no.

Por otro lado, tengo en los frames izq y der, los siguientes warning,

Warning: session_start(): Cannot send session cache limiter - headers already sent...

Warning: Cannot modify header information - headers already sent by...

Entiendo que para el primer warning, es un problema de acceso a la carpeta /tmp donde se almacenan las variables de sesión... pero, las está mostrando, parcialmente al menos...
__________________
Gracias de todas todas
-----
Linux!
  #16 (permalink)  
Antiguo 09/09/2005, 14:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y el SID (identificador de sesión) es el mismo en todos? (debe ser el mismo).

Cita:
Warning: session_start(): Cannot send session cache limiter - headers already sent...

Warning: Cannot modify header information - headers already sent by...

Entiendo que para el primer warning, es un problema de acceso a la carpeta /tmp donde se almacenan las variables de sesión... pero, las está mostrando, parcialmente al menos...
No, .. el error se origina por qué usas "session_start()" despues de haber usado algo de HTML/un espacio antes de <? .. o despues de ?> si llamas por include() a otros scripts.

Revisa el código de:
include ("../pages/includes/funciones.php");

Y fijate bien donde acaba tu script con su último ?> que no tengas espacios ni saltos de línea.

Si quieres ver mejor donde tienes el error debes indicar el error concreto TEXTUAL, por qué ahí se dice que script origina el problema y hasta la línea.

Un saludo,
  #17 (permalink)  
Antiguo 09/09/2005, 14:25
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
nada, los warning eran porque estaba mal ubicado el session_start(); y faltaba en otro pedacito de código...

Ahora, con respecto a que las variables se cargan en un sólo frame y en los otros no, a excepción del SID, (sí, son los mismos en los 3 casos), en el frame izq era mal leidas. Pero en el frame der, luego de revisar, siguen sin salir, a excepción del SID.

Tengo, en cada uno de los frames(para verificar que fueron los datos reales, y el funcionamiento de las variables session) y al principio de los scripts,
<?php
include ("../pages/includes/funciones.php");
session_start();
echo "id de sesión: ".session_id();
echo "Album: ".$_SESSION['album']." id foto: ".$_SESSION['id_foto']." Ciudad: ".$_SESSION['ci']." Carpeta: ".$_SESSION['carpeta']." id_sc: ".$_SESSION['sc'];
?>

En el frame der, no llegan, ninguna...
__________________
Gracias de todas todas
-----
Linux!
  #18 (permalink)  
Antiguo 09/09/2005, 14:43
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Cita:
Iniciado por Cluster
Y el SID (identificador de sesión) es el mismo en todos? (debe ser el mismo).
sip

Cita:
Iniciado por Cluster

Revisa el código de:
include ("../pages/includes/funciones.php");

Y fijate bien donde acaba tu script con su último ?> que no tengas espacios ni saltos de línea.

Un saludo,
Revisado...
__________________
Gracias de todas todas
-----
Linux!
  #19 (permalink)  
Antiguo 09/09/2005, 15:32
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
vale... me encontré con un js que tenía php embebido y tenía un espacio.

sigo revisando pues queda una variable que no pasa...

Pendientes
__________________
Gracias de todas todas
-----
Linux!
  #20 (permalink)  
Antiguo 10/09/2005, 10:35
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
ok... pasaron todas.

Ahora, en el frame cen está eñ formulario que permite iniciar una sesión por parte de un usuario registrado, esto está más o menos así...
Código HTML:
<script LANGUAGE="JavaScript">
function asesion(){
      if (document.iniciar.usr.value == '') {
        alert ('Nick vacío');
      } else {
          if(document.iniciar.clv.value == '') {
            alert ('Contraseña vacía');
          } else {
              document.iniciar.submit();
							alert("Hola <?php session_start(); echo $_SESSION['usuario']; ?>");
              top.izq.location='barrafotos2.php';
              top.der.location='detallefoto2.php';
            }
        }
        return null;
    }
</script></head> 
[PHP]
<?php
session_start();
if (!empty ($_POST['usr'])) { // campo $usr del formulario
$_SESSION['usuario']=$_POST['usr'];
}
if (!empty($_REQUEST['clv'])) { // campo $clv del formulario
$_SESSION['clave']=$_REQUEST['clv'];
}
?><body>formulario</body>

Pregunta, al hacer click para iniciar sesión, en este frame, se cargan las variables, pero, éstas no pasan, de hecho, pareciera que las demás variables, en los frames izq y der, se resetearan.

En el frame der, muestra las variables vacías. En el frame izq, además de mostrar las variables vacías, salta:
Warning: Cannot modify header information - headers already sent by (output started at /home/www/quehiciste.com/site/final/quehiciste/prosite/galeria/barrafotos2.php:4) in /home/www/quehiciste.com/site/final/quehiciste/prosite/pages/includes/funciones.php on line 458

en donde, las primeras 4 líneas de barrafotos estan compuestas por,
<?php
include ("../pages/includes/funciones.php");
session_start();
echo "Usuario: ".$_SESSION['usuario']."Album: ".$_SESSION['album']." id foto: ".$_SESSION['id_foto']." Ciudad: ".$_SESSION['ci']." Carpeta: ".$_SESSION['carpeta']." id_sc: ".$_SESSION['sc'];

y las línea 458 de funciones.php, se refiere al resultado de una consulta, donde lee la variable $_SESSION['album'].
__________________
Gracias de todas todas
-----
Linux!
  #21 (permalink)  
Antiguo 10/09/2005, 13:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ya te mencioné en mensajes anteriores que NOOOOOO puedes usar session_Start() antes de envio de HTML/javascrit/un espacio .. etc antes de <? ...

No sé por qué haces:
Código PHP:
                    alert("Hola <?php session_start(); echo $_SESSION['usuario']; ?>");
              top.izq.location='barrafotos2.php';
Si te fijas bien como funciona "PHP" en general .. este lo que hace es pre-procesar (de ahí su nombre de sus siglas) en el servidor la página que generas para tu "Cliente" (navegador) .. por ende, si te digo que session_start() ha de esta -antes- de cualquier "Salida" (se considera como salida a todo lo que ya te he comentado) .. NO pongas el session_Start() ahí .. hazlo tipo:

nose.php
Código PHP:
<?
session_start
()
?>
<html>
<head>
<script LANGUAGE="JavaScript">
function asesion(){
      if (document.iniciar.usr.value == '') {
        alert ('Nick vacío');
      } else {
          if(document.iniciar.clv.value == '') {
            alert ('Contraseña vacía');
          } else {
              document.iniciar.submit();
                            alert("Hola <?php echo $_SESSION['usuario']; ?>");
              top.izq.location='barrafotos2.php';
              top.der.location='detallefoto2.php';
            }
        }
        return null;
    }
</script></head>
<body>
bablabla si coresponde ...
<?
// más PHP si corresponde y acceso a $_SESSIOn si lo requieres ...
?>
</body>
</html>
Un saludo,
  #22 (permalink)  
Antiguo 12/09/2005, 07:59
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
vale vale, eso era sólo por provar por qué no viajaban las variables al hacer el submit... que por cierto era porque tenía el session_unset() y session_destroy() dentro de este script, que pensé que por estar en otro js no se ejecutaría hasta invocarlo...
__________________
Gracias de todas todas
-----
Linux!
  #23 (permalink)  
Antiguo 12/09/2005, 08:31
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Ahora... en el alert no se muestra la vaiable de session...
__________________
Gracias de todas todas
-----
Linux!
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 14:55.