2013-05-20 65 views
1

假设我有一个网址,例如www.mysite.com/index.php?login=0。是否可以切换案例$ _GET的变量并切换案例$ _GET的变量的值?

喜欢的东西:

switch ($_GET) { 
    case 'login' : 
     switch($_GET['login']) { 
      case '0' : 
       echo 'Login failed!'; 
       break; 
      case '1' : 
       echo 'Login successful.'; 
       break; 
     } 
     break; 
    case 'register' : 
     switch ($_GET['register']) { 
      case '0' : 
       echo 'Registration failed!'; 
       break; 
      case '1' : 
       echo 'Thank you for registering.'; 
       break; 
     } 
     break; 
    default : 
     echo 'Some other message'; 
     break; 
} 

我不知道,如果开关的情况下可以在关联数组中。我究竟做错了什么?干杯!

+0

我提高基于评论我的回答。 –

+0

只要您为所有值使用开关大小写,您的代码也非常安全,因为您从不直接使用任何用户提供的值。 –

回答

8

您必须将开关放在foreach()循环中。

foreach ($_GET as $key => $value) { 
    switch ($key) { 
     case 'login' : 
      switch ($value) { 
       case '0' : 
        echo 'Login failed!'; 
        break; 
       case '1' : 
        echo 'Login successful.'; 
        break; 
      } 
      break; 
     case 'register' : 
      switch ($value) { 
       case '0' : 
        echo 'Registration failed!'; 
        break; 
       case '1' : 
        echo 'Thank you for registering.'; 
        break; 
      } 
      break; 
     default : 
      echo 'Some other message'; 
      break; 
    } 
} 
+1

+1但是你可以改变'switch($ _ GET ['login'])''等'switch($ value)' – webbiedave

+0

@Prof。法尔肯非常感谢你! :) –

+0

@webbiedave,thx。 –

0

我不认为它会像这样,$ _ GET将返回一个数组,这些比较将无法正常工作。开关语句需要评估为一个常量。

-2

只是用这样的:

switch($_GET['key']) //it will return you value of particular parameter. 
case 'value1': 
//write your statement here. 
break; 
case 'value2': 
//write your statement here. 
break; 
//and so on