Muchas gracias, Esplendida respuesta, voy a ponerla en práctica para ver que sale, Un saludo. Enrique.
El Viernes, 3 de Diciembre de 2004 11:43, Víctor Berga escribió:
La explicación que te ha dado Victor Berga, es perfecta. Añadiré que normalmente las variables que se reciben a través del POST o GET, que por seguridad no se conviertan en variables de PHP directamente, por un tema práctico de seguridad.
En PHP, las variables no son necesarias declararlas, con lo que si por error de programación escribes algo como if ($sel1) sin haber inicializado $sel1, si PHP (que lo permite) siempre convirtiera las variables POST en variables del propio PHP, el peligro es terrible, puesto que el programa podria ser reconducido, cambiando cualquier variable de tu programa.
Por eso es mas seguro escribir: $sel1=$HTTP_POST_VARS['$sel1']; Para obtener el parámetro enviado por el protocolo HTTP. El problema es que las variables POST i GET estan separadas en 2 array's distintos. La solución es asignar tus variables en función de la variable de entorno $REQUEST_METHOD, para saber si es GET o POST. Y en funcion de un resultado o del otro, leer de $HTTP_POST_VARS o $HTTP_GET_VARS.
Ya que estas practicando observaras que si haces: extract($HTTP_POST_VARS,EXTR_SKIP); extract($HTTP_GET_VARS,EXTR_SKIP); Te actualizará las variables que te interesan, preservando las colisiones dando un pelín más de seguridad que activar registers_globals. Sin embargo recomiendo usar directamente el primer método, aunque parezca más cómodo el último. Si quieres una solución que te permita por ejemplo leer las variables todas asÍ: $http_sel1, con http_ delante de la variable, pueds hacerte un algoritmo tu mismo, que usarias en todos tus programas, que consiste en, hacer un 'merge' de $HTTP_POST_VARS y $HTTP_GET_VARS en un nuevo array (hash) con nombre $http por ejemplo, luego recorrer las claves y añandirles 'http_' delante. Una vez hayas acabado la función te puede quedar muy cómodo, pero como comprenderas es muy ineficiente que cada página haga tantas cosas nada más empezar. Pero te puede ser muy util para aprender a usar bien las variables, es una buena práctica :)))
Suerte.
Es porque en la configuración de PHP tienes registers_globals=off que es más seguro.
Para poder acceder a tu variable $shell debes probar con la matriz $_POST, así tu script receptor quedaría:
<HTML> <BODY> <?php echo "hola"; echo "$_POST['sel1']"; ?> </BODY> </HTML>
Si quieres más información sobre esta característica: http://www.php.net/release_4_1_0.php
Esto fué añadido a partir de PHP 4.1.0
Nos vemos, Víctor
Buenos días,
me encuentro practicando un poco con apache-php, pero parece ser que no me funciona bien y me temo que sea de la instalación ya que la misma
ejf@ugr.es wrote: página
si funciona en otro servidor. Os cuento: he instalado con YaST apache2, apache-prefork, mod-php4 junto con todas las dependencias que estos marcan. Arranco el servidor con rcapache2 start, pero parece que no funciona bien ya que el buscar la página... por ejemplo:
-----------index.html--------------
<HTML> <BODY> <FORM METHOD=POST ACTION="checkboxes.php"> <INPUT NAME="sel1" TYPE="Checkbox" VALUE="valorsel1"> <INPUT TYPE=SUBMIT> </FORM> </BODY> </HTML>
-----------checkboxes.php-----------
<HTML> <BODY> <?php echo "hola"; echo "$sel1"; ?> </BODY> </HTML>
--------------------------------------
Solo muestra hola (no pasa las variables), y se que debería funcionar.
Me dirijo a vosotros pensando en que sea problema de configuración, espero que le haya pasado ya a alguien o me podais dar alguna solución,
Muchas gracias,
Un saludo.
-- Víctor Berga [vbergae at infonegocio.com]
*http://phpgescen.espicato.com
Linux Registered User: #286951 ----------------------------------------------------- "Sin música, la vida sería un error..."
-- ################################################ #- Urbez Santana i Roma - #- Email: urbez@linuxupc.upc.es #- Private Web: http://linuxupc.upc.es/~urbez/ ################################################
-- Para dar de baja la suscripción, mande un mensaje a: suse-linux-s-unsubscribe@suse.com Para obtener el resto de direcciones-comando, mande un mensaje a: suse-linux-s-help@suse.com