Foros del Web » Programando para Internet » PHP »

"MODIFICAR" una variable por medio de la barra de direcciones

Estas en el tema de "MODIFICAR" una variable por medio de la barra de direcciones en el foro de PHP en Foros del Web. Hola, tengo una duda acerca de dar valores a variables especificando su valor en el documento php y luego modificando este por medio de una ...
  #1 (permalink)  
Antiguo 01/09/2004, 05:28
 
Fecha de Ingreso: junio-2004
Mensajes: 20
Antigüedad: 13 años, 5 meses
Puntos: 0
Pregunta "MODIFICAR" una variable por medio de la barra de direcciones

Hola,
tengo una duda acerca de dar valores a variables especificando su valor en el documento php y luego modificando este por medio de una sentencia en la barra de direcciones del navegador (EJ. index.php?pepe=es tonto)
El problema es que si especifico un valor en el documento luego no me deja darle otro en la barra de direcciones.
Por ejemplo, tengo un documento php, el index de mi web, con esto:

<?
$go=principal.php;
include ($go);
?>

y luego INTENTO cambiar el valor de $go para ir a otra seccion,
(EJ. index.php?go=contacta)

pues esto último no lo pilla, sigue marcando el valor que habia especificado inicialmente, esto es solo un ejemplo, pero me interesa saber si esto es posible, ¿como puedo hacerlo?, ¿hago algo mal?.(supongo que es porque esta última sentencia implica que se lea de nuevo el index y por lo tanto se vuelve a definir el valor inicial).
Muchísimas gracias.
  #2 (permalink)  
Antiguo 01/09/2004, 06:32
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Veamos si te explico el orden en que suceden las cosas:

1.- Pones en la barra index.php?go=noticias.php
2.- Le llega al servidor web esa peticion.
3.- El servidor web se lo pasa a PHP.
4.- PHP lee el querystring (los parametros), y crea esas variables con esos valores.
5.- PHP lee y ejecuta tu script.

Asi que tal como lo tienes es lo mismo que si tu codigo fuese:
Código PHP:
$go=1;
$go=2
Es decir, el valor que asignas en el codigo sobreescribe el valor pasado por parametro.

Lo que tu realmente quieres hacer es "si no se pasa un valor por la URL, usar este valor por defecto". Y eso se implementa asi:
Código PHP:
if (!isset($_GET['go'])) {
  
$go='principal.php'// tu valor por defecto
} else {
  
$go=$_GET['go'];

(para que funcione con register_globals a OFF). O como normalmente se ve:
Código PHP:
$go=(isset($_GET['go']))?$_GET['go']:'principal.php'
con el operador ternario.

Esto seria lo que es el uso de valores por defecto. Luego estan las consideraciones de seguridad (todo lo que venga del usuario es potencialmente peligroso) en el tema del include de un valor pasado como parametro. Existen soluciones mas seguras (como el uso de arrays para almacenar los ficheros a incluir y usar los indices del array como parametros en la URL).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 01/09/2004, 09:32
 
Fecha de Ingreso: junio-2004
Mensajes: 20
Antigüedad: 13 años, 5 meses
Puntos: 0
muchísimas gracias, menos mal que hay foros como este y gente dispuesta a ayudar
  #4 (permalink)  
Antiguo 01/09/2004, 11:15
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 13 años, 10 meses
Puntos: 6
otra forma seria hacer esto

Código PHP:
<?
if($_GET["go"] == "") {
include(
"principal.php");
} else { include 
$_GET["go"].".php";
}
?>
__________________
El que teme preguntar, se averguenza de aprender.
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




La zona horaria es GMT -6. Ahora son las 09:37.