Parametros con PHP

Jorge Ochoa
09 de Enero del 2006
Hola Amigos.
disculpenme que haga tantas preguntas basicas pero soy nuevo en esto de php tengo solo unas 5 horas programando en php y tengo que presentar un trabajo en php mi preguntas en la sig.
ya mediante javascrip hice que se llamara a un formulario noticia1.php?id=000002 ahora como hago que la pag notica1.php puede en una variable ver el id que mande ya intente con $_POST['id'] $_GET['id'] y $_REQUEST['id']

Califa
09 de Enero del 2006
Hacé una página de prueba como la que está abajo (copiá y pegá) y nombrala test.php. Guardala en el servidor, asegurándote de que sea accesible, o sea, que esté dentro de la carpeta "www", "public_html" o como se llame. Por ejemplo: C:ruta_hasta_servidorwwwtest.php

En el navegador poné la dirección:
http:\localhosttest.php?id=1

Tiene que mostrarte:
"PHP está funcionando
id= 1"
(probablemente 2 veces, a menos que tengas una versión muy vieja de php).

Si no funciona, entonces tiene que ser un problema de instalación/configuración de php, o que el server no está iniciado, o que estás guardando el archivo en un lugar y lo estás pidiendo en otro (u otra que no se me ocurre, pero si todo lo anterior está bien, esta simple prueba debería funcionar).

Un consejo: si colgás el script que no funciona acá, puede ser que consigas ayuda más detallada. Así, cualquiera que ve tu mensaje está a ciegas (puede haber mil pequeñas cosas que fallen en tu script, una palabra mal tipeada, etc). Además, si te da algún error, copialo también.

Suerte.
------------
test.php
-----------
<?php
echo "PHP está funcionando<br>";
if (isset($HTTP_GET_VARS['id'])) {
$id = $HTTP_GET_VARS['id'];
echo $id . "<br>";
}
echo "PHP está funcionando<br>";
if (isset($_GET['id'])) {
$id = $_GET['id'];
echo $id;
}
?>

Jorge Ochoa
09 de Enero del 2006
Gracias. ya me funciono pero tube que quitarle las comillas no se si me dara algun problema cuando le publique yo me baje la version 5 de php y de mysql 5 hay mucho cambio con tras versiond e php?

Califa
09 de Enero del 2006
Bueno, la verdad, no sé si funcionará en todos lados. No sabía que se podían evitar las comillas; lo acabo de probar en mi máquina y anda bien.

Pero, no recuerdo haber visto un solo script en donde no se usaran comillas, simples o dobles. Si te fijás, en toda la documentación de php, todos los ejemplos que muestran usan comillas (http://www.php.net/manual/es/).

Por lo cual, no sé si lo que escribas sin comillas después va a funcionar fuera de tu máquina. La teoría, si no me equivoco, es que no, porque $_GET, $_POST, etc. son arrays asociativos (aunque, en teoría, tampoco debería funcionar en tu equipo...). Un array asociativo, por definición, es el que tiene por índice un string/cadena. Y los strings siempre van entre comillas... A menos que automáticamente, se agreguen comillas a lo que está entre corchetes [].

En fin, la verdad es que no sé si un script donde los índices de los arrays asociativos estén sin comillas va a funcionar en cualquier lado. Tal vez sí, tal vez no. Antes de seguir adelante, probaría usando comillas dobles en lugar de simples (si no es que ya lo probaste), pero igual me parece raro.

Un consejo, al margen: para evitarte dolores de cabeza, escribí el código de forma tal que no dependa de cómo esté configurada la opción register_globals en el archivo php.ini *. Muchas veces, no vas a poder modifcar esa opción (depende del administrador del servidor). Si tu script requiere que register_globals esté activado, pero el admin del servidor no quiere activarlas (por seguridad), vas a estar en problemas y seguramente vas a tener que reescribir bastante código.

La solución es muy fácil, si tenés esto en cuenta de entrada: siempre tenés que pedir una variable que llega, por ej, por GET, como $_GET['variable']. Con register_globals activado, podrías pedirla como $variable directamente. Pero si esa opción está desactivada o si estaba pero por alguna razón el admin cambia la configuración, el script ya no va a funcionar correctamente. Es escribir un poco más, pero te asegurás de que con ese tema no vas a tener problemas.

Suerte.

* Acá está explicado el tema:
http://www.php.net/manual/es/security.globals.php

Califa
09 de Enero del 2006
Perdón, la dirección http va con la barra común:

http://localhost/test.php?id=1