Foros del Web » Programando para Internet » PHP »

$_GET[xxx] evitar que escriban

Estas en el tema de $_GET[xxx] evitar que escriban en el foro de PHP en Foros del Web. tengo una pagina1.php Código PHP: <?php $texto  =  lol ; //luego al querer pasar esa variablea otra pagina asi  echo  "<a href='pagina2.php?texto=jejejeeje'>Link pagina2.php</a>" ; ?> pagina2.php Código PHP: <?php $texto  =  $_GET [ "texto" ]; ...
  #1 (permalink)  
Antiguo 27/03/2004, 17:07
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
$_GET[xxx] evitar que escriban

tengo una pagina1.php
Código PHP:
<?php
$texto 
lol;
//luego al querer pasar esa variablea otra pagina asi 
echo "<a href='pagina2.php?texto=jejejeeje'>Link pagina2.php</a>";
?>
pagina2.php
Código PHP:
<?php
$texto 
$_GET["texto"];
echo 
"$texto"
?>
Funciona todo ok?
pero lo que quiero hacer es que nadie pueda escribir en el navegador es decir si en el navegador esta asi

http://localhost/pagina2.php?texto=quechungoqueestaesto

se sabe que puedo manipularlo y cambiar "quechungoqueestaesto" por lo que se me de la gana

como puedo evitar eso ...

Espero me entiendan
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 27/03/2004 a las 17:09
  #2 (permalink)  
Antiguo 27/03/2004, 20:00
 
Fecha de Ingreso: marzo-2004
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
De acuerdo

Saludos.
El problema que planteas tiene facil solucion, estas enviando los datos con el metodo GET, y este metodo pasa las variables junto con la direccion de la web, por eso lo ves en la barra de direcciones. Si utilizas el metodo POST, esas variables se pasaran como cabeceras, y seran transparentes al usuario.
Acuerdate de recibir los datos en el php con un $_POST.
Espero que te sirva de ayuda.
  #3 (permalink)  
Antiguo 28/03/2004, 01:47
Avatar de alhuey40  
Fecha de Ingreso: diciembre-2002
Ubicación: sinaloa, mx
Mensajes: 37
Antigüedad: 15 años
Puntos: 0
pues no hay manera de que no escriban nada en el URL del explorardor, lo que puedes hacer es como en el post anterior, pero pues tendrias ke hacer un formulario o lo que puedes hacer es encriptar el query string , o validar que solo reciba ciertos datos

saludos,
  #4 (permalink)  
Antiguo 28/03/2004, 01:48
 
Fecha de Ingreso: marzo-2004
Ubicación: Cihuatlán, Jalisco
Mensajes: 1
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta

Hola,


El problema que tu planteas, o por lo menos a la forma en que lo entendi, no tiene una solución factible por medio del uso de $_GET ya que es el query string el que revisa, por lo tanto esta a la vista de los usuarios.


Ahora bien, la forma en que lo puedes solucionar es usando frames en tu sitio, asi podras ocultar el query string y los usuarios no podran modificarlo.

Suerte y saludos.
  #5 (permalink)  
Antiguo 28/03/2004, 08:31
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Todo dato enviado desde el navegador (GET, POST, COOKIE) es facilmente manipulable. Nunca confies en el.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 28/03/2004, 15:24
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Yo podria usar $_POST

pero el problema es que no uso un formulario para enviar ese dato es decir no tengo un boton de submit ;
tan solo es un link donde paso esa variable obtenida y como habria manera de enviarla por post? y la agarre la pagina2.php
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #7 (permalink)  
Antiguo 28/03/2004, 17:58
Avatar de alhuey40  
Fecha de Ingreso: diciembre-2002
Ubicación: sinaloa, mx
Mensajes: 37
Antigüedad: 15 años
Puntos: 0
pues todos los links se mandan por el query string no hay manera de enviar un link por post
  #8 (permalink)  
Antiguo 28/03/2004, 19:23
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
he ahi porque uso $_GET y no post, alguna otra solucion :) me podrian enseñarme a encriptarla :) cosa que no se pueda modificar por el navegador
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #9 (permalink)  
Antiguo 28/03/2004, 21:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Como ya te han comentado .. evitar que te "re-escriban" un URL (GET) no lo vas a evitar .. Pero lo que si que puedes hacer SIEMPRE es validar esos datos y ver si están en tus rangos o valores esperados y en consecuencia dar el mensaje de aviso al curioso de turno.

En otras ocasiones en lugar de hacer algo tipo:

http://www.tal.tal/nose.php?texto=bla blabla bla

usar identificadores .. para asociarlos a Arrays, Base de datos (consultas SQL condicionales .. ) etc

Es decir:
http://www.tal.tal/nose.php?texto=1

Así puedes validar mejor si ese "texto" está como identificador en el rango que corresponda.

Y si por A o B motivo ese "texto=bla babla" se ha de generar en X página y pasar a Y página .. por qué es dinámico ... usa una sesión para almacenar ese texto .. o una Base de datos temporal .. o un archivo de texto plano temporal .. y tan sólo pasa el identificador que corresponda a esa BD, Texto plano .. o si es una sesión ni eso necesitarias ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 29/03/2004, 02:19
 
Fecha de Ingreso: enero-2004
Mensajes: 13
Antigüedad: 13 años, 11 meses
Puntos: 0
Creo que la mejor opción es el uso de sesiones,como te comenta cluster. Aun asi, si lo quieres pasar por $_POST sin usar un boton de formulario 'enviar' puedes añadir el metodo submit() de javascript al enlace que utilizas. Busca en el foro de javascript para informarte mejor
  #11 (permalink)  
Antiguo 29/03/2004, 10:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 46
Antigüedad: 14 años, 1 mes
Puntos: 0
Mira esto:

http://www.forosdelweb.com/showthrea...hreadid=174523

Lo que puedes hacer también es codificar la variable antes de enviarla y decodificarla al llegar...

De esa manera no es llegar y escribir algo en la barra URL
  #12 (permalink)  
Antiguo 31/03/2004, 10:47
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Gracias a todos

he encontrado la solucion enviando el $_POST por java script pero me interasaria ver un ejemplo de enviar la vairable encriptada por el navegador !!

GRacias a todos
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #13 (permalink)  
Antiguo 31/03/2004, 11:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La base sería:

nose.php?variable=<? echo funcion_encripta($variable) ?>

y en nose.php

echo funcion_desencripta($_GET['variable']);

Esa tal "funcion_encripta() y funcion_desencripta()" puede ser desde el par:

base64_encode() y base64_decode() respectivamente que en realidad no "encriptan" .. sólo "codifican" en es formato .. el cual es poco legible para el "humano" pero si alguien se da cuenta que usas ese formato igual puede aplicar esa función base64_decode() y obtener tu "variable encriptada" ...

A partir de ahí puedes desde diseñarte tu própio algorítmo de encriptación (con semillas y todo el lio) o bien usar las librerias:

mcrypt()
http://www.php.net/manual/en/ref.mcrypt.php

La idea es que en "receptor" sepa esa "semilla" que será la que usará para desencriptar lo que el "emisor" encriptó.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 31/03/2004 a las 11:50
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:11.