Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida com as funções INCLUDE e SWITCH


Gabriel Paiva

Pergunta

Bom dia!

Estou montando um website em PHP para estudos e sou iniciante nesta área.

O código que estou utilizando para chamar as páginas na meu index do website é o seguinte:

<?php

// Define uma lista com os arquivos que poderão ser chamados na URL

$permitidos = array('home.php', 'produtos.php', 'contato.php', 'empresa.php');

// Verifica se a variável $_GET['pagina'] existe E se ela faz parte da lista de arquivos permitidos

if (isset($_GET['pagina']) AND (array_search($_GET['pagina'], $permitidos) !== false)) {

// Pega o valor da variável $_GET['pagina']

$arquivo = $_GET['pagina'];

} else {

// Se não existir variável $_GET ou ela não estiver na lista de permissões, define um valor padrão

$arquivo = 'home.php';

}

include ($arquivo); // Inclui o arquivo

?>

<?php

switch ($_GET['pagina'])

{

case "novo_usuario": include("paginas/novo_usuario.php"); break;

default: include("paginas/home.php"); break;

}

?>

Essas funções que estou utilizando antes da função switch é uma função para evitar que usuários mal intencionados coloquem outros scripts (PHP INJECTION) e peguei esse código na internet.

Porém não estou conseguindo carregar somente uma página, visto que ele acaba sempre chamando a variável $arquivo da primeira seção de código e sempre exibe a página inicial acima da página colocada na URL.

Ou seja, o código de cima sempre retorna a variável $arquivo da condição IF e a função switch acima funciona de acordo com o que é colocado na URL.

Espero que tenham entendido minha dúvida e possam me ajudar...

Muito obrigado desde já!

Att,

Gabriel Paiva.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Rapaz, pelo que eu entendi, você ta querendo pegar o nome do arquivo, e o que você está fazendo é pegar o valor de um parâmetro.

No lugar de

$_GET['pagina']
use
str_replace("/","",$_SERVER['SCRIPT_NAME'])
Troque essa linha
if (isset($_GET['pagina']) AND (array_search($_GET['pagina'], $permitidos) !== false)) {
Por essa
$pagina = str_replace("/","",$_SERVER['SCRIPT_NAME'])

if((isset($pagina)) && (!empty(array_search($pagina, $permitidos)))){

Editado por dedas
Link para o comentário
Compartilhar em outros sites

  • 0

Tai o código editado por mim :)

<?php
//Variáveis
$permitidos = array("home.php", "produtos.php", "contato.php", "empresa.php");
$pagina = str_replace("/","",$_SERVER['SCRIPT_NAME']);

if((isset($pagina)) && (!empty(array_search($pagina, $permitidos)))){
    $arquivo = $pagina;
}else{
    $arquivo = "home.php";
}

include($arquivo);//Inclui o arquivo
?>

<?php
$acao_pagina = $_GET['pagina'];

switch($acao_pagina){    
    case "novo_usuario": include("paginas/novo_usuario.php"); break;
    default: include("paginas/home.php"); break;
}
?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...