Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigoo-WD

Include seguro nao funicona

Recommended Posts

Prezados membros do IMasters,

 

 

Venho pedir-lhes que me ajudem nessa include, para que ela se torne segura, ja procurei na internet varios metodos de include seguro, usando o eregi, ereg, preg_match e file_exists, mas nenhum metodo deu certo.

 

Eu estava tentando botar com que ele excluisse as letras "a-z", os pontos "\." e os traços "\-_", e depois ele verificasse os arquivos para ver se existe, se existir ele vai exercutar a ação, senão ele ira para a página "404.html"

 

Me ajudem a encontrar o erro, ultima vez que eu deixei o codigo, ele estava assim:

 

<?php
//cabeçalho do site
$pag =& $_GET['pag'];
$produto =& $_GET['produto'];
$dir = "chamadas/"; //pode ser branco
if(preg_match("^/[a-z\-_\.]{1}$/i", $pag, $produto)){ //para ter certeza que $pag é correto.
if(file_exists($dir . $pag or $produto)){
if(isset($_GET['pag'])){
                if ($pag==1){
                        include 'conteudo-index.php';
                }elseif ($pag==2){
                        include 'conteudo-jogosonline.php';
                }elseif ($pag==3){
                        include 'conteudo-produtos.php';
                }elseif ($pag==4){
                        include 'conteudo-downloads.php';
                }elseif ($pag==5){
                        include 'conteudo-contato.php';
                }
		}elseif(isset($_GET['produto'])){
                if ($produto==1){
                        include 'produtos/hack-roots.php';
                }elseif ($produto==2){
                        include 'produtos/abenobashi.php';
                }elseif ($produto==3){
                        include 'produtos/ai-yori-aoshi.php';
                }elseif ($produto==4){
                        include 'produtos/ai-yori-aoshi-enishi.php';
                }
		}
}else{
echo '404 - Not Found';
}
}else{
include '404.html';
}
	   ?>

 

o "pag", puxaria os arquivos que estão na pasta "chamadas", ja o "produto", puxaria os arquivos da pasta "produtos".

 

 

Peço ajuda de voces para solucionar o problema x.x

 

 

 

Atenciosamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow cara, ainda não consegui fazer dar certo.

 

Tentei fazer como você disse Beraldo, de mudar de lugar o "^", mas não adiantou muita coisa, porque agora, o site ta indo direto para a pagina 404.html(em qualquer link que eu vá), sendo assim segui a ideia do Matias.

 

Entrei no link do outro topico, li e re-li o tópico, tentei de todos os modos propostos, alguns eu não gostei pos não funciona trocando as variaveis (como por exemplo o do Matias, falando sobre switch e case, e então eu fui praticando, mas no final so consegui ficar com 2 codigos.

 

O primeiro é que o código em vez de aparecer as páginas, ele vai direto para a página 404.html:

 

<?php 
//cabeçalho do site 
$pag =& $_GET['pag']; 
$produto =& $_GET['produto']; 
$dir = "chamadas/"; //pode ser branco 
if(preg_match("/^[a-z\-_\.]{1}$/i", $pag, $produto)){ //para ter certeza que $pag é correto. 
if(file_exists($dir . $pag or $produto)){ 
if(isset($_GET['pag'])){ 
                if ($pag==1){ 
                        include 'conteudo-index.php'; 
                }elseif ($pag==2){ 
                        include 'conteudo-jogosonline.php'; 
                }elseif ($pag==3){ 
                        include 'conteudo-produtos.php'; 
                }elseif ($pag==4){ 
                        include 'conteudo-downloads.php'; 
                }elseif ($pag==5){ 
                        include 'conteudo-contato.php'; 
                } 
                }elseif(isset($_GET['produto'])){ 
                if ($produto==1){ 
                        include 'produtos/hack-roots.php'; 
                }elseif ($produto==2){ 
                        include 'produtos/abenobashi.php'; 
                }elseif ($produto==3){ 
                        include 'produtos/ai-yori-aoshi.php'; 
                }elseif ($produto==4){ 
                        include 'produtos/ai-yori-aoshi-enishi.php'; 
                } 
                } 
}else{ 
echo '404 - Not Found'; 
} 
}else{ 
include '404.html'; 
} 
           ?>

 

E o segundo código que cria um alerta em todas as páginas que eu entro (da página inicil até a página index.php?pag=http://www.google.com.br), o que não deveria ocorre:

 

<?php
$pag =& $_GET['pag'];
$produto =& $_GET['produto'];

 
$error = false; 
if(file_exists($pag or $produto) ){ 
$error ? $pag = 'chamadas/conteudo-index.php' : null; 
include ($pag); 
$error ? $produto = 'chamadas/conteudo-index.php' : null; 
include ($produto); 
}else{
echo "<script>window.alert(\"Não tente fazer malandragem com meu site!\")</script>"; 
}

if(isset($_GET['pag'])){
                if ($pag==1){
                        include 'chamadas/conteudo-index.php';
                }elseif ($pag==2){
                        include 'chamadas/conteudo-jogosonline.php';
                }elseif ($pag==3){
                        include 'chamadas/conteudo-produtos.php';
                }elseif ($pag==4){
                        include 'chamadas/conteudo-downloads.php';
                }elseif ($pag==5){
                        include 'chamadas/conteudo-contato.php';
                }
      }elseif(isset($_GET['produto'])){
                if ($produto==1){
                        include 'produtos/hack-roots.php';
                }elseif ($produto==2){
                        include 'produtos/abenobashi.php';
                }elseif ($produto==3){
                        include 'produtos/ai-yori-aoshi.php';
                }elseif ($produto==4){
                        include 'produtos/ai-yori-aoshi-enishi.php';
                }
}else{
				include('chamadas/conteudo-index.php');
}
	   ?>

 

Se puder me ajudar, ficarei grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. $pag será sempre numérico, certo ?

 

 

2. exemplo simples

 

 

<?php

$v  = 'pag';
$$v = false;
if( isset( $_GET[ $v ] ) )
{
    $$v = (int)$_GET[ $v ];
    if( $$v == '' )
    {
        $$v = false;
    }
}

define( 'DEFAULT_PAGE', 1 ); //home.php

if( !$$v )
{
    $$v = DEFAULT_PAGE;
}


function SitePages( $n = 1 )
{
    $r[1] = 'home.php';
    $r[2] = 'contact.php';
    $r[3] = 'profile.php';
    $r[4] = 'map.php';

    if( isset( $r[ $n ] ) )
    {
        return $r[ $n ];
    }else{
        return $r[ DEFAULT_PAGE ];
    }
}

include( SitePages( $pag ) );
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Hinom,

 

Seu metodo de "jogar" as páginas é ótimo e eu não sabia que dava pra fazer assim, porém ele so funcionará se eu expor somente o pag, se eu tentar por mais variaveis como a do produtos, não funcionaria, pos ele iria verificar se tem a página $r, senão tiver, ira retorna para a página DEFAULT_PAGE, e eu não quero, é por isso que eu não gosto de codigo muito grande, ele mesmo se contraria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é apenas um exemplo..

 

adapte conforme sua necessidade.

 

as dicas estão aí, contudo, a escolha é sua.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Hinom, eu adaptei do meu método, pois não sou gente que so copia e cola, porém, não funcionou, como eu disse no post anterior:

 

ele so funcionará se eu expor somente o pag, se eu tentar por mais variaveis como a do produtos, não funcionaria

Eu tentei, mas nao adiantou, ao meu ver, eu iria por a página inicial (index.php) e ele puxaria a página default(até ai tudo bem), quando eu clica para ir para a página de numero 3, ele iria ir para a página onde mostra os produtos(até ai tudo bem também), mas na medida em que eu apertar em um produto, ele volta para DEFAULT_PAGE, adaptar, eu adaptei, mais não tive resultado algum.

 

 

Atenciosamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aparentemente você esqueceu de colocar a $_GET['pag'] quando clica em produtos. Veja se no link está indo as duas variáveis (da página e do produto).

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voltando a estaca zero, ainda não consegui.

 

Eu estava olhando o tópico e resolvi tentar o 2º php, e percebi que se deixar o "!", todas as páginas abrem uma janela dizendo erro, sendo que so deveria abrir se nao existisse o arquivo, mas se eu botar o "!" antes do file_exists, ele funciona normal, porem se eu por index.php?pag=http://www.google.com.br, ele não abre o script ¬¬:

 

<?php
$pag = $_GET['pag'];
$produto = $_GET['produto'];
$error = false;

if(file_exists($pag)){
$error ? $pag = 'chamadas/conteudo-index.php' : null;
include ($pag);
}elseif(file_exists($produto)){
$error ? $produto = 'chamadas/conteudo-index.php' : null;
include ($produto);
}else{
echo "<script>window.alert(\"Não tente fazer malandragem com meu site!\")</script>";
}
if(isset($_GET['pag'])){
                if ($pag==1){
                        include 'chamadas/conteudo-index.php';
                }elseif ($pag==2){
                        include 'chamadas/conteudo-jogosonline.php';
                }elseif ($pag==3){
                        include 'chamadas/conteudo-produtos.php';
                }elseif ($pag==4){
                        include 'chamadas/conteudo-downloads.php';
                }elseif ($pag==5){
                        include 'chamadas/conteudo-contato.php';
                }
      }elseif(isset($_GET['produto'])){
                if ($produto==1){
                        include 'produtos/hack-roots.php';
                }elseif ($produto==2){
                        include 'produtos/abenobashi.php';
                }elseif ($produto==3){
                        include 'produtos/ai-yori-aoshi.php';
                }elseif ($produto==4){
                        include 'produtos/ai-yori-aoshi-enishi.php';
                }
}else{
                        include('chamadas/conteudo-index.php');
}           
	   ?>

 

Não entendo, que quanto mais eu boto coisa nesse Dreamweaver, mas da erro, to pra desisti.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Li sim, mas aparentemente você não especifícou muito bem, onde deveria ser colocado o $_GET, somente que era para por onde a página produtos é clicada, mas existe tantos caminhos pelo qual ele verifica a página produtos, que até eu me perco. rs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.