Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, peguei com um amigo um script para abrir páginas com um pré-loader, mas o problema é que quando a página não existe, ele da erro do PHP ao invés de dar o 404.
<?php
switch ($_GET['url'])
{
case 'main' : include('pages/noticias.php');
break;
case 'institucional' : include('pages/institucional.php');
break;
}
?>
Este é o código, quando tento acessar alguma página que não existe, ele dá este erro:
Warning: main(pages/institucional.php): failed to open stream: No such file or directory in c:\arquivos de programas\easyphp1-8\www\aa\loadmenu.php on line 8
Warning: main(): Failed opening 'pages/institucional.php' for inclusion (include_path='.;C:/Arquivos de programas/EasyPHP1-8\php\pear\') in c:\arquivos de programas\easyphp1-8\www\aa\loadmenu.php on line 8
Mas porque a página não existe mesmo, como eu faço para que quando a página não existir, ele der ERRO 404...
Estou usando este código em java:
function loadPage(url, id){
var url = "loadMenu.php?url="+url+'&id='+id;
var action = '';
htm = '<img src="images/Loading.gif" alt="Carregando" width="65" height="13" /><br />'+action+'';
document.getElementById("divPage").innerHTML = htm;
page=GetXmlHttpObject()
if (page==null){
alert ("Browser does not support HTTP Request")
return
}
page.onreadystatechange = function stateChanged(){
if (page.readyState==4 || page.readyState=="complete"){
if(page.status == 200){
document.getElementById("divPage").innerHTML = page.responseText;
executaAllScript(page.responseText);
}else{
document.getElementById("divPage").innerHTML = page.statusText;
}
}
};
page.open("GET",url,true);
page.send(null);
}
Agradeço quem puder ajudar... :/
O que você passou não funcionou, mas agradeço a sua resposta.
Também quero dizer que agora que você disse isso "não faz sentido você colocar no case uma página que não exista." eu percebi que é verdade...
Só que eu gostaria de botar a mensagem, para caso eu não tenha terminado a página ainda...
Mas não tem problema, vou colocar um alert em javascript no link e acaba meus problemas.
Abraços e muito obrigado.
Não funcionou justamente pelo fato de você estar incluindo um arquivo que não existe.
Sugiro que você esqueça o switch e faça desta forma verificando se o arquivo existe:
$url = isset($_GET['url']) ? $_GET['url'] : '';
if (empty($url))
{
$pagina = dirname(__FILE__) . '/pages/home.php'; // Coloque aqui sua página inicial
}
else
{
$pagina = dirname(__FILE__) . '/pages/' . $url . '.php';
}
if (file_exists($pagina))
{
include($pagina);
} echo 'Página não encontrada.';
}
Um abraço!
Amigo, sinceramente não faz sentido você colocar no case uma página que não exista.
O switch neste caso já serve justamente pra verificar se o parametro passado pelo URL existe e se existir incluir o arquivo correspondente.
Recomendo que você use um default para caso a página não existir mostrar uma mensagem amigável, por exemplo:
switch ($_GET['url'])
{
case 'main':
No lugar no echo você pode usar um include para chamar uma página de erro.
Um abraço!