Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] web modular

Estas en el tema de web modular en el foro de PHP en Foros del Web. Hola a todos! Hace tiempo atrás (mucho tiempo), tenía una web "modular" ej. index.php?id=xxxx que si la sección del id era nula mostraba el home ...
  #1 (permalink)  
Antiguo 02/07/2013, 20:37
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
web modular

Hola a todos!

Hace tiempo atrás (mucho tiempo), tenía una web "modular" ej. index.php?id=xxxx
que si la sección del id era nula mostraba el home y si se intentaba ingresar a una sección que no existía mostraba error 404, lo que recuerdo era algo así:

Código PHP:
<?
$id
=$_GET['id'];

if (
$id==NULL) {
   include(
"include/home.php");
} else {
    
    include(
"include/".$id.".php");
?>
Lo que no puedo y/o no recuerdo es como hacer para que al tratar de ingresar a una sección que no existe muestre el error 404.

Espero haber sido claro, atento a sus respuestas, gracias.
  #2 (permalink)  
Antiguo 02/07/2013, 21:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: web modular

Puedes usar is_file() para comprobar si el archivo a incluir existe, si no existe entonces bien puedes mostrar dicha pagina de error.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 03/07/2013, 18:32
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: web modular

Ahora esta asi:

Código PHP:
$id=$_GET['id'];
$file"include/".$id.".php";

if (
$id=='') {
       include(
"include/home.php");
} elseif (
is_file($file)) {
    include(
$file);
} else {
    include(
'include/404.php');

y me devuelve este error solo en el index

Cita:
Notice: Undefined index: id in C:\xampp\htdocs\index.php on line 4
  #4 (permalink)  
Antiguo 03/07/2013, 18:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: web modular

Eso error es porque no siempre va a existir dicha variable en la URL, ¿no te parece?

Debes comprobar que exista primero la variable antes de usarla, ejemplo:
Código PHP:
Ver original
  1. $id = ! empty($_GET['id']) ? $_GET['id'] : NULL;
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 03/07/2013, 18:52
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: web modular

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso error es porque no siempre va a existir dicha variable en la URL, ¿no te parece?

Debes comprobar que exista primero la variable antes de usarla, ejemplo:
Código PHP:
Ver original
  1. $id = ! empty($_GET['id']) ? $_GET['id'] : NULL;
Gracias funciona, ahora otra pregunta, con este codigo mi web es segura ante xss?
he probado distintos cogidos y urls lo cual me muestra el error404 alguna forma de verificar si es segura? gracias
  #6 (permalink)  
Antiguo 03/07/2013, 18:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: web modular

Primero estudia qué es un ataque XSS para que te puedas hacer de una perspectiva propia, en breve puedo decir (mas no asegurar) que no es inseguro dicho fragmento de código.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 03/07/2013, 19:03
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: web modular

Cita:
Iniciado por pateketrueke Ver Mensaje
Primero estudia qué es un ataque XSS para que te puedas hacer de una perspectiva propia, en breve puedo decir (mas no asegurar) que no es inseguro dicho fragmento de código.
Hasta donde sé, XSS son ataques de inclusion de codigo html, javascript, php etc. corrigeme si no es asi, gracias dare el tema como solucionado :D
  #8 (permalink)  
Antiguo 03/07/2013, 19:07
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: web modular

Digamos que si para leer $_GET hicieras esta brutalidad:

Cita:
extract($_GET);
Ya tendrias EL PROBLEMA... pero lo bueno es que es poco conocida esa funcion aunque aqui se ha tratado recientemente jeje
__________________
Salu2!
  #9 (permalink)  
Antiguo 03/07/2013, 19:32
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: web modular

Cita:
Iniciado por Italico76 Ver Mensaje
Digamos que si para leer $_GET hicieras esta brutalidad:



Ya tendrias EL PROBLEMA... pero lo bueno es que es poco conocida esa funcion aunque aqui se ha tratado recientemente jeje
no se como aplicarlo, pero de la forma que lo hice no paso nada
  #10 (permalink)  
Antiguo 03/07/2013, 20:54
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: web modular

Ni lo hagas.....pero es un ejemplo de como una sola linea de codigo te puede generar injections aunque claro esta super-documentado que no debe hacerse asi

Cita:
<?php
extract($_GET);
y si viene cualquier cosa por GET se convierte automaticamente en una variable local... asi te imaginas puede alterar el funcionamiento de tu script.

Otro error seria usar $_REQUEST donde no sabes a ciencia cierta de donde provienen los datos (GET / POST / COOKIES )
__________________
Salu2!

Etiquetas: modular
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 22:01.