Postado Julho 16, 2015 9 anos Olá pessoal, estou aqui para resolver um probleminha que tenho encontrado principalmente no meu curso, então estou criando esse tópico para facilitar um pouco a vida dessas pessoas que estão boiando na maionese. É o seguinte: Para facilitar um pouco nosso trabalho, utilizamos GET para obter o valor de uma váriavel na url para que possa abrir uma determinada pagina sem atualiza o site por completo. O pessoal do meu curso está utilizando o GET dessa forma: Código HTML: <?php if(isset($_GET['pagina']) == ' '){ // Se ?pagina= nao for definido nao faça nada, caso tenha um valor procura no switch esse valor e executa-o. }else{ $pagina = $_GET['pagina']; switch($pagina){ case 'home': include 'home.php'; break; default: echo 'pagina nao encontrada'; } } ?> Isso está errado ? Não, isto não está errado, mas imagine o seguinte, você tem a pagina home,registro,download, e várias outras, ou seja, vc teria de adicionar uma por uma no switch() para que ele possa saber o que fazer com aquele valor. Enfim, isso daria um problemão pra cabeça, então eu recomendo vocês fazerem o seguinte: Código HTML: if(!isset($_GET['pagina']) == ' '){ //Se ?pagina= for diferente de não definido $abrir = $_GET['pagina']; // Abrir obtém seu valor ou seja se for ?pagina=home, $abrir passa a valer home $local = $abrir.'.php'; // $local = home.php if(file_exists($local)){ // Se home.php existir include $local; // inclui home.php }else{ // se não echo 'pagina não encontra'; // pagina não encontrada } } É basicamente a mesma coisa a única diferença é que ao invés dele procurar no switch() ele vai verificar se o arquivo existe file_exists(), se existir vai abrir ele, se não, mostrar uma mensagem de pagina não encontrada ! abrçs!!! I must not fear. Fear is the mind killer.
Postado Agosto 8, 2015 9 anos Interessante esse código, mas mesmo assim ainda contém uma vulnerabilidade, porque ele checa se há o arquivo .php e assim carrega ele. Já usei muito nos meus sistemas dessa forma que você fez, mas já tive problemas, a melhor solução que eu desenvolvi foi assim: <?php header("Content-Type: text/html; charset=UTF-8", true); $pagina = $_GET['pagina']; $extensao = '.php'; $items = array('index', 'teste', 'contato'); if( in_array($pagina, $items) && file_exists($pagina.$extensao) ) { // Ok, a gente inclui a página include_once $pagina.$extensao; } else { // Erro, ou damos a mensagem ou incluimos uma página padrão exit('A página solicitada não existe!'); } ?> Dessa forma ele checa se o item passado pelo GET está dentro do vetor predefinido por você e ainda assim checa se há o arquivo, dessa maneira, evitamos que o "hacker" force o sistema a incluir arquivos do servidor.
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.