[ Foro de PHP ]

$_POST EN LINK

04-Jul-2013 09:41
Invitado (ruben ruiz)
3 Respuestas

cordial saludo profesor, aprovecho para darte las gracias por tus respuestas a mis anteriores post y como siempre por esta gran labor que haces como profesor.
queria preguntarte algo muy curioso que no se por que ocurre y como podria hacer lo que necesito.
tengo en el archivo ejer.php


<html>
<body>
<a href="pagina1.php?id=5&nombre=ruben">pagina1 </a>
</body>
</html>


como ves envio por la url dos variables el id y el nombre, variables que recojo en el siguiente archivo


<html>
<body>
<?php
echo $_POST["id"] . "</br>";
echo $_POST["nombre"] . "</br>";

?>
</body>
</html>


mi pregunta se basa en el hecho de que he leido que cuando utilizo $_GET ,los valores de las variables se pasan de forma oculta por la url, y que por eso es mejor utilizar $_POST, sin embargo cuando lo hago en link como es el caso del ejemplo me sale el siguiente error
Undefined index:id
Undefined index:nombre
y en la barra de direcciones se ve:
http://localhost/ejer/pagina1.php?id=5&nombre=ruben

como puedo entonces hacer para que mis variables enviadas no se visualicen en la url, por que imagina que ese id y nombre fueran por decir algo fueran codigo y contraseña para un usuario, agradezco me ayudes y mil gracias por tu atencion.



08-Jul-2013 17:00
Nacho Cabanes (+84)

En principio, si pasas parámetros en la URL, serán "visibles", y deberás leerlos con $_GET,

Por el contrario, si quieres que sean datos que se reciban ocultos, y leerlos con $_POST, tendrán que venir de un formulario que incluya [b]method="POST"[/b], aunque puedes usar campos HIDDEN en ese formulario para que los datos no sean (fácilmente) visibles.

Son dos cosas distintas, y deberías intentar no mezclarlas.

Eso no quita que hay librerías avanzadas, como "curl", que te pueden permitir pasar datos por POST entre páginas, pero pueden no estar instaladas en todos los servidores, y son algo que (en mi opinión) queda fuera de lo que debería saber alguien que está aprendiendo.


09-Jul-2013 08:07
Invitado (ruben ruiz)

Gracias profsor espraba tu respuesta.
profesor eso lo tengo claro rspecto a lo de la matriz super global $post y $_get lo que queria preguntarte es si hay alguna manera de usando una url pasandole parametros puedo ocultar el paso de las mismas por la url, pues necsito enviar esos datos es por url y la idea es que pasen de forma invisible al usuario y se que no puede utilizar $Get, en esos casos entonces en que s necesite usar un link para pasar variables me aconsjas entonces crear antes un formulario y poder asi utilizar $_POST, mil gracias por cualquier orientacion al respecto.


13-Jul-2013 19:10
Nacho Cabanes (+84)

Insisto: si quieres pasar datos de forma oculta, por "post", sin necesidad de pulsar un botón, deberás mirar la librería "curl". Si hablas inglés, búsquedas como "php curl post example" deberían darte muchas respuestas.  Mira por ejemplo este artículo

http://davidwalsh.name/curl-post

o este otro

http://www.askapache.com/php/sending-post-form-data-php-curl.html

Si no quieres depender que tu servidor tenga instalado "curl", hay poca solución, porque lo que se pasa en la URL siempre será visible. Podrías hacer poco más que pasar los datos encriptados, para que al menos no sea evidente su contenido.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)