Перенос значения, сохраненного в сеансе, с одной страницы на другую - PullRequest
0 голосов
/ 18 июня 2011

Я смотрел урок на 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);

?>

1 Ответ

0 голосов
/ 18 июня 2011

Вы не создали экземпляр объекта на вызывающей странице.Попробуйте это:

require_once("session_class.php");
$session = new Session();

РЕДАКТИРОВАТЬ

Когда вы вынимаете check_message() из __construct, СЕССИЯ устанавливается, потому что в вашем методе check_message(),у вас есть это:

unset($_SESSION['message']);

Это в основном разрушает ваш сеанс, поэтому вы видите, что сообщение "сеанс не установлен".

Если вы хотите, чтобы сеанс был установлен, просто удалите еголиния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...