将会话中存储的值从一页传到另一页

问题描述

| 我在lynda.com上正在上一堂课,该代码适用于他们,但尝试时无法使用。这是他们使用的确切代码。可以使用一些帮助来解释为什么它不起作用。
<?php
 class Session
{
public $message;

function __construct(){
    session_start();
    $this->check_message();
}

 public function get_message($msg=\"\") {
  if(!empty($msg)) {
    // then this is \"set message\"

    $_SESSION[\'message\'] = $msg;
  } else {
    // then this is \"get message\"
        return $this->message;
  }
}

private function check_message() {
    // Is there a message stored in the session?
    if(isset($_SESSION[\'message\'])) {
        // Add it as an attribute and erase the stored version
     $this->message = $_SESSION[\'message\'];
     unset($_SESSION[\'message\']);
    } else {
     $this->message = \"\";
    }
   }
 }

  $session = new Session();


?>
并在呼叫页面上
<?php
 require_once(\"session_class.php\");

 function output_message($msg=\"\") {
    if (!empty($msg)) { 
      return \"<p>$msg</p>\";
    } else {
      return \"\";
   }
}

if (isset($_SESSION[\'message\'])) {
echo \"session is set\";
} else {
echo \"session is not set\";
} 

$message = $session->get_message(\"working\"); 

//$message = \"Working\";THIS WILL WORK

echo output_message($message);

?>
    

解决方法

        您尚未在调用页面上创建对象实例。尝试这个:
require_once(\"session_class.php\");
$session = new Session();
编辑 当您从
__construct
中取出
check_message()
时,会设置SESSION,因为在您的
check_message()
方法中,您需要:
unset($_SESSION[\'message\']);
它基本上破坏了您的会话,这就是为什么您看到“会话未设置”消息的原因。 如果要设置会话,只需删除该行。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...