0

编辑:很简单,弄清楚。只需在前面加上一个没有 } 的 else{},这对两个 if 都适用。

好吧,我写了这段代码,它工作正常

  if($_REQUEST['pag']){

        // Variável da página
        $pag = $_REQUEST['pag'];

        // Possíveis páginas
        if($pag == "registrar"){
        include "inc/register.php";
        }
        if ($pag == "recuperar"){
        include "inc/recover.php";
        }

}

但是如果用户键入?pag=ofksaofkoasdkfkopsd怎么办?

该页面将不存在,因此如果发生这种情况,我想包含一个文件。有没有办法在不使用列表或其他东西的情况下做到这一点?

4

9 回答 9

3

你可以做到这一点switch,那会更好,如果因为

switch 语句类似于同一表达式上的一系列 IF 语句。在许多情况下,您可能希望将同一个变量(或表达式)与许多不同的值进行比较,并根据它等于哪个值来执行不同的代码。这正是 switch 语句的用途。(手动

switch($_REQUEST['pag']){

case "registrar":
   include "inc/register.php";
   break;

case :"recuperar":
  include "inc/recover.php";
  break;

default:
  //default you want to include
  break;


}

我希望您了解代码的复杂性,并且在您的情况下,switch case 在最坏/平均情况下的复杂性较低

于 2013-06-21T10:07:45.787 回答
2

ifelselike试试

$pag = $_REQUEST['pag'];

// Possíveis páginas
if($pag == "registrar"){
    include "inc/register.php";
}
elseif ($pag == "recuperar"){
    include "inc/recover.php";
}
else{
    include "inc/default.php"
}  

或者您可以使用 switch case 来找到默认选项,例如

switch($pag)
{
   case "register":include "inc/register.php";
                   break;
   case "recuperar":include "inc/recover.php";
                   break;
   default : include "inc/default.php";
}
于 2013-06-21T10:07:34.963 回答
1

为什么不想使用数组?那真的是最好的方式去恕我直言。添加页面更容易,您获得的重复代码更少......从配置文件或数据库加载数组也很简单,而不是在以后的体育场中对其进行硬编码。我只看到好处。

$pages = array( "registrar" => "inc/register.php",
                "recuperar" => "inc/recover.php" );

$requestedPage = $_REQUEST["pag"];

if(array_key_exists($requestedPage, $pages)){
    include $pages[$requestedPage];
}
else {
    include "inc/error404.php";
}
于 2013-06-21T10:17:07.150 回答
1

使用if {} else{}switch案例。

你可以使用nested if else

至少关注一下文档 - http://php.net/manual/en/control-structures.elseif.php

于 2013-06-21T10:07:41.423 回答
0

您也可以使用此代码

$pages = array("register", "recover");
if (in_array($_REQUEST["pag"], $pages)) {
include $_REQUEST["pag"].".php";
}
else{
include "default.php";
}
于 2013-06-21T10:28:17.523 回答
0

尝试使用elseifandelse

if($pag == "registrar"){
    include "inc/register.php";
}elseif($pag == "recuperar"){
    include "inc/recover.php";
}else{
    ... //include a file if the page doesn't exist
}

或者你可以用一个开关来做

switch($pag){
    case "registrar":
        include "inc/register.php";
        break;
    case "recuperar":
        include "inc/recover.php";
        break;
    default:
        ... //include a file if the page doesn't exist 
}

希望它会帮助你。

于 2013-06-21T10:16:08.427 回答
0

一些使用 switch 命令。

switch ($_REQUEST['pag']) {
    case 'registrar':
        echo "some text or action";
        break;
    case 'xxx':
        echo "some text or action";
        break;
    case 'xxxx':
        echo "some text";
        break;
    default:
       echo "some text";
}
于 2013-06-21T10:09:05.767 回答
0
        $pag = isset($_REQUEST['pag']) ? $_REQUEST['pag'] : null;

        switch($pag) {
        case 'registrar':
            require 'inc/register.php';
            break;        
        case 'recuperar':
            require "inc/recover.php";
            break;
        default:
            // Include your default page
        }

在像 C++ 这样的非动态语言中,您必须使用 if() elseif() else 来比较非常量值。

于 2013-06-21T10:10:21.953 回答
0
if ($condition1) 
{
  //code
} 
elseif ($condition2)
{
  //code
}
elseif ($condition3)
{
  //code
}
...
else 
{
  //this is what happens when no other condition is true
}

switch 是一个更好的做法。检查@user1752647 的答案

于 2013-06-21T10:13:07.010 回答