PHP Switch Case Url's

时间:2011-08-10 21:37:03

标签: php case switch-statement

我们目前使用Switch case url config帮助我们在我们的一些网址上导航,我不确定是否有更简单的方法来做但我似乎无法找到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热潮他们只是得到一个空白页面,这应该是正确的,因为它没有处理'3'的情况但我想知道的是..有没有任何PHP代码我可以添加到底部,可以告诉它除了那些2以外的任何情况将其重定向回xxxxx.php?

谢谢

丹尼尔

3 个答案:

答案 0 :(得分:4)

使用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;
        }
    }
?>

将针对未明确指定的每个案例执行默认情况。

答案 1 :(得分:2)

所有switch语句都允许default个案,如果没有其他情况会触发。有点像...

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

会奏效。但是,您可能希望Google可以使用其他更强大且可扩展的页面调度解决方案。

答案 2 :(得分:1)

如何采用不同的方法:

<?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);
?>