Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: dimitrix en 7 Abril 2007, 17:03 PM

Título: variable en la URL
Publicado por: dimitrix en 7 Abril 2007, 17:03 PM
Haber si me explico, estoy haciendo una web, y hay un apartado que es para ver la TV, pero hay como 25 canales, y no quiero que quede:

dominio.es/tv/tele5.php
dominio.es/tv/Antena3.php
...

ya que gastaria espacio y me costaria hacerlo...

Entonces he pensado hacer un archivo que sea.
dominio.es/tv/index.php

y donde se tenga que mostrar la ventana de TV poner:

Citar
<?php
include("$canal.php")
?>

y que si quiero que sea t5, la URL sea:
http://dominio.es/tv/index.php?canal=t5

Y que se ponga en el include el archivo t5.php
----------

lo que pasa es que si se pone un valor equivocado como
http://dominio.es/tv/index.php?canal=asf
te manda las lineas:

Warning: main(ds.php): failed to open stream: No such file or directory in /var/www/vhost/domino.es/home/html/web/pruebas.php on line 8

Warning: main(): Failed opening 'ds.php' for inclusion (include_path='.:/usr/share/pear') in /var/www/vhost/dominio.es/home/html/web/pruebas.php on line 8



Puedo hacer algo, para que se redirija a por ejemplo error.php ¿?
Título: Re: variable en la URL
Publicado por: Red Mx en 7 Abril 2007, 18:15 PM
eres nuevo en el php pero bueno

puedes hacer esto


if(empty($canal)){//asi verias que no venga la varible vacia
echo'Lo siento no se encontro ese canal';
}else{
//aki puedes poner un switch para seleccionar un canal
// y puede poner una pagina base en la cual solo cambien la lineas
//del codigo para la tele
}


explicate mas por cierto no que ya tye avias ido que no se que naaa!!! XD
Título: Re: variable en la URL
Publicado por: Ertai en 7 Abril 2007, 18:28 PM
Esto va en PHP.

Usa el switch - case

http://es2.php.net/switch

Y mucho cuidadin al incluir una variable como lo haces tu o puedes crearte un RFI bien bonito en tu codigo.

Saludos!
Título: Re: variable en la URL
Publicado por: dimitrix en 7 Abril 2007, 18:57 PM
que eso eso de RFI¿? que podria pasar ¿?
Título: Re: variable en la URL
Publicado por: дٳŦ٭ en 7 Abril 2007, 19:25 PM
Cita de: dimitrix1 en  7 Abril 2007, 18:57 PM
que eso eso de RFI¿? que podria pasar ¿?

Qué puede pasar? de todo  ;D

Revisate esto. (http://en.wikipedia.org/wiki/Remote_File_Inclusion)
Título: Re: variable en la URL
Publicado por: dimitrix en 7 Abril 2007, 20:09 PM
Haber, yo uso esto:

Citar<?php
include("$canal.php")
?>

y Red Mx puso esto:

Citarif(empty($canal)){//asi verias que no venga la varible vacia
echo'Lo siento no se encontro ese canal';
}else{
//aki puedes poner un switch para seleccionar un canal
// y puede poner una pagina base en la cual solo cambien la lineas
//del codigo para la tele
}

bueno, pues simplemente, cambie una cosa por otra, pero me da error, como quedaria, para pegar.

PD: ¿Que quieres decir con esto?:
explicate mas por cierto no que ya tye avias ido que no se que naaa!!! XD
Título: Re: variable en la URL
Publicado por: Red Mx en 7 Abril 2007, 21:30 PM
es que primero leee un tutorial de PHP por creo andas perdido sabiendo C php se papita

Tutorial php completo formato PDF

http://www.piensaenphp.com/redmx/foro/viewtopic.php?t=37


<?php
if(empty($canal)){//asi verias que no venga la varible vacia
echo'Lo siento no se encontro ese canal';
}else{
//aki puedes poner un switch para seleccionar un canal
// y puede poner una pagina base en la cual solo cambien la lineas
//del codigo para la tele
include("$canal.php")// no se si funcione esta linea
}
?>


Título: Re: variable en la URL
Publicado por: dimitrix en 7 Abril 2007, 22:21 PM
haber el codigo que me has dado, si lo pego tal cual me da problemas, lo he modificado y tal, pero en fin lo he dejado algo así:

<?php
if(empty($canal)){//asi verias que no venga la varible vacia
echo'Lo siento no se encontro ese canal';
}
include("$canal.php")// no se si funcione esta linea
?>

Pero así no me pueden hacer un RFI ¿?

Y Ertai, he mirado la web que me dijistes lo de los switch esos, pero eso sale como comparar 2 o más valores, cual seria el que tendria que usar yo ¿?
Título: Re: variable en la URL
Publicado por: Ertai en 8 Abril 2007, 15:45 PM
Hola,

Aquí te dejo un ejemplo de como usar el switch. Suponiendo que tienes en $i la variable que te llega en la URL (propiamente dicho, GET), este código incluirá el archivo que toca dependiendo de su valor, y en caso de que tuviera un valor "inesperado" o que tu no te esperavas, hará la rama del default.

De esta manera tu código esta mucho más limpio y bonito y, a la vez, evitas el RFI (Remote File Inclusion). Porque? Fijate que yo solo hago includes de un archivo, pero nunca de una variable. Si dejas que lo haga una variable, dejas demasiada libertad al usuario para poder hacer un include de cualquier archivo (incluso tambien de algun archivo maligno alojado en otro servidor).

Para + info leete el link que te dejó Ing_Amc de Wikipedia.


<?php
 
switch ($i) {
     case 
"antena3":
         include(
"antena3.php");
         break;
     case 
"telecinco":
         include(
"telecinco.php");
         break;
     case 
"la_siete":
         include(
"la_siete.php");
         break;
     default:
         include(
"error.php");
 }
?>



Saludetes!
Título: Re: variable en la URL
Publicado por: dimitrix en 8 Abril 2007, 15:50 PM
Muchas gracias, te subiria karmas si pudiese pero el_brujo no lo ha activado  :xD
Título: Re: variable en la URL
Publicado por: dimitrix en 8 Abril 2007, 16:38 PM
Bueno, modificando el codigo a mis necesidades, el codigo me queda así:

<?php
 
switch ($tv) {
     case 
"docutve":
         include(
"canal/docutve.php");
         break;
     case 
"infot5":
         include(
"canal/infot5.php");
         break;
     case 
"24htv":
         include(
"calnal/24htve.php");
         break;
     case 
"sat":
         include(
"calnal/sat.php");
         break;
     case 
"clatino":
         include(
"calnal/clatino.php");
         break;
     case 
"cnn":
         include(
"calnal/cnn.php");
         break;
     case 
"bloomberg":
         include(
"calnal/bloomberg.php");
         break;
     case 
"valenciateve":
         include(
"calnal/valenciateve.php");
         break;
     case 
"rtvv":
         include(
"calnal/rtvv.php");
         break;
     case 
"localmedia":
         include(
"calnal/localmedia.php");
         break;
     case 
"ojossolitarios":
         include(
"calnal/ojossolitarios.php");
         break;
     case 
"solidariatv":
         include(
"calnal/solidariatv.php");
         break;
     case 
"tvvi":
         include(
"calnal/tvvi.php");
         break;
     case 
"c29v":
         include(
"calnal/c29v.php");
         break;
     case 
"aragontv":
         include(
"calnal/aragontv.php");
         break;
     case 
"tvg":
         include(
"calnal/tvg.php");
         break;
     case 
"cparlamento":
         include(
"calnal/cparlamento.php");
         break;
     case 
"ccastello":
         include(
"calnal/ccastello.php");
         break;
     case 
"bloombergtvus":
         include(
"calnal/bloombergtvus.php");
         break;
     default:
         include(
"canal/error.php");
 }
?>


El problema es que lo veo muy grande, eso no implicara que la pagina tarde más en cargar ¿?
Título: Re: variable en la URL
Publicado por: Hans el Topo en 8 Abril 2007, 17:21 PM
el switch solo busca que se cumpla una condición en cuanto se cumple introduce esa página sin más. el switch no ralentiza nada en absoluto, operación básica
Título: Re: variable en la URL
Publicado por: dimitrix en 8 Abril 2007, 20:54 PM
Muchas gracias a todos.