У меня есть этот PHP-переключатель:
<?php $destination = isset($_GET['act']); switch ($destination) { default: echo "test"; break; case "manage": echo "manage things"; break; case "create": echo "create things"; break; } ?>
Однако, когда я иду на test.php?act=create
, вывод manage things
не create things
…. и когда я test.php?act=manage
к test.php?act=manage
– конечно, я получаю manage things
…
Итак … как я могу это исправить? спасибо
Иссета php возвращает логическое значение. Таким образом, $ destination является либо истинным, либо ложным, а не строкой.
Пытаться
if(isset($_GET['act'])) $destination = $_GET['act'];
Ваша проблема:
$destination = isset($_GET['act']);
isset
возвращает true
или false
, никогда ни одно из строковых значений, которое вы используете.
Вы можете использовать что-то вроде:
$destination = isset($_GET['act']) ? $_GET['act'] : '';
Вы должны использовать:
<?php if(isset($_GET['act'])) $destination = $_GET['act']; switch ($destination) { case "manage": echo "manage things"; break; case "create": echo "create things"; break; default: echo "test"; }
Или просто используйте:
$destination = @$_GET['act'];