¿Como puedo recibir parametros por GET en Php, sin que se vea en la url?

Estado
No está abierto para más respuestas.

vmartinez

Cobre
Usuario de Bronce
Mensajes
817
Puntuación de reacción
0
Hola:


¿Como puedo recibir parametros por GET en Php, sin que se vea en la url?


Con frameworks de PHP suelen tener una opción pero solo con php no se como evitar que se vean.
 

Zeokat

Oro
Usuario de Bronce
Mensajes
1,194
Puntuación de reacción
4
Si el parámetro se obtiene a través de GET siempre va a estar reflejado en la URL, porque así lo indica el propio protocolo HTTP.

Por ejemplo "archivo.php?texto=hola"

La cuestión es que en muchas páginas se reescriben esas URLs para que sean amigables (un ejemplo conocido por todos es wordpress), atendiendo al ejemplo anterior podemos ver "hola.html". Pero ocultar nunca se van a ocultar. En el ejemplo usariamos las rewrite rules de Apache en un archivo .htaccess (en el caso de Nginx u otro servidor varia).

Sino quieres que se vean en la URL debes usar POST.

Protocolo HTTP para desarrolladores (parte I)
Protocolo HTTP para desarrolladores (parte II)

Sea dicho de paso, me intriga saber como has ocultado un parámtero GET de la URL, ¿con qué framework? ¿Cómo?
 
Última edición:

lobogris

Platino
Usuario de Bronce
Mensajes
1,537
Puntuación de reacción
0
No puedes recibir parámetros sin que se vean en la url, pero supongo que a lo que te refieres es tener friendly urls evitando el típico /index.php?page=blog, ésto se suele hacer con routers, aunque en determinados casos a mí me parece más 'bonito' utilizar ReflectionMethod en el FrontController y evaluar si la url existe (suponiendo claro una estructura MVC).

La manera de desgranar la url es posible con las variables $_SERVER aunque puedes utilizar también parse_url(), un pequeño snippet para que veas como lo hago yo:
PHP:
<?php
define( 'BASE_RELATIVE_URL', 'X' ); # Suponiendo que tu script está en el directorio X
if( isset( $_SERVER['REQUEST_URI'] ) )
      $request = substr( urldecode( $_SERVER['REQUEST_URI'] ), strlen( BASE_RELATIVE_URL ) );
# En $request tenemos todos los parámetros, ahora los convertimos en un array
$request = explode( '/', rtrim( $request, '/' ) );

Ésta url
Código:
https://foro20.com/programacion-web/15857-como-puedo-recibir-parametros-por-get-en-php-sin-que-se-vea-en-la-url.html
ahora la tendría en un array como:

PHP:
$request = [
    'programacion-web',
    '15857-como-puedo-recibir-parametros-por-get-en-php-sin-que-se-vea-en-la-url.html'
];

Suponiendo una aplicación MVC se buscaría una clase Programación_Web que debería hacer algo con el parámetro 15857-como-puedo-recibir-parametros-por-get-en-php-sin-que-se-vea-en-la-url.html
 
Mensajes
144
Puntuación de reacción
0
Si no queres que se vean los parámetros en la url tenes que usar POST en lugar de GET. Ojo que al usar POST no quiere decir que estes exento de riesgo ya que los datos se pueden modificar lo mismo.

Si no podes pasar parámetros por post y tenes que hacerlo si o si por get podes usar la opción de encriptar el query string.
 

vmartinez

Cobre
Usuario de Bronce
Mensajes
817
Puntuación de reacción
0
@lobogris Creo que a eso me referia
Seria algo asi como lo que hace wordpress con las urls amigables ¿no? que traduce el articulo id=1 en el nombre que pongas en el permalink

Con eso tienes la url, ¿y luego como la pones en la url visible del navegador?
 

Julio Rodríguez

Diamante
Usuario de Bronce
Mensajes
2,521
Puntuación de reacción
2
@lobogris Creo que a eso me referia
Seria algo asi como lo que hace wordpress con las urls amigables ¿no? que traduce el articulo id=1 en el nombre que pongas en el permalink

Con eso tienes la url, ¿y luego como la pones en la url visible del navegador?

explicate mejor, no te entendí un carajo jajajaja.

get son las variables que se envíe por URL
post son las variables que se envían por "dentro"

URLS Amigables, mod rewrite camufla la url, pero eso no quiere decir que no sea vulnerable.

busca urls amigables .htaccess que creo que es lo que quieres jajaja
 

vmartinez

Cobre
Usuario de Bronce
Mensajes
817
Puntuación de reacción
0
@Julio Rodríguez Pues me has entendido perfectamente! jajaja

Expresiones regulares . Buff que lio. Mira para esto si que molan los frameworks :p
 

lobogris

Platino
Usuario de Bronce
Mensajes
1,537
Puntuación de reacción
0
@lobogris Creo que a eso me referia
Seria algo asi como lo que hace wordpress con las urls amigables ¿no? que traduce el articulo id=1 en el nombre que pongas en el permalink

Con eso tienes la url, ¿y luego como la pones en la url visible del navegador?
Sí, WordPress hace esto, pero de otra manera ya que su modelo de código nada tiene que ver con una aplicación/framework MVC.

La url no la pones, la url es a la que accede el usuario si no necesitas query string, mejor no las utilices, simplemente interpreta la url solicitada y responde. Un ejemplo de un router simple, pequeño y fácil https://github.com/dannyvankooten/AltoRouter , éste lo utilicé yo en un proyecto

En definitiva sería; en vez de aceptar algo como esto /index.php?page=blog&id=5 y redireccionar, aceptar directamente /blog/5/ ya que el usuario no tiene por qué saber que la url lleva los parámetros del primer caso
 
Mensajes
198
Puntuación de reacción
0
Si quieres url amigable y ocultar no se algún contenido en cripta o codifica tu url y hazla amigable.

Si dieras mas detalle de lo que haces o quieres hacer te ayudaría con gusto.

Saludos

Enviado desde mi XT1053 mediante Tapatalk
 

vmartinez

Cobre
Usuario de Bronce
Mensajes
817
Puntuación de reacción
0
@lobogris le pegare un vistazo a esa libreria, gracias!!!
 
Estado
No está abierto para más respuestas.
Arriba