PHP SWITCH ввод DEFAULT, даже если есть действительный CASE? - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть этот блок SWITCH:

switch ($_GET['page']) {

    case "listaOferteTest":
        include("php_views/lista_oferte_test.php");
    break;

    case "categorieOferte":
        include("php_views/categorie_oferte.php");
    break;

    case "pagina":
        include("php_views/pagina.php");
    break;

    default:
        include("php_views/page_not_found_redirect.php");
    break;
}

и некоторые ссылки php [они сгенерированы динамически, но я вставлю HTML]:

<a href='/pagina/termeni-si-conditii/'>
Termeni si conditii
</a>
<a href='/pagina/informatii-utile/'>
Informatii utile
</a>
<a href='/pagina/contact/'>
Contact
</a>

У меня есть .htaccess, где я отношусь к ссылке так:

RewriteRule (.*)/(.*)/(.*)/ index.php?page=$1&subPage=$2&subSubPage=$3 [L]

Проблема: когда я тестировал ссылки выше, я заметил странное поведение - из примерно 10 нажатий на случайные ссылки каждый получает также значение по умолчанию. Как это возможно? Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 ноября 2011

Тогда вы можете использовать if вместо switch.

Например.

if (isset($_GET['page'])) {
   if($_GET['page']=='something') {...}
   if($_GET['page']=='something2') {...}
   ...
}
0 голосов
/ 02 ноября 2011

Моим первым инстинктом было бы запустить отладчик и пройтись по коду, чтобы вы могли точно видеть, что происходит.Если у вас не установлен отладчик (почему бы и нет? Это должно изменить вашу жизнь!) Или если вы не можете воссоздать проблему с помощью отладчика, учитывая его кажущуюся случайность, то лучше всего добавитьнекоторые записи в блок по умолчанию, чтобы вы могли понять, почему он туда попал.Я думаю, что $ glob ['page'] точно не соответствует 'pagina';возможно, у него есть начальный / конечный пробел или косая черта, или, может быть, он пуст, потому что есть ошибка в том, как извлекается это значение.Что-то вроде Monolog сделает работу с точки зрения ведения журнала.

...