php初学者,碰到一个关于session的问题看下面两份代码
<?php
    // Initiate the session
    session_start();
?>
<html>
<head>
<title>Session</title>
</head>
<body>
<?php
    if (!isset($_SESSION["tracker1"]))
    {
        $tracker1 = 5;
session_register("tracker1");
    }
    print("tracker1 is " . $_SESSION["tracker1"] . "<br />");
?>
</body>
</html>这时能成功显示 "tracker1 is 5" 字样而
<?php
    // Initiate the session
    class tracker
    {
        var $counter;
        // constructor
        function tracker() {
            $this->counter = 5;
        }
    }
    session_start();
?>
<html>
<head>
<title>Session</title>
</head>
<body>
<?php
    if (!isset($_SESSION["tracker2"]))
    {
        $tracker2 = new tracker;
session_register("tracker2");
    }
    print("count of tracker2 is " . $_SESSION["tracker2"]->counter . "<br />");
?>
</body>
</html>此时显示 "count of trackers is " 而没有显示5。想问一下有经验的朋友,第二中情况应该怎样用session才能显示5呢?

解决方案 »

  1.   

    <?php 
        // Initiate the session 
        class tracker 
        { 
            var $counter; 
            // constructor 
            function tracker() { 
                $this->counter = 5; 
            } 
        } 
        session_start(); 
    ?> 
    <html> 
    <head> 
    <title>Session </title> 
    </head> 
    <body> 
    <?php 
        if (isset($_SESSION["tracker2"])) 
        { 
            $_SESSION['tracker2'] = new tracker; 
        } 
        print("count of tracker2 is " . $_SESSION["tracker2"]->counter . " <br />"); 
    ?> 
    </body> 
    </html> 
      

  2.   

      $tracker2 = new tracker;
      $tracker2已经是对象实例了;你再session_register("tracker2");把它当作一个变量!~
      这是为什么不能显示的原因。
      

  3.   

    session_register("tracker2"); 
    把这个拿掉。session_register是新注册的意思,你重新注册了tracker2,自然不可能有值啦。