简体   繁体   English

未定义的变量:_SESSION在重定向的PHP文件中

[英]Undefined variable: _SESSION in the redirected PHP file

I am quite new to PHP. 我对PHP很陌生。 I am trying to write a login script in PHP. 我试图用PHP编写登录脚本。 My index.html file takes the username and password and submits the form to login.php. 我的index.html文件使用用户名和密码,并将表单提交给login.php。 This login.php file checks if the user is registered and creates a session if so. 这个login.php文件检查用户是否已注册,如果已注册,则创建一个会话。 After that it redirects to the file controlpanel.php 之后,它将重定向到文件controlpanel.php。

My problem is I get proper values on reading the session variable in login.php(just before redirecting to controlpanel.php). 我的问题是我在读取login.php中的会话变量时获得了正确的值(就在重定向到controlpanel.php之前)。 However in controlpanel.php, when I try to read the session variable it gives the error: 但是在controlpanel.php中,当我尝试读取会话变量时会出现错误:

( ! ) Notice: Undefined variable: _SESSION in D:\\Work\\Projects\\phpapp\\myecom\\admin\\controlpanel.php on line 2 (!)注意:未定义的变量:第2行D:\\ Work \\ Projects \\ phpapp \\ myecom \\ admin \\ controlpanel.php中的_SESSION

My code: 我的代码:

login.php login.php

<?php if(!isset($_SESSION)){ob_start(); session_start(); }else{error_log("Session already set");}
require_once("../config/config.php");
?>

<?php   
  require_once("../classes/autoload.php");
  $objUser = new User();

    if (isset($_POST["username"])){
        $username = $_POST["username"];
        $pass = $_POST["password"]; 

        error_log("about to check for registration");

        if($objUser->isRegisteredUser($username, $pass, 2)){
            error_log("user registered");

            Login::loginUser($objUser->id, 2);

            error_log("session id in login.php: " . $_SESSION["uId"]);

            header("Location:controlpanel.php");   
          }
        else{
            error_log("not registered");
          //redirect to the registration page
        }


    }


?>

controlpanel.php controlpanel.php

<?php 
if(!isset($_SESSION)){
    error_log("session not set");
}else{
    error_log("session set in controlpanel: " . $_SESSION["uId"]);
}

?>

PHP error_log: PHP error_log:

[25-Oct-2014 18:08:51 Europe/Paris] about to check for registration [2014年10月25日18:08:51欧洲/巴黎]将要检查注册

[25-Oct-2014 18:08:51 Europe/Paris] user registered [2014年10月25日18:08:51欧洲/巴黎]用户注册

[25-Oct-2014 18:08:51 Europe/Paris] session id in login.php: 1 [login.php中的[25-Oct-2014 18:08:51欧洲/巴黎]会话ID:1

[25-Oct-2014 18:08:51 Europe/Paris] session not set [2014年10月25日18:08:51欧洲/巴黎]会话未设置

You didn't start the session in your controlpanel.php script. 您没有在controlpanel.php脚本中启动会话。

Always call session_start(); 始终调用session_start(); before using $_SESSION . 在使用$_SESSION之前。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM