Foros del Web » Programando para Internet » PHP »

Como hacer lo de ...secciones.php?id=2312

Estas en el tema de Como hacer lo de ...secciones.php?id=2312 en el foro de PHP en Foros del Web. Hola, como habran notado no se mucho de php aún, y me gustaría hacer en mi web lo de: Ej.: '.../secciones.php?id=2' , '.../secciones?name=foro', esas cosas ...
  #1 (permalink)  
Antiguo 21/11/2003, 10:23
 
Fecha de Ingreso: junio-2003
Mensajes: 26
Antigüedad: 20 años, 10 meses
Puntos: 0
Pregunta Como hacer lo de ...secciones.php?id=2312

Hola, como habran notado no se mucho de php aún, y me gustaría hacer en mi web lo de:
Ej.: '.../secciones.php?id=2' , '.../secciones?name=foro', esas cosas que ustedes saben que se hacen para simplificar el trabajo.

Gracias.

NeOnsKuLL
  #2 (permalink)  
Antiguo 21/11/2003, 11:12
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Sobre modulacion

Lo puedes hacer de la siguiente manera :
Código PHP:

 $seccion
= !isset($seccion) ? $seccion;
       
$seccion=$_GET[seccion];
                        switch (
$seccion) {
                           case 
pag1:
                               include(
"pag1.php");
                               break;
                           case 
pag2:
                               include(
"pag2.php");
                               break;
                           case 
pag3:
                               include(
"pag3.php");
                              break;
           default:
                               include(
"blank.php");
                        } 
para llamarlas

Código PHP:
 vinculo1index.php?seccion=pag1
 vinculo2
index.php?seccion=pag2
 vinculo3
index.php?seccion=pag3 
Si no entiendes date una vuelta por las FAQ´s del Foro. Ahí hay un mensaje de Cluster sobre eso.

Salu2
__________________
Ing. Reynier Pérez Mira
  #3 (permalink)  
Antiguo 21/11/2003, 22:49
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
También te puede interesar el último tutorial que escribí al respecto, sobre la creación de Webs modulares, que está en ZonaPHP :

http://www.zonaphp.com/index.php?mod...ion=leer&id=34

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #4 (permalink)  
Antiguo 22/12/2003, 14:12
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años, 1 mes
Puntos: 0
ahora mismo comienzo a leerlo
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #5 (permalink)  
Antiguo 22/12/2003, 17:40
 
Fecha de Ingreso: junio-2002
Ubicación: Uruguay
Mensajes: 427
Antigüedad: 21 años, 10 meses
Puntos: 0
Wenass!
Aka te traigo una forma un poko mas simple de hacer pero muy efectiva:

1. Hace un diseño con todo lo que quiere que tengas MENOS el contenido.


2. Pon este codigo en la parte de tu diseño donde kieres q aparezca el contenido:
<?php include("$ID") ?>


3. Guarda tu pagina como main.php (acuerdate que puedes tener otro nombre en ves de main.php, como index.php, o home.php) el nombre de la pagina no importa lo unico que es importante aca es el codigo y el termino .php de la pagina.

4. Ahora has otra pagina y nombrala noticias.html (acuerdate que es un ejemplo y puedes cambiar el nombre de tus paginas a tus maneras) despues inserta el contenido de esa pagina nomas, EL CONTENIDO NOMAS..y guardalo como tu quieras.


5. La ultima parte es ahora sube a tu servidor de web tus paginas main.php y noticias.html y hasles una prueba aver si funcionan al url de abajo:

http://www.tusite.com/main.php?ID=noticias.html

Un saludo! ;)
  #6 (permalink)  
Antiguo 22/12/2003, 17:56
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
este script es el + seguro y simple q logre hacer.
solo debes llamar la funcion mostrar_zona() en donde kieres q se vea el contenido de la web modular.

las primeras variables son la carpeta donde estan las webs q vas a incluir, la web por defecto y una de error en caso de no existir si alguien escribe cualkier valor en la variable $zona en la url.

Código PHP:
<?php
$zona_carpeta 
"zonas";
$zona_predeterminada "portada";
$zona_error "error";

function 
mostrar_zona()
{
global 
$zona_carpeta$zona_predeterminada$zona_error$zona;
        if(!empty(
$zona) && file_exists("$zona_carpeta/$zona.php")) { 
        include(
"$zona_carpeta/$zona.php");
    } elseif(!empty(
$zona) && !file_exists("$zona_carpeta/$zona.php")) { 
        echo
"zona desconocida<br>";
        include(
"$zona_carpeta/$zona_predeterminada.php");
    } else { 
        include(
"$zona_carpeta/$zona_predeterminada.php");
    }
}
?>
__________________
Blog | Tecnosquad
  #7 (permalink)  
Antiguo 23/12/2003, 10:39
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Cita:
Mensaje Original por elanime
Wenass!
Aka te traigo una forma un poko mas simple de hacer pero muy efectiva:

1. Hace un diseño con todo lo que quiere que tengas MENOS el contenido.


2. Pon este codigo en la parte de tu diseño donde kieres q aparezca el contenido:
<?php include("$ID") ?>


3. Guarda tu pagina como main.php (acuerdate que puedes tener otro nombre en ves de main.php, como index.php, o home.php) el nombre de la pagina no importa lo unico que es importante aca es el codigo y el termino .php de la pagina.

4. Ahora has otra pagina y nombrala noticias.html (acuerdate que es un ejemplo y puedes cambiar el nombre de tus paginas a tus maneras) despues inserta el contenido de esa pagina nomas, EL CONTENIDO NOMAS..y guardalo como tu quieras.


5. La ultima parte es ahora sube a tu servidor de web tus paginas main.php y noticias.html y hasles una prueba aver si funcionan al url de abajo:

http://www.tusite.com/main.php?ID=noticias.html

Un saludo! ;)
Elanime, esta manera de hacer un website modular, como explico en el artículo que mencioné antes, es una de las maneras más inseguras de hacerlo y que abren muchas posibilidades para dejar el servidor web vulnerable a un ataque. TE recomendaria que no la utilices.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #8 (permalink)  
Antiguo 23/12/2003, 10:43
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Cita:
Mensaje Original por ArrauKano
este script es el + seguro y simple q logre hacer.
solo debes llamar la funcion mostrar_zona() en donde kieres q se vea el contenido de la web modular.

las primeras variables son la carpeta donde estan las webs q vas a incluir, la web por defecto y una de error en caso de no existir si alguien escribe cualkier valor en la variable $zona en la url.

Código PHP:
<?php
$zona_carpeta 
"zonas";
$zona_predeterminada "portada";
$zona_error "error";

function 
mostrar_zona()
{
global 
$zona_carpeta$zona_predeterminada$zona_error$zona;
        if(!empty(
$zona) && file_exists("$zona_carpeta/$zona.php")) { 
        include(
"$zona_carpeta/$zona.php");
    } elseif(!empty(
$zona) && !file_exists("$zona_carpeta/$zona.php")) { 
        echo
"zona desconocida<br>";
        include(
"$zona_carpeta/$zona_predeterminada.php");
    } else { 
        include(
"$zona_carpeta/$zona_predeterminada.php");
    }
}
?>
Arraukano, si vos utilizás este acercamiento para resolver el tema de webs modulares, asegurate que nunca nadie sepa como es tu código, porque ahora que lo se, puedo enviarte por URL una variable $zona_carpetas con el url de cualquier archivo de tu web-server, y finalizar el string con un caracter Nulo y hacerle creer al PHP que el string finaliza alli. Como el caso anterior de elanime, es un método inseguro incluir directamente archivos pasados por URL.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #9 (permalink)  
Antiguo 23/12/2003, 10:58
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
eso keria preguntarlo + adelante, pero weno, como se dio el tema, como puedo hacer para impedir q esa variable sea enviada con get? pk es una variable del mismo script, tendría sera con alguna funcion parecidaa global pero al reves cierto?

en too caso, eso es un ejemplo no+ puedo cambiar el nombre de esa variable ahora q la conocen.
__________________
Blog | Tecnosquad
  #10 (permalink)  
Antiguo 23/12/2003, 14:25
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
pero si le pasas esa variable al script por la url, durante la ejecucion toma de nuevo el valor q yo le di, por lo tanto no le veo el riesgo, siempre va a kedar la inclusion cerrada a la carpeta de dicha variable,

+ seguro todavía es poniendole ./ al nombre de la carpeta, asi boligo a q se tome desde el path de ejecucin del script mismo.
__________________
Blog | Tecnosquad
  #11 (permalink)  
Antiguo 23/12/2003, 15:52
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Para ponértelo mucho más sencillo...
si yo llamara a tu script con

http://tusitio.com/index.php?zona=....../etc/passwd\0

Podria ver el /etc/passwd de tu server.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #12 (permalink)  
Antiguo 23/12/2003, 19:28
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
ya probe y no ocurre eso,
cuando has visto q una inclusion tipo
Código PHP:
<php?
include(
"/carpeta/../../../algo.algo");
?> 
logre resultado true?


= lei tu artículo y cambie las variables por constantes y esto me resulto:

Código PHP:
<?php
define
("ZONA_CARPETA""zonas");
define("ZONA_DEFECTO""news");
define("ZONA_ERROR""news");
define("WEB_PATH""E:\www\reloaded\\\");
define("
ZONA_ERROR", "./templates");
define("
TEMA_DEFECTO", "");

function mostrar_zona()
{
    global $zona_carpeta, $zona_predeterminada, $zona_error, $zona;
        if(!empty($zona) && file_exists(ZONA_CARPETA."
/$zona.php")) { 
            echo"
ZONA ESCOGIDA";
            include(ZONA_CARPETA."
/$zona.php");
        }    elseif(!empty($zona) && !file_exists(ZONA_CARPETA."
/$zona.php")) { 
            echo"
ERROR";
            include(ZONA_CARPETA."
/".ZONA_DEFECTO.".php");
        }    else { 
            echo"
DEFECTO";
            include(ZONA_CARPETA."
/".ZONA_DEFECTO.".php");
        }
}
?>
lo q aun no logro hacer es reemplazar $zona por $_GET['zona'], cuando lo hago el if me manda un error, podrías ayudarme con eso? asi podría dejar por hecho q el script es totalmente seguro.
__________________
Blog | Tecnosquad

Última edición por ArrauKano; 23/12/2003 a las 20:37
  #13 (permalink)  
Antiguo 23/12/2003, 20:07
Avatar de dooky  
Fecha de Ingreso: diciembre-2002
Ubicación: echo$REMOTE_ADDR;
Mensajes: 493
Antigüedad: 21 años, 3 meses
Puntos: 0
y para hacerlo asi.. index.php?seccion=algo&algo=mas&mas=mucho&mucho=de masiado ... con varias &&& ... ya que solo puedo hacerlo que uno.. la idea es que el archivo "algo" ( donde hago el primer include ) pueda crear todas las otras paginas dinamicas, sin necesidad de hacer includes..
__________________
Eduardo Toloza
SatisFactor.io - NPS
  #14 (permalink)  
Antiguo 23/12/2003, 23:15
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
ArrauKano... seguís en el mismo error.
Tu problema de seguridad está en esta Línea :

include(ZONA_CARPETA."/$zona.php");

y en dejar expuesta, en un include, una variable que es modificable por el usuario. Ahora no recuerdo exactamente el código, pero puedo obtener un string terminado con el caracter nulo y hacer algo como:

$zona = "../un_archivo_seguro.txt\0";
include("tu_carpeta/$zona.php");

Y eso va a intentar incluir:

tu_carpeta/../un_archivo_seguro.txt

Te invito a que hagas la prueba y te des cuenta que ese acercamiento al problema es completamente inseguro.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #15 (permalink)  
Antiguo 24/12/2003, 12:43
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
otra vez o ves el código completo, esa linea agrega automaticamente la extension .php a la variable $zona, por lo tanto solo se podían incluir archivos con extension .php.

imgina hacer esto

pag.php?zona=../../../../etc/passwd

incluiría por supuesto un archivo /etc/passwd.php q por supuesto no existe.

En cualquier caso, sigo abiertoa la crítica, pk = necesito desarrollar bien este código. como dije, necesito reemplazar $zona por $_GET['zona'] en todo el script, pero al ponerlo asi dentro de algunas funciones me tira error, creo q hasta ahora es la única mayor pifia.
__________________
Blog | Tecnosquad
  #16 (permalink)  
Antiguo 24/12/2003, 13:34
Avatar de philipppe  
Fecha de Ingreso: marzo-2002
Ubicación: Uruguay
Mensajes: 706
Antigüedad: 22 años, 1 mes
Puntos: 0
excelentísimo artículo webstudio, muchas gracias
no se lo pierdan, lo deben leer!
__________________
Plugin de AdSense para Wordpress: http://adsensei.org
  #17 (permalink)  
Antiguo 24/12/2003, 15:37
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Cita:
Mensaje Original por ArrauKano
otra vez o ves el código completo, esa linea agrega automaticamente la extension .php a la variable $zona, por lo tanto solo se podían incluir archivos con extension .php.

imgina hacer esto

pag.php?zona=../../../../etc/passwd

incluiría por supuesto un archivo /etc/passwd.php q por supuesto no existe.

En cualquier caso, sigo abiertoa la crítica, pk = necesito desarrollar bien este código. como dije, necesito reemplazar $zona por $_GET['zona'] en todo el script, pero al ponerlo asi dentro de algunas funciones me tira error, creo q hasta ahora es la única mayor pifia.
ARrauKano, decime que si leiste mi mensaje anterior asi no seguimos perdiendo tiempo. Te dije que NO IMPORTA que le pongas el ".php" al final, porque igualmente puedo enviarte el caracter nulo por la linea GET y hacerle creer al php que la linea termina donde YO le digo que termine.

pag.php?zona=../../../../etc/passwd%00

Si tenés MAgic_quotes_GPC = Off, acabo de hackearte el sitio.

Ahora, por favor, cuando te escribo algo, por favor tomate el tiempo de leerlo.

Saludosl
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #18 (permalink)  
Antiguo 27/12/2003, 20:21
Avatar de dooky  
Fecha de Ingreso: diciembre-2002
Ubicación: echo$REMOTE_ADDR;
Mensajes: 493
Antigüedad: 21 años, 3 meses
Puntos: 0
Cita:
Mensaje Original por dooky
y para hacerlo asi.. index.php?seccion=algo&algo=mas&mas=mucho&mucho=de masiado ... con varias &&& ... ya que solo puedo hacerlo que uno.. la idea es que el archivo "algo" ( donde hago el primer include ) pueda crear todas las otras paginas dinamicas, sin necesidad de hacer includes..

Alguien puede responder esto?
__________________
Eduardo Toloza
SatisFactor.io - NPS
  #19 (permalink)  
Antiguo 28/12/2003, 20:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
dooky

Si usas isset() (o empty()) para averiguar si una de X variables que montas en el URL con tus & existe .. podrás hacer una série de IF anidados .. tantos como varibles que corresponden a secciones y demás parámetros de páginas o acciones a realizar.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #20 (permalink)  
Antiguo 29/12/2003, 08:28
Avatar de dooky  
Fecha de Ingreso: diciembre-2002
Ubicación: echo$REMOTE_ADDR;
Mensajes: 493
Antigüedad: 21 años, 3 meses
Puntos: 0
ok.. Gracias.


Saludos,
__________________
Eduardo Toloza
SatisFactor.io - NPS
  #21 (permalink)  
Antiguo 29/12/2003, 12:26
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
bueno, me rindo, deje ese codigo, ahora toy usando el del articulo, y hasta ahora he logrado hacerle bastantes retoques q lo hacen + interesante, por ejemplo, hice q el layer por defecto kedara definido segun una cookie, asi cada vez q yo mate la cookie y la vueva a establecer tengo una web de igual contenido con una "piel" distinta, tambien agregue ese comentario al final de las notas q era para agregar el nombre del modulo al titulo de la web. tambie con un foreach() logre imprimir un link para cada seccion en un menu sencillo.
ahora tengo otra duda. ¿como puedo hacer para q el array conf[x][y] lo pueda dividir en + "categorias" para poder imprimir bucles de secciones de distinto tipo?
la idea seria hacer algo como esto:
seccion1
foro
guestbook
noticias
seccion2
chat
creditos
galeria

hasta ahora solo puedo hacer esto:
seciones
chat
creditos
foro
galeria
guestbook
noticias
__________________
Blog | Tecnosquad

Última edición por ArrauKano; 29/12/2003 a las 12:33
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 06:07.