Usando el método POST para ocultar los parámetros de URL

Entiendo que puedo usar el método POST para los parámetros de URL para mostrar los datos de acuerdo con una variable específica, sé cómo hacer uso del método GET, pero me dicen que el método POST puede usarse para ocultar la parte de la URL que es así.

/data.php?parameter=1234 

¿Cuál es la diferencia real de los dos métodos en términos de parámetros de URL?

A continuación se muestra un código que obtiene datos de una base de datos de acuerdo con la identificación de un enlace específico

  <?php //This includes the variables, adjusted within the 'config.php file' and the functions from the 'functions.php' - the config variables are adjusted prior to anything else. require('configs/config.php'); require('configs/functions.php'); //This is the actual interaction with the database, according to the id. $query = mysql_query("SELECT * FROM table WHERE id=" .$_GET['id'] . ";") or die("An error has occurred"); //This re-directs to an error page the user preventing them from viewing the page if there are no rows with data equal to the query. if( mysql_num_rows($query)  

En una página separada, genero enlaces al archivo data.php de acuerdo con la ID, así:

 <a href="https://stackoverflow.com/questions/7906329/using-post-method-to-hide-url-parameters/post.php?id="> 

Olvidando que hay posibles inyecciones de SQL que pueden ocurrir a través del código anterior, ¿cómo haré uso del método POST para ocultar los parámetros de URL, o al menos no mostrarlos de esta manera?

 http://example.com/data.php?id=1 

Para usar POST, necesitará usar una etiqueta

, y dependiendo de cómo esté sacando estas URL, podría ser más fácil usar javascript para ayudar. Aquí hay un ejemplo básico:

 

El botón Ir colocaría los datos del formulario, y ahora en data.php podrá recuperar el valor de $_POST['parameter'] . Tenga en cuenta que cuando use POST, probablemente desee redireccionar (HTTP 302) a una página para que cuando el usuario pulse el botón Atrás, el navegador no solicite volver a enviar el formulario.

Al usar javascript, puede establecer la entrada del parameter a un valor diferente antes de publicar el formulario.

Use el método “POST” para su formulario. Tuve el mismo problema, simplemente agregué POST al formulario eliminado los parámetros de la URL

 

Para valores POST, un navegador debería usar un formulario con method = “post”, o javascript simulando un formulario. Varias herramientas de desarrollador (fireug, etc.) pueden convertir formularios GET a formularios POST, pero en general, se necesita un formulario.

En teoría, las solicitudes GET no deberían tener ningún efecto secundario, y “debería” ser consistente desde la solicitud hasta la solicitud. Es decir, el servidor debe devolver el mismo contenido. En el mundo de hoy en día, de casi todo siendo dynamic, esto podría tener poca importancia en el diseño práctico.

Ya sea que use GET o POST, los parámetros aparecerán en $_REQUEST . La diferencia fundamental es que usar POST permite que las variables NO aparezcan en el historial de URL. Esto disminuye la visibilidad de los datos, como las contraseñas que no desea mostrar en el historial de URL. Para usar POST en lugar de GET, simplemente produzca

en el documento.

Aún mejor es almacenar valores confidenciales (como id. De usuario) en las cookies, para que no aparezcan en $_REQUEST en absoluto. Como el contenido de las cookies se proporciona en encabezados de solicitud HTTP adicionales, no en el contenido, generalmente no se almacenan como parte del historial.

Para usar POST en lugar de GET, necesitarías usar una etiqueta de formulario HTML en tu html, así:

 

Cuando se /data.php , su URL será simplemente /data.php y el parámetro = 1234 estará en su búfer de publicación (oculto).

¿Tener sentido?

Para hacer un POST, debes usar un formulario, o algunos trucos de javascript / ajax. Un solo provocará una solicitud GET.

Tenga en cuenta que las solicitudes POST aún pueden tener parámetros de consulta en la URL. No es “normal” tenerlos, pero están permitidos. La principal diferencia es que con una solicitud GET (ignorando las cookies), la URL es la ÚNICA manera de enviar parámetros / datos al servidor. Con POST, puede usar tanto la URL como el cuerpo de la solicitud POST, que es donde normalmente se colocan los datos de formulario POSTed.