Php 未定义的索引模式,这是case语句正在查找的变量

Php 未定义的索引模式,这是case语句正在查找的变量,php,Php,接收错误:PHP通知:未定义索引:第51行/web/ee_web/include/form-modal.PHP中的mode 第51行 switch($_GET["mode"]) { 它所在的代码块: switch($_GET["mode"]) { case "login": login_user(); break; case "logout": session_destroy(); print "<p>You are now log

接收错误:PHP通知:未定义索引:第51行/web/ee_web/include/form-modal.PHP中的mode

第51行

switch($_GET["mode"]) {
它所在的代码块:

switch($_GET["mode"]) {
    case "login":
    login_user();
    break;

    case "logout":
    session_destroy();
    print "<p>You are now logged out.</p>";

    print "<p><input type=\"submit\" id=\"closeButton\" name=\"closeButton\" value=\"Close\"  onclick=\"self.parent.tb_remove(); parent.location.reload(1);\" /></p>";
    break;

    default:
    login_user();
    //print "<p>How'd you end up here?</p>";
    break;
}
开关($\u GET[“mode”]){
案例“登录”:
登录用户();
打破
案例“注销”:
会话_destroy();
打印“您现在已注销。

”; 打印“

”; 打破 违约: 登录用户(); //打印“你是怎么来到这里的?

”; 打破 }
页面的URL是index.php?mode=logout,这就是我将值传递到mode的方式


有什么方法可以解决此错误消息吗?

将其包装成if-like

if( isset($_GET['mode'])) { switch ... } else { print_r($_GET); }

看看你到底得到了什么。

把它包装成一个if like

if( isset($_GET['mode'])) { switch ... } else { print_r($_GET); }

看看你到底得到了什么。

通过url和代码的结合,我能想到的唯一一件事是,也许你正在使用一个不允许GET的框架

例如,我知道CodeIgniter在默认情况下被禁用


在页面顶部执行
var\u dump(GET)
也会告诉您更多信息。

通过url和代码的组合,我唯一能想到的是,也许您使用的框架不允许GET

例如,我知道CodeIgniter在默认情况下被禁用


在页面顶部执行
var\u dump(GET)
也会告诉您更多信息。

我看不出问题所在。但是为了更简洁的代码和故障排除,您可以尝试:

$this_mode = $_GET["mode"];
switch($this_mode) {

我看不出有什么问题。但是为了更简洁的代码和故障排除,您可以尝试:

$this_mode = $_GET["mode"];
switch($this_mode) {

我会给它一个默认值:

if (!isset($_GET['mode']) $_GET['mode'] = "login";

switch($_GET["mode"]) {

    case "logout":

    session_destroy();
    print "<p>You are now logged out.</p>";

    print "<p><input type=\"submit\" id=\"closeButton\" name=\"closeButton\" value=\"Close\"  onclick=\"self.parent.tb_remove(); parent.location.reload(1);\" /></p>";
    break;

    case "login" :    
    default:

    login_user();
    //print "<p>How'd you end up here?</p>";
    break;
}
if(!isset($\u GET['mode'])$\u GET['mode']=“login”;
开关($\u GET[“mode”]){
案例“注销”:
会话_destroy();
打印“您现在已注销。

”; 打印“

”; 打破 案例“登录”: 违约: 登录用户(); //打印“你是怎么来到这里的?

”; 打破 }

另外,您可以这样将它们放在一起,而不是复制
案例“登录”的代码:
默认值:

我会为其提供一个默认值:

if (!isset($_GET['mode']) $_GET['mode'] = "login";

switch($_GET["mode"]) {

    case "logout":

    session_destroy();
    print "<p>You are now logged out.</p>";

    print "<p><input type=\"submit\" id=\"closeButton\" name=\"closeButton\" value=\"Close\"  onclick=\"self.parent.tb_remove(); parent.location.reload(1);\" /></p>";
    break;

    case "login" :    
    default:

    login_user();
    //print "<p>How'd you end up here?</p>";
    break;
}
if(!isset($\u GET['mode'])$\u GET['mode']=“login”;
开关($\u GET[“mode”]){
案例“注销”:
会话_destroy();
打印“您现在已注销。

”; 打印“

”; 打破 案例“登录”: 违约: 登录用户(); //打印“你是怎么来到这里的?

”; 打破 }

另外,你可以这样把它们放在一起,而不是重复
案例“登录”的代码:
默认值:
你可以这样把它们放在一起。

到目前为止的3个答案对我来说是有意义的,我会把Kemo的答案和我的答案放在一起