elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Como se hacen páginas estilo index.php?pagina=1
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como se hacen páginas estilo index.php?pagina=1  (Leído 5,266 veces)
jdc


Desconectado Desconectado

Mensajes: 3.406


Ver Perfil WWW
Como se hacen páginas estilo index.php?pagina=1
« en: 26 Agosto 2009, 21:50 pm »

Pues eso... Me gustaría saber como se fabrican esas urls ya que he buscado pero llegué hasta listados de resultados pero no logró entender como funciona...
 
Se que en el servidor no están las páginas "pagina=1", "pagina=2", etc... Sino que entiendo que "pagina" sería una variable y "1" sería el valor... Pero como se crea algo así? Sería con php y mysql por obligación o podría ser sin base de datos?


En línea

braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: Como se hacen páginas estilo index.php?pagina=1
« Respuesta #1 en: 26 Agosto 2009, 22:01 pm »

Podría ser sin base de datos de esta forma:
Código
  1. <?
  2. if ($_GET['pagina']==1)
  3. {
  4. include('pagina.html');
  5. }
  6. elseif ($_GET['pagina']==2)
  7. {
  8. include('lalala.ototo');
  9. }
  10. ...
  11. ?>
  12.  


En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Como se hacen páginas estilo index.php?pagina=1
« Respuesta #2 en: 26 Agosto 2009, 22:25 pm »

he visto casos que hacen esto:
Código
  1. <?php
  2. if($_GET['pagina'])
  3. include('inclusiones/'.$_GET['pagina'].'.php');
  4. ?>
y no es chiste xD
index.php?pagina=../../imagenes/shell_lfi.jpg%00
En línea

jdc


Desconectado Desconectado

Mensajes: 3.406


Ver Perfil WWW
Re: Como se hacen páginas estilo index.php?pagina=1
« Respuesta #3 en: 26 Agosto 2009, 22:53 pm »

Entonces no es seguro usarlo así? Tenía pensado hacer una página con noticias o lo que sea con base de datos donde la base tendría una tabla y cada fila de la tabla se mostraria en una página... Por ahora la seguridad sería postre ya que quiero aprender la forma básica y luego avanzar (incluyendo seguridad claro está) por cierto como se evita el local file included que mencionar WHK?
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Como se hacen páginas estilo index.php?pagina=1
« Respuesta #4 en: 27 Agosto 2009, 00:24 am »

para eso hay filtros, por ejemplo puedes usar expresiones regulares para tomar el valor de una pagina o usar (int) sy es numérico y si usas mysql hay filtros como mysql escape real string.
Formas cortrectas:

index.php?pagina=contacto
Código
  1. <?php
  2. $incluir = 'secciones/'.preg_replace('|[^A-Za-z0-9_]|i', '', $_GET['pagina']).'.php';
  3. if(file_exists($incluir))
  4. include($incluir);
  5. else
  6. include('secciones/404.php');
  7. ?>

index.php?id=9
Código
  1. <?php
  2. $incluir = 'secciones/'.(int)$_GET['pagina'].'.php';
  3. if(file_exists($incluir))
  4. include($incluir);
  5. else
  6. include('secciones/404.php');
  7. ?>

index.php?id_sql=pagina
Código
  1. <?php
  2. $incluir = mysql_query('
  3. select *
  4. from secciones
  5. where sección = \''.mysql_real_escape_string($_GET['pagina']).'\'
  6. ', $manejador);
  7. .... mysql_fetch_array($incluir, MYSQL_ASSOC) .....
  8.  
  9. if(file_exists($incluir))
  10. include($incluir);
  11. else
  12. include('secciones/404.php');
  13. ?>
« Última modificación: 27 Agosto 2009, 00:33 am por WHK » En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Como se hacen páginas estilo index.php?pagina=1
« Respuesta #5 en: 27 Agosto 2009, 01:10 am »

he visto casos que hacen esto:
Código
  1. <?php
  2. if($_GET['pagina'])
  3. include('inclusiones/'.$_GET['pagina'].'.php');
  4. ?>
y no es chiste xD
index.php?pagina=../../imagenes/shell_lfi.jpg%00

pnwd XD
En línea

Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Como se hacen páginas estilo index.php?pagina=1
« Respuesta #6 en: 27 Agosto 2009, 08:44 am »

Yo estas cosas las veo más claras con un switch que con un elseif aunque funciona igual, yo suelo hacer algo así:

Código
  1. $var=filtra($_GET['var']);
  2.  
  3. switch($var){
  4.    case "principal":
  5.           include("main.php");
  6.           break;
  7.  
  8.    case "galeria":
  9.           include("gallery.php");
  10.           break;
  11.  
  12.    case "contacto":
  13.           include("contact.php");
  14.           break;
  15.  
  16.    default:
  17.           include("error.php");
  18.           break;  
  19. }

Y hago la llamada así: ?var=galeria (por ejemplo)

Siempre uso la función filtra en la que suelo hacer una pasada por funciones para evitar tags html, php, sql injection etc...

Algo así:

Código
  1. function filtra($string){
  2.   $string=htmlentities(strip_tags(trim(no_sql($string))));
  3.   return $string;
  4. }

La función no_sql no es propia de PHP pero puedes encontrar muchas anti sql-injection por internet, de hecho por aquí en el foro hay varias.

Un saludo!
En línea

jdc


Desconectado Desconectado

Mensajes: 3.406


Ver Perfil WWW
Re: Como se hacen páginas estilo index.php?pagina=1
« Respuesta #7 en: 2 Septiembre 2009, 22:33 pm »

Y la función que posteo WHK también impide un eventual sql inyection no? Elimina otros caracteres que no sean mayúsculas, minúsculas o números por ejemplo en la de página=página
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines