Foros del Web » Programando para Internet » PHP »

kiero hacer + practico este codigo

Estas en el tema de kiero hacer + practico este codigo en el foro de PHP en Foros del Web. <?php if ($seccion!="") { include("$seccion"); } else { include("portada.php"); } ?> sirve para q mediante una URL asi PAG.php? seccion = otrapag.php el include cambie ...
  #1 (permalink)  
Antiguo 08/01/2003, 13:27
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 15 años, 1 mes
Puntos: 4
kiero hacer + practico este codigo

<?php
if ($seccion!="") { include("$seccion"); }
else { include("portada.php"); }
?>


sirve para q mediante una URL asi

PAG.php?seccion=otrapag.php

el include cambie para poder incluir archivos distintos solo cambiando la url

aora kiero hacerlo + practico

como hago para q en vez de poner otrapag.php
solo deba poner
otrapag

?
__________________
Blog | Tecnosquad

Última edición por ArrauKano; 08/01/2003 a las 13:58
  #2 (permalink)  
Antiguo 08/01/2003, 13:34
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 15 años
Puntos: 0
pues tansolo poniendo en el include esto

Código PHP:
if(!$seccion) {
   
$seccion 'portada';
}

include(
$seccion.'.php'); 
Saludos
  #3 (permalink)  
Antiguo 08/01/2003, 13:50
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
cabe destacar que es un script muy 'bruto', y en la practica requiere mucho mas trabajo, ya sean validaciones y mas validaciones pues tambien es un potencial riesgo de seguridad, bueno no se que mas practico puede ser, o a que te refieres con 'mas practico'..es acaso 'menos instrucciones'??


pagina.php?cargaURL=contacto
Código PHP:
<?php
// validaciones varias
$filez $GET_['cargaURL'] != "" $GET_['cargaURL'] : "default";
include 
"path/".$filez.".php";
?>
__________________
=PoWeReD By MySeLf!=
  #4 (permalink)  
Antiguo 08/01/2003, 15:09
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 15 años, 6 meses
Puntos: 0
Podrías usar la sentencia switch

Ya han habido varios mensajes similares, y otra de las alternativas a usar sería la sentencia switch, la cual quedaría así:

Código PHP:
<?
switch ($seccion) {
     case 
"otrapagina":
          include(
"path/otrapagina.php");
     break;
     case 
"otra2":
          include(
"path/otra2.php");
     break;
     default:    
//si no encuentra ninguna de las anteriores puedes configurar una página de error  (error.php) en la que digas que la página no existe en el servidor, etc etc.
          
include("error.php");
     break;
}
?>
ya teneindo este script para llamar a tu página lo harías así:

Cita:
principal.php?seccion=otrapagina

Espero haberte ayudado de algo.

Cita:
P:D: Este script es muy útil para página pequeñas que no requieren de muchas modificaciones.

Saludos.
  #5 (permalink)  
Antiguo 08/01/2003, 15:40
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 15 años, 1 mes
Puntos: 4
Cita:
Mensaje Original por e-miliox
cabe destacar que es un script muy 'bruto', y en la practica requiere mucho mas trabajo, ya sean validaciones y mas validaciones pues tambien es un potencial riesgo de seguridad, bueno no se que mas practico puede ser, o a que te refieres con 'mas practico'..es acaso 'menos instrucciones'??


pagina.php?cargaURL=contacto
Código PHP:
<?php
// validaciones varias
$filez $GET_['cargaURL'] != "" $GET_['cargaURL'] : "default";
include 
"path/".$filez.".php";
?>
claro + practico = - instrucciones

no comprendo donde esta el problema de seguridad me explicas?

PD: use el del chalito pk era lo q taba buscando
PD2: el del cawoq es mas largo por eso no+ no lo use pero tengo otro script parecido q ocupa la base de ese q me diste, gracias, pero ya lo conocia.
__________________
Blog | Tecnosquad
  #6 (permalink)  
Antiguo 08/01/2003, 16:33
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
Código PHP:
<?php
// validaciones varias
$filez $GET_['cargaURL'] != "" $GET_['cargaURL'] : "default";
include 
"path/".$filez.".php";
?>
haber por ejemplo, las validaciones a las que me refiero son
basicamente para que no te ingresen mierda por la URL, ya que
habemos hartos que nos gusta hacer eso para probar que pasa
xD

te doy un ejemplo que pasaria si cuando usabas el script que
pusiste al principio, bueno pues si no le validabas, uno podia
aprovechar el include para mostrar cualquier otro archivo dentro
de tu directorio web, o incluso del servidor, si no esta este ultimo
bien securizado.

lalala.lal.com/mostrar.php?url=../../../etc/passwd por ejemplo...
bueno esos es solo una de las cosas que puedes hacer, claro
esta que es un tipo de ataque muy antiguo y ya casi todos se
cuidan (bueno hay otros que no jeje). Tambien existen otros
tipos de ataque mas avanzados. por ejemplo la 'inyeccion de
codigo' o ultimamente aquellos que se llaman XSS (o cross site
scripting), todos estos, o la mayoria, tiene como objetivo obtener
datos ajenos o en otros casos como los de la inyeccion de codigo
pueden modificar, saturar, espiar, etc los sitios en los que son
utilizados.

Por ultimo, la mayoria de estos ataques a sitios web nacen
principalmente de tres fuentes: la URL, Las Cookies y Los
formularios... por eso la inportancia de cuidar y validar bien el
ingreso de informacion por parte del usuario, pensemos que
todos no haran los que nosotros creemos y habra otros que
seran aun mas curiosos... :)

espero te hayaaclarado u poco la pelicula, un saludo.
__________________
=PoWeReD By MySeLf!=

Última edición por e-miliox; 08/01/2003 a las 16:46
  #7 (permalink)  
Antiguo 08/01/2003, 17:02
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 15 años, 1 mes
Puntos: 4
pero como es un include
si la url ta mala va a mostrar el tipico error de q el include_path ta malo

si fuera por otra via como por ejemplo poner la URL de la carpeta
se veria la index (pk protegi todas las carpetas de esta forma dado q no tengo acceso shell o telnet para ver el .htaccess)

y si poni un pag q no existe error 404

por eso no me preocupa mucho

pero = vale por la explicacion pk si la entendi bien
__________________
Blog | Tecnosquad
  #8 (permalink)  
Antiguo 08/01/2003, 21:58
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
ArrauKano, disculpame, pero no entendiste la Explicación.

La manera en la que estaás incluyendo código, no solo es un serio bug en tu script, sino que es uno de los más viejos y utilizados.
Si tu pusieras en tu script algo como
Tu_pagina_insegura.php?pagina=../../../../../etc/passwd\0

Entonces, según tu script :

Código PHP:
if(!$seccion) {
   
$seccion 'portada';
}

include(
$seccion.'.php'); 
Estarías incluyendo :

include("../../../../../../etc/passwd\0.php");

El \0 es el caracter de fin de linea, porque lo que la linea quedaria trunca al terminar el directorio que el usuario puso, y mostraria el archivo /etc/passwd de tu webserver.

Por eso, es que varios usuarios te están recomendando que seas más cuidadoso con los scripts que usas porque pones en riego todo el webserver.

Por ahora, la solución más acertada que te pasaron, es la de kawoq, así que te recomiendo que hagas un poco más de esfuerzo y utilices esa.

Suerte.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #9 (permalink)  
Antiguo 08/01/2003, 22:17
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 15 años
Puntos: 0
creo que la manera mas practica de controlar todo esto es teniendo en un array las secciones a las que s epuede hacceder, luego solo se pregunta si la seccion que pasaron esta en el array, si esta, hace lo que ya tienes, y si no, muestra el error, ejemplo

Código PHP:

$secciones 
= array('imagenes''codigo''contactos''foro');

if(
in_array($seccion$secciones)) {
   if(!
$seccion) {
       
$seccion 'portada';
   }

    include(
$seccion.'.php');
}
else {
   echo 
'La seccion no existe';

Saludos
  #10 (permalink)  
Antiguo 09/01/2003, 11:21
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 15 años, 1 mes
Puntos: 4
Cita:
Mensaje Original por chalito
creo que la manera mas practica de controlar todo esto es teniendo en un array las secciones a las que s epuede hacceder, luego solo se pregunta si la seccion que pasaron esta en el array, si esta, hace lo que ya tienes, y si no, muestra el error, ejemplo

Código PHP:

$secciones 
= array('imagenes''codigo''contactos''foro');

if(
in_array($seccion$secciones)) {
   if(!
$seccion) {
       
$seccion 'portada';
   }

    include(
$seccion.'.php');
}
else {
   echo 
'La seccion no existe';

Saludos
pense en este codigo + simple

pero no funca

__________________
Blog | Tecnosquad
  #11 (permalink)  
Antiguo 09/01/2003, 11:30
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 15 años, 5 meses
Puntos: 10
hazlo de esta forma

Código PHP:
if(!$seccion) {
    
$seccion 'portada';
}

$secciones = array('portada''imagenes''codigo''contactos''foro');

if(
in_array($seccion$secciones)) {
    include(
$seccion.'.php');
}
else {
   echo 
'la seccion no existe';

Saludos

PD: soy chalito, solo que ya pude recuperar mi nick antiguo, chalito nunca me gusto
__________________
se despide hasta la proxima
Gonzalo Castillo

Última edición por goncafa; 09/01/2003 a las 11:33
  #12 (permalink)  
Antiguo 09/01/2003, 18:20
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 15 años, 1 mes
Puntos: 4
alguien probo los codigos antes de postear?

ninguno me funciono

( tenganme paciencia, aun no aprendo vien el php (recien toy partiendo) )
__________________
Blog | Tecnosquad
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 14:50.