URL-адрес переключателя PHP - PullRequest
       14

URL-адрес переключателя PHP

2 голосов
/ 11 августа 2011

В настоящее время мы используем Switch url config, чтобы помочь нам с навигацией по некоторым из наших URL-адресов, я не уверен, что есть более простой способ сделать это, но я не могу найти 1.

<?php if (! isset($_GET['step']))
    {
        include('./step1.php');

    } else {    
        $page = $_GET['step'];  
        switch($page)
        {
            case '1':
                include('./step1.php');
                break;  
            case '2':
                include('./step2.php');
                break; 
        }
    }
    ?>

Теперь эта система работает отлично, но единственное препятствие, с которым мы сталкиваемся, - это если они набирают xxxxxx.php? Step = 3 boom, они просто получают пустую страницу, и это должно быть правильно, поскольку для обработки '3' нет никаких оснований. но что мне было интересно ... есть ли какой-нибудь php-код, который я мог бы добавить внизу, который может сказать ему в любом случае, кроме этих 2, перенаправить его обратно в xxxxx.php?

Спасибо

Daniel

Ответы [ 3 ]

4 голосов
/ 11 августа 2011

Используйте чехол default.То есть измените ваш переключатель на что-то вроде этого:

<?php if (! isset($_GET['step']))
    {
        include('./step1.php');

    } else {    
        $page = $_GET['step'];  
        switch($page)
        {
            case '1':
                include('./step1.php');
                break;  
            case '2':
                include('./step2.php');
                break; 
            default:
                // Default action
            break;
        }
    }
?>

Случай по умолчанию будет выполняться для каждого случая, который явно не указан.

2 голосов
/ 11 августа 2011

Все операторы switch допускают случай default, который срабатывает, если нет другого случая. Что-то вроде ...

switch ($foo)
{
  case 1:
    break;
  ...
  default:
    header("Location: someOtherUrl");
}

будет работать. Однако вы можете обратиться к Google за другими, более надежными и расширяемыми решениями для отправки страниц.

1 голос
/ 11 августа 2011

Как насчет другого подхода с чем-то вроде:

<?php
$currentStep = $_GET['step'];
$includePage = './step'.$currentStep.'.php'; # Assuming the pages are structured the same, i.e. stepN where N is a number

if(!file_exists($includePage) || !isset($currentStep)){ # If file doesn't exist, then set the default page
    $includePage = 'default.php'; # Should reflect the desired default page for steps not matching 1 or 2
}

include($includePage);
?>
...