strpos não encontra, mas teóricamente existe
Fala galera,
Estou quebrando a cabeça e não estou enxergando onde estou errando. Abaixo, tenho um script que gerencia as URLs do meu site. Todo arquivo PHP passa por este código.
<?php
// * Gerencia as URLs amigáveis
$url = strip_tags($_SERVER["REQUEST_URI"]);
$url_array = explode("/", $url);
array_shift($url_array);
// * Verifica se é a index
if(empty($url_array) or $url_array[0] == ""){
include(PATH_BASE."/index.php");
exit();
}
// * Caso não seja
else{
// * Verifica a existencia do arquivo físico
if(file_exists(PATH_BASE."/".$url_array[0].".php")){
include(PATH_BASE."/".$url_array[0].".php");
exit();
}
// * Caso não tenha arquivo
else{
include(PATH_BASE."/404.php");
}
}
?>
Legal, funciona bem - até colocar um parâmetro na URL (exemplo: /paginaTeste?parametro=1¶metro2=blablabla. Aí ele se perde inteiro.
Para corrigir isso, fiz as seguintes modificações (no ELSE).
<?php
// * Gerencia as URLs amigáveis
$url = strip_tags($_SERVER["REQUEST_URI"]);
$url_array = explode("/", $url);
array_shift($url_array);
// * Verifica se é a index
if(empty($url_array) or $url_array[0] == ""){
include(PATH_BASE."/index.php");
exit();
}
// * Caso não seja
else{
// * Retira qualquer parâmetro GET que tenha na página, para que o include funcione normalmente sem considerá-los
// * O parâmetro GET pode ser resgatado normalmente.
$url = strpos($url_array[0],'?');
if(!$url){
$url = $url_array[0];
}
else{
$url = substr($url_array[0], $url);
$url = str_replace($url,"",$url_array[0]);
}
// * Verifica a existencia do arquivo físico
if(file_exists(PATH_BASE."/".$url.".php")){
include(PATH_BASE."/".$url.".php");
exit();
}
// * Caso não tenha arquivo
else{
include(PATH_BASE."/404.php");
}
}
?>
Resolveu, mas se a index tem algum parâmetro, ele trava (cai no ultimo else). Primeiro, ele está caindo no ELSE, o que já é estranho. Deveria cair no primeiro IF.
Porém, mesmo caindo no else, deveria funcionar, já que ele lá, detectaria se existe algum parâmetro na URL (via strpos). O parâmetro existe, mas ele está dando 0 no resultado do strpos.
Alguma luz?
Discussão (1)
Carregando comentários...