[TUTORIAL] Sistema de Modulación index.php?accion=pagina

breedx

New Member
Messages
4
Reaction score
0
Points
0
hola he visto que muchos estais interesados en aplicar un sistema de modulación a vuestro sitio web pero no entendeis muy bien que es lo que debeis hacer ni como lo teneis que aplicar. Por esto, me he decidido a crear este tutorial que constará de una unica parte en la que espero explicar con todo detalle el funcionamiento de un sistema de modulación del tipo:

archivo.php?id=seccion

Dicho esto empezaré dando una introducción sobre la utilidad de este sistema.
Un sistema de Modulación sirve para evitar tener que crear tantos archivos como secciones tengamos, por ejemplo, Si yo tuviera una web que tuviera la siguientes secciones:


  • Principal
  • Galeria
  • Informacion
  • Descargas
Tendría que crear 3 archivos diferentes con el diseño de la web y el contenido de cada seccion, pero con el sistema de modulación solamente tendremos que tener creado un solo archivo con el diseño (normalmente es el index.php) y todas las secciones restantes solamente tendrían el contenido.

Voy a llevar esta idea a la realidad, para ello voy a hacer lo siguiente:


  • Crearé un archivo llamado index.php en el cual estará el diseño de la web con todos los menus creados pero dejaré el lugar donde se verá el contenido vacio.
  • Crearé un archivo llamado principal.php en el que estará el contenido que se verá en la principal
  • Crearé un archivo llamado informacion.php con el texto que yo desee, por ejemplo: Un Sistema de modulacion nos facilita el desarrollo de una web
  • El archivo index.php podría ser algo como:
    PHP:
     <html>
    <head>
    <title>Pagina web</title>
    </head>
    <body>
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
    <tr>
    <td valign="top" width="20%">:: Principal<br>
    :: <a href="index.php?id=galeria">Galeria</a><br>
    :: <a href="index.php?id=informacio">Información</a><br>
    :: <a href="index.php?id=descargas">Descargas</a></td>
    <td valign="top">
    <?PHP
    if (isset($_GET['id'])) {
    if (!empty($_GET['id']) && $_GET['id'] != "index") {
    if (file_exists($_GET['id'].".php")) {
    include ($_GET['id'].".php");
    } else {
    echo "No existe esta seccion";
    }
    } else {
    include ("principal.php");
    }
    } else {
    include ("principal.php");
    }
    ?></td>
    </tr>
    </table>
    </body>
    </html>
  • principal.php
    PHP:
    Aqui pones el texto que desees
  • informacion.php
    PHP:
    Un Sistema de modulacion nos facilita el desarrollo de una web
    Deducimos, por tanto, que el codigo que realiza la modulacion es el siguiente:
    PHP:
    <?PHP
        if (isset($_GET['id'])) {
            if (!empty($_GET['id']) && $_GET['id'] != "index") {
                if (file_exists($_GET['id'].".php")) {
                    include ($_GET['id'].".php");
                } else {
                    echo "No existe esta seccion";
                }
            } else {
                include ("principal.php");
            }
        } else {
            include ("principal.php");
        }
    ?>
    Lo que hago es comprobar si existe la variable superglobal id, si existe compruebo si no es igual a index (provocaría un bucle infinito) y no esta vacio. Despues compruebo si existe el archivo correspondiente a la seccion que deseo ver y si existe lo incluyo para que se vea, sino muestro un error.

    Si no ha elegido ninguna seccion, es decir, si no existe la variable superglobal id, se muestra la pagina principal
  • El sistema se aplica del siguiente modo:
    PHP:
    <a href="index.php?id=galeria">Galeria</a><br>
    <a href="index.php?id=informacion">Información</a><br>
    <a href="index.php?id=descargas">Descargas</a>
  • Para poder añadir mas secciones, solamente debes crear un archivo por ejemplo que se llame archivo.php y crear otro enlace del siguiente tipo:
    PHP:
    <a href="index.php?id=archivo">Seccion</a><br>
  • Notas:
    1- Para estos son para paginas de un mismo directorio, si tus archivos se encuentran en un directorio diferente nada más le agregas el directorio.
    2- Si quieres cambiar el id por alguna palabra sustituyes la palabra id por la que quieres.

    Un saludo,no se olviden agradecer.
 

pedromalito

New Member
Messages
6
Reaction score
0
Points
0
Buen tutorial aunque le falta algo sobre seguridad, en estos dias hay que enfocar la programacion mucho a la seguridad Informatica!!
 

TonnyORG

I Code Things
Community Support
Messages
5,914
Reaction score
16
Points
38
Buen tuto, algo parecido tome de la seccion de tutoriales en ingles para correrlo en mi sitio el cual funciona como mencionas arriba.
http://mipagina.com/sitio.php?ver=pagina1

Les recomiendo no utilizar el nombre "index.php" y utilizar algo mas como "sitio.php" o "portal.php" para que la url se vea mas decente y asi podran causar la imprecion de que usan un cms, lo mismo con la variable "id" utilziar "ver" "modulo" etc ;)
 
Last edited:

medina

x10 Addict
Community Support
Messages
1,809
Reaction score
6
Points
38
Alguien sabe como hacerla modular pero en vez de que quede ?id=XXX que sea /XXX osea usar paréntesis, y esta que pusieran como modular 2 veces como id?=descargas&ver=2 o algo asi... al igual si se puede que empliquen como tendria q ser para que fuera /descargas/2
 

eZakto

Member
Messages
782
Reaction score
1
Points
18
Está bien, para darse la idea por lo menos. Pero es muy cierto eso de la seguridad. Con este método, alguien podría entrar en: index.php?id=../../../archivo fácilmente, y eso hace muy vulnerable el sistema.

Saludos.

PD: Medina, eso se hace con rewrite engine de apache. Busca en google que hay miles de formas de hacerlo ;) Si estoy con ganas hago un tuto básico :p
 
Top