Autor Tema: Problemas y pequeñas dudas con variables de $_session  (Leído 11155 veces)

0 Usuarios y 6 Visitantes están viendo este tema.

webcaz

  • Visitante
Problemas y pequeñas dudas con variables de $_session
« : julio 08, 2008, 02:42:26 pm »
Hola a todos la cosa esta así
tengo el siguietes codigo
Código: [Seleccionar]
<div id="acciones">
   <ul>
   <li><a href="amuarticulos.php" onclick="<?php $_SESSION['op']=1?>">Adicionar</a></li>
   <li><a href="#">Eliminar</a></li>
</ul>

bueno la situación es que yo quiero asignarle ese valor a la variable de sesion op, cuando doy click en el enlace y pues evaluarla en la pagina destino para hacer x cosa... pero no me lo asigna el valor, no se si es la forma correcta antes todo esto lo hacia x medio de paso de variables por url, pero qiero migrar todo esto ya a los estandares en el caso de q register_globals este en off a futuro...

Bueno de antemano gracias x quien se interese.. y si lo logro arreglar pues les aviso  ohyea:

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #1 : julio 08, 2008, 02:45:08 pm »
lo que tenes que hacer y no se si lo has hecho, esque al principio del documento tenes que abrir una session, para que las variables de session no se pierdan

webcaz

  • Visitante
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #2 : julio 08, 2008, 02:47:50 pm »
si lo siento no mencione eso, si ya lo hice en todos los archivos dond ocupo las variables incluyo un archivo en el cual valido que la session este arriba y sea valida... osea q el usuario este logeado, pero igual no me sale...  :sorry:

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #3 : julio 08, 2008, 02:52:52 pm »
mira.. lo que se me ocurre de momento es hacerlo con Javascript.... lo probe a si...


pagina1.php

Código: [Seleccionar]
<?php session_start() ?>
<html>
<head>
<script>
function setVar()
{
<?php $_SESSION['op'] = 1?>
location.replace("pagina2.php");
}
</script>
</head>

<body>
<a href='javascript: void(0)' onclick='setVar()'>Asignar Valor </a>
</body>

</html>




pagina2.php

Código: [Seleccionar]
<?php

session_start();

echo "El valor de la variable es ".$_SESSION['op'];

?>




No se si te parece esta alternativa...?   :)

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #4 : julio 08, 2008, 02:55:12 pm »
ahorita no estoy en mi casa asi que no tengo mi tesis a la mano, alli maneje sesiones y todo bien, pero lo unico que veo y que esta diferente a como lo ocupaba, pero quizas no es el caso, esque:

$_SESSION['op']=1; cambialo por
$_SESSION["op"]=1;

modificado: acabo de hacerlo yo, y da lo mismo, seguire buscando

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #5 : julio 08, 2008, 02:55:24 pm »
Hola a todos la cosa esta así
tengo el siguietes codigo
Código: [Seleccionar]
<div id="acciones">
   <ul>
   <li><a href="amuarticulos.php" onclick="<?php $_SESSION['op']=1?>">Adicionar</a></li>
   <li><a href="#">Eliminar</a></li>
</ul>

bueno la situación es que yo quiero asignarle ese valor a la variable de sesion op, cuando doy click en el enlace y pues evaluarla en la pagina destino para hacer x cosa... pero no me lo asigna el valor, no se si es la forma correcta antes todo esto lo hacia x medio de paso de variables por url, pero qiero migrar todo esto ya a los estandares en el caso de q register_globals este en off a futuro...

Bueno de antemano gracias x quien se interese.. y si lo logro arreglar pues les aviso  ohyea:

mmmm ok mira, creo que estas un poco confundido. Te voy a explicar.

PHP es un lenguaje de programación orientado a la creación de plantillas, que corre en el servidor.

¿que significa esto?... ok revisemos tu código:

Código: [Seleccionar]
<div id="acciones">
   <ul>
   <li><a href="amuarticulos.php" onclick="<?php $_SESSION['op']=1?>">Adicionar</a></li>
   <li><a href="#">Eliminar</a></li>
</ul>

Lo que tenes es un bloque de HTML, pero luego tenes un vínculo. Los vínculos se despliegan en el navegador cliente, pero antes de que suceda esto, PHP procesa el archivo .php y se encarga de ejecutar todo el código. En este caso tenes este comando:

Código: [Seleccionar]
<?php $_SESSION['op']=1?>

Esto se encargara de establecer en la variable de sesion $_SESSION['op'] el valor 1. Como no tenes ninguna llamada a la funcion echo.. significa que ese bloque de PHP no agregara nada al HTML, quedando el archivo enviado al cliente asi:

Código: [Seleccionar]
<div id="acciones">
   <ul>
   <li><a href="amuarticulos.php" onclick="">Adicionar</a></li>
   <li><a href="#">Eliminar</a></li>
</ul>

Como veras, el codigo que recibe el cliente, no hace nada, simplemente te envia a la pagina ammuarticulos.php

En otros lenguajes como .net, podes asociar funciones, onclick, onmouseover, etc. a llamadas en el servidor, sin embargo en PHP no se puede hacer de manera directa como lo has hecho aqui
« Última Modificación: julio 08, 2008, 02:56:59 pm por mxgxw »


Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #6 : julio 08, 2008, 03:01:17 pm »
La forma mas adecuada de hacer algo como lo que tu quieres seria algo asi:

pagina:
Código: [Seleccionar]
<?php // Inicio de la pagina
session_start();
?>

<div id="acciones">
   <ul>
<!--//
Al poner ?op=1 le estamos diciendo que con el link
queremos enviar la variable 1, en forma de parametro GET
 //-->
   <li><a href="amuarticulos.php?op=1">Adicionar</a></li>
   <li><a href="#">Eliminar</a></li>
</ul>

En tu pagina destino haces algo como esto:

amuarticulos.php
Código: [Seleccionar]
<?php // Inicio de la pagina
session_start();

$_SESSION['op'] = $_GET['op'];

// Aqui escribes el codigo de tu programa
?>


Obviamente, en tus links tendras que cambiar op=1 por op=2,3...etc dependiendo que valor querras guardar en la sesion.

Te recomiendo te leas este par de tutos, para que le agarres la onda como es que funciona esto de las sesiones:

http://www.desarrolloweb.com/articulos/235.php
http://www.webestilo.com/php/php12a.phtml


jaru

  • Visitante
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #7 : julio 08, 2008, 03:06:08 pm »
si cuando vi que tenia la variable php en el href... me parecio raro y dije "php" puede hacer eso?
solo que lo cambies como dijo mxgxw o por alguna funcion de ajax si quisieras tener su respuesta ahi mismo

Código: [Seleccionar]
<a href="#" onclick="mi_funcion_ajax('parametro1', 'span1');">Adicionar</a>
Código: [Seleccionar]
/ START CHECK TO SERVER SCRIPT ************************************************************
 var http_request = false;
 var spanname;
   function makePOSTRequest(url, parameters) {
   
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari, ...
       
   try {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
   } catch (e) {
 //   alert("Permission UniversalBrowserRead denied, please try with another web browser");
   }
   
        http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // See note below about this line
            }
        }  else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
  http_request.onreadystatechange = alertContents;
/*   if (ccspan == 2) {      http_request.onreadystatechange = alertContents2;}*/

      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
         if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
document.getElementById(spanname).innerHTML = result;   
 
} else {
            alert('There was a problem with the request.');
         }
      }
   }
/*   function alertContents2() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
document.getElementById('span_etime').innerHTML = result;           
} else {
            alert('There was a problem with the request.');
         }
      }
   } */ 

// END CHECK TO SERVER SCRIPT. ***************************************** 

function mi_funcion_ajax(data,spann) {
//data = dato o variable a ser obtenido, puede ser algun valor de algun
//elemento de algun FORM
//spann = el nombre del contenedor "span" donde queras que te cargue la respuesta del php
//variable = nombre de la variable que le mandes a tu codigo php

var poststr = "variable="+data;
makePOSTRequest('http://tupagina.com/tucodigo.php', poststr);
}
 
« Última Modificación: julio 08, 2008, 03:11:57 pm por jaru »

webcaz

  • Visitante
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #8 : julio 08, 2008, 03:07:00 pm »
gracias mxgxw es valido lo q me dices, sin embargo qiero evitar el paso de variables por url, no se si me xplico quiero usar variables de $_session nadamas y aplicando valores en acciones determinadas en la pagina como darle un click a una imagen o algo por el estilo y en ese momento asignar el valor a la variable de session...

pero gracias por tu respuesta...

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #9 : julio 08, 2008, 03:09:41 pm »
gracias mxgxw es valido lo q me dices, sin embargo qiero evitar el paso de variables por url, no se si me xplico quiero usar variables de $_session nadamas y aplicando valores en acciones determinadas en la pagina como darle un click a una imagen o algo por el estilo y en ese momento asignar el valor a la variable de session...

pero gracias por tu respuesta...


Ya intentastes de esta manera..?

mira.. lo que se me ocurre de momento es hacerlo con Javascript.... lo probe a si...


pagina1.php

Código: [Seleccionar]
<?php session_start() ?>
<html>
<head>
<script>
function setVar()
{
<?php $_SESSION['op'] = 1?>
location.replace("pagina2.php");
}
</script>
</head>

<body>
<a href='javascript: void(0)' onclick='setVar()'>Asignar Valor </a>
</body>

</html>




pagina2.php

Código: [Seleccionar]
<?php

session_start();

echo "El valor de la variable es ".$_SESSION['op'];

?>




No se si te parece esta alternativa...?   :)



 :unsure:

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #10 : julio 08, 2008, 03:13:12 pm »

Ya intentastes de esta manera..?



 :unsure:

La forma que has puesto JGuillen, tiene el mismo efecto que por medio del link. Por regla general, PHP se procesa antes de enviarse al cliente... sin importar la posicion donde se encuentre. Es decir que aunque tengas el codigo adentro de un javascript o algo por el estilo, siempre se procesara antes de enviarse y no despues como quiere webcaz.

Lastimosamente, para pasar variables sin usar la URL al momento de que el usuario haga en click un link, solo lo podra hacer haciendo uso de alguna funcion AJAX, o por medio de un formulario escondido que haga una consulta via POST.

Ahora, te advierto que con AJAX, aunque la consulta no la vera el usuario, siempre estaras pasando parametros ya sea por una URL o por medio de POST.

Las variables de sesion solo se pueden cambiar en el servidor y no en la aplicacion cliente.
« Última Modificación: julio 08, 2008, 03:18:14 pm por mxgxw »


jaru

  • Visitante
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #11 : julio 08, 2008, 03:17:29 pm »
haaa apues no le hagas caso a lo de ajax. solo que talves te sirva para otra cosa, esa funcion es bien facil de modificar, he venido ocupandola en todo lo que uso, mirala como un template

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #12 : julio 08, 2008, 03:21:01 pm »
La forma que has puesto JGuillen, tiene el mismo efecto que por medio del link. Por regla general, PHP se procesa antes de enviarse al cliente... sin importar la posicion donde se encuentre. Es decir que aunque tengas el codigo adentro de un javascript o algo por el estilo, siempre se procesara antes de enviarse y no despues como quiere webcaz.

Lastimosamente, para pasar variables sin usar la URL al momento de que el usuario haga en click un link, solo lo podra hacer haciendo uso de alguna funcion AJAX, o por medio de un formulario escondido que haga una consulta via POST.

Ahora, te advierto que con AJAX, aunque la consulta no la vera el usuario, siempre estaras pasando parametros ya sea por una URL o por medio de POST.

Las variables de sesion solo se pueden cambiar en el servidor y no en la aplicacion cliente.


a webos tenes razon.. toda la razon jejejeje.....


bueno la unica alternativa que le veo es que hagas el uso de url limpias con el mod_rewrite de apache... digo yo..  :dumb:

webcaz

  • Visitante
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #13 : julio 08, 2008, 03:29:42 pm »
bueno todas sus respuestas tienen logica y son validas... aunq lo q yo qiero es orientado mas a la seguridad de la aplicación nada de url ni mucho menos tener q estar usando javascript como puente, sin embargo he encontrado algo interesante que me da respuesta al problema q tengo osea la variable toma un valor, pero toma un valor q se lo asigno mas adelante en dado caso de click en otra parte la cosa esta así....

arriba del formulario tengo dos opciones q son las q he puesto anteriormente ahi al darle click qiero asignarle un valor op=1, sin embargo, mas abajo tengo otro link en donde le asigno en el mismo evento solo q aqui en una imagen el valor de op=2, y logicamente ese es el q me esta poniendo osea el servidor procesa tal y como van las variables en su orden osea las variables son enviadas $_session['op']=1 y $_session['op']=2, por logica el valor q prevalece es op=2 aunq yo le de click al primero op=1, el rollo esta en q yo qiero manipular esos valores mediante las acciones q hagan en la pagina, no se si estare pidiendo algo q no es valido per creo q si se puede... pero ahorita no me ubico como ... espero les haya trasmitido mi inqietud completamente... de antemano graicias... :bye:

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re: Problemas y pequeñas dudas con variables de $_session
« Respuesta #14 : julio 08, 2008, 03:47:32 pm »
bueno todas sus respuestas tienen logica y son validas... aunq lo q yo qiero es orientado mas a la seguridad de la aplicación nada de url ni mucho menos tener q estar usando javascript como puente, sin embargo he encontrado algo interesante que me da respuesta al problema q tengo osea la variable toma un valor, pero toma un valor q se lo asigno mas adelante en dado caso de click en otra parte la cosa esta así....

arriba del formulario tengo dos opciones q son las q he puesto anteriormente ahi al darle click qiero asignarle un valor op=1, sin embargo, mas abajo tengo otro link en donde le asigno en el mismo evento solo q aqui en una imagen el valor de op=2, y logicamente ese es el q me esta poniendo osea el servidor procesa tal y como van las variables en su orden osea las variables son enviadas $_session['op']=1 y $_session['op']=2, por logica el valor q prevalece es op=2 aunq yo le de click al primero op=1, el rollo esta en q yo qiero manipular esos valores mediante las acciones q hagan en la pagina, no se si estare pidiendo algo q no es valido per creo q si se puede... pero ahorita no me ubico como ... espero les haya trasmitido mi inqietud completamente... de antemano graicias... :bye:

Ok mira... creo que tu no me has captado...

PHP se ejecuta en el server, por lo tanto no podes hacer uso de las funciones, onclick o similares para asignar variables de sesion. Las variables de sesion unicamente pueden ser asignadas del lado del servidor.

Esto significa que a fuerza, debes de tener una pagina que reciba ese valor. Y tenes que pasarselo de alguna manera.... las formas mas simples son usando un get, o un POST si no queres que se muestre en la URL... O en el mas complicado de los casos, armar una tabla de hash de cada codigo... y luego enviar el valor de parametro como ese hash, y buscar el codigo correspondiente en la tabla.

Siempre siempre, vas a tener que enviar el ID, o un indice que te permita identificar que el usuario ha realizado un cambio en la aplicacion.