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;


}

コードの複雑さについて知っていただければ幸いです。あなたのケースでは、最悪/平均的なケースではスイッチケースの複雑さが軽減されます

于 2013-06-21T10:07:45.787 に答える
2

のように試してみてifくださいelse

$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($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

配列を使いたくないのはなぜですか?それは本当に私見に行くための最良の方法です。ページの追加が簡単になり、コードの重複が少なくなります...後のスタジアムでハードコーディングする代わりに、構成ファイルまたは DB から配列をロードすることも簡単です。メリットしか見えません。

$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

some 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 に答える