Artur_php 0 Denunciar post Postado Fevereiro 7, 2013 Boa tarde amigos. No meu site use um código para inserir as páginas <!-- INICIO DO CONTEUDO DO SITE //--> <?php if (isset($_GET['p'])){ $pagina = $_GET['p']; include "$pagina.php"; if (file_exists("$pagina.php")) { echo ""; } else { include "erro.php"; } } else { include "home.php"; } ?> <!-- FIM DO CONTEUDO DO SITE //--> Se o link for http://redeautos.com/?p=concessionarias ele insere a página concessionárias.php . Ele pega a pagina a ser inserida através do $_GET['p'] . O problema é que se alguem usar por exemplo o link http://redeautos.com/?essapaginanaoexiste=erro , o site é redirecionado para a pagina principal e não para uma pagina de erro. Compartilhar este post Link para o post Compartilhar em outros sites
viniciuswebdev 8 Denunciar post Postado Fevereiro 8, 2013 if (!file_exists("$pagina.php")) { //redirecionamento } Se o arquivo não existir... redirecione. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Fevereiro 8, 2013 if (isset($_GET['p'])){ $pagina = $_GET['p']; include "$pagina.php"; if (file_exists("$pagina.php")) { coloque tb uma condicional para impedir isso> http://redeautos.com/?p=index * evite expor desse modo... poderia ter colocado um outro link qualquer de exemplo.. Compartilhar este post Link para o post Compartilhar em outros sites
Artur_php 0 Denunciar post Postado Fevereiro 8, 2013 Obrigado pela força Viniciuswebdev e Hinom. Hinom, valeu pela dica da exposição. O problema está com o $_GET['p']; . vou tentar explicar direito. Através do $_GET['p']; , o código pega o que estiver em 'p' e insere. por exemplo: /p=paginaqueexiste , vai ser inserida paginaqueexite.php /p=paginaquenaoexiste, vai ser inserida erro.php (erro.php vai para redirecionar para home .php) até aqui ok. Quando o link é: /outravariavelquenaop=paginaqueexiste nada é inserido, pois a pagina a ser inserida é pegada através do $_GET['p']; e não do $_GET['outravariavelquenaop']; Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Fevereiro 8, 2013 } else { // nesse ponto 'p' não existe. // porém, o usuário pode ter inserido http://site/outravariavelquenaop=foo // faça a consistência capturando a URI antes de ir direto para home.php.. // $_SERVER['REQUEST_URI'] include "home.php"; } independente disso, aconselho a estruturar melhor.. pode reduzir 60% desse script Compartilhar este post Link para o post Compartilhar em outros sites
Artur_php 0 Denunciar post Postado Fevereiro 8, 2013 Obrigado pela força, mas não entendi como fazer utilizando o $_SERVER['REQUEST_URI'] . Não estou conseguindo montar .... Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Fevereiro 8, 2013 faça echo $_SERVER['REQUEST_URI']; exit; veja o que retorna e terá uma noção do que fazer. consulte as funções de manipulação de strings do php http://php.net/manual/en/ref.strings.php Compartilhar este post Link para o post Compartilhar em outros sites
Alex.89 6 Denunciar post Postado Fevereiro 8, 2013 Tenta este código aqui if (isset($_GET['p'])){ $pagina = $_GET['p']; if (file_exists("$pagina.php")) { include "$pagina.php"; } else { include "erro.php"; } }else{ include "home.php"; } O que estava acontecendo? Se o $_GET['p'] exitise, você incluia a página no seu site, só depois de incluir a página que você fazia uma verificação pra saber se a página existe, se ela não existe vc incluia TAMBÈM a pagina erro.php, ta entendendo? O que foi feito agora? Antes de incluir a página, verificamos se a mesma existe, se existir incluimos ela, se não existir incluimos a página erro.php, e se não existir o $_GET['p'] nós incluimos o arquivo home.php Compartilhar este post Link para o post Compartilhar em outros sites
viniciuswebdev 8 Denunciar post Postado Fevereiro 8, 2013 Você pode gerenciar isso muito mais fácil com um arquivo .htaccess Veja aqui um exemplo, que trata exatamente o seu problema. Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Artur_php 0 Denunciar post Postado Fevereiro 8, 2013 Amigos, muito obrigado pela ajuda de todos, estou tentando fazer todas as dicas, já respondo o que consegui fazer .... Compartilhar este post Link para o post Compartilhar em outros sites
Alves Diogo 7 Denunciar post Postado Fevereiro 8, 2013 Artur, Sei que não é este o foco da sua dúvida, mas me vejo na obrigação de te informar para evitar problemas futuros. A sua URL quando "inclui" via GET as páginas se torna vulnerável a uma falha conhecida como SQL Injection, que consiste em realizar consultas ao banco de dados via URL. Aconselho você a pesquisar sobre esta falha, existe uma função que serve para evitar esta falha. O nome dela é mysql_real_scape_string, pesquise tutoriais sobre como usa-la. Abraços, Diogo. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Fevereiro 9, 2013 #11... desculpe refutar o seu post, mas não há relação alguma com SQL Compartilhar este post Link para o post Compartilhar em outros sites
Alves Diogo 7 Denunciar post Postado Fevereiro 9, 2013 #11... desculpe refutar o seu post, mas não há relação alguma com SQL Tem sim companheiro. Esperimente por exemplo digitar uma aspas ao lado do parametro "p"; ira aparecer um erro de consulta ao banco de dados, o que posteriormente, pode ser injetados consultas SQL... Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Fevereiro 9, 2013 ??? A variável 'p' não está montando nenhum SQL.. Compartilhar este post Link para o post Compartilhar em outros sites