【问题标题】:read PHP global variable from one page, print in another (both in same PHP class)从一个页面读取 PHP 全局变量,在另一个页面中打印(都在同一个 PHP 类中)
【发布时间】:2015-06-24 02:23:11
【问题描述】:

我想知道为什么我的代码(可以精简为以下结构)没有打印我认为应该打印的内容。基本上我在同一个 php 控制器类中有两个方法和两个相应的 html 页面。我想从 mypage.html 检索 POST 请求(html 文本输入表单)的值,并在 secondpage.html 中打印该值,当用户在文本框中输入输入后单击“提交”按钮时,我们将重定向到该值。

更新:我刚刚阅读了有关 PHP 会话的信息,并且我的程序确实启动了会话。但是即使用户输入的日期保存在数据库中,我也应该使用会话吗?

<? php 

$var; // initializing global variable; 

class MyClass { 

   public function mypage () { 
      global $var; 
      $var = $_POST['form_name']; 
   } 

   public function secondpage () { 
      global $var; 
      print_r($var); 
   } 

}

【问题讨论】:

    标签: php jquery post controller forms


    【解决方案1】:

    最简单的方法是将值存储在会话中,例如

    <? php 
    class MyClass { 
    
       public function mypage () { 
          $_SESSION['var'] = $_POST['form_name']; 
       } 
    
       public function secondpage () { 
          print_r($_SESSION['var']); 
       } 
    
    }
    

    这需要通过在其他地方调用session_start() 来启动会话,但您说会话已启动。

    但是将数据保存在数据库中,为什么不在 secondpage() 中读回呢?

    【讨论】:

    • 感谢您的回答。至于您的问题,这就是为什么我不从数据库中读取它的原因。我认为在数据进入数据库之前通过使用 session.获取数据会更有效。我认为使用会话变量比读取数据库的最新输入更便宜。不过,我是数据库的新手,所以如果您认为这不是一个有效的想法,任何反馈都会很棒。此外,我试图跨页面折腾的这些数据并不完全属于敏感性质,但我不知道总的来说,对任何类型的数据这样做是否是一种好习惯。
    • 我明白了 :) 我认为您的基本想法是正确的,使用 session 来存储应用程序中可用的数据。周围有很多类可以帮助您进行会话管理,只是第一个 google 结果(会话 php 类):gist.github.com/eddmann/10262795。或者sessions上的php手册。
    【解决方案2】:

    在课堂上使用global 很尴尬。 感觉错了。也许尝试使用static 变量:

    <?php 
    class MyClass
        {
            public  static $var;
    
            public function mypage()
                {
                    self::$var = 'test'; 
                } 
    
            public function secondpage()
                { 
                    print_r(self::$var); 
                } 
        }
    
        $test   =   new MyClass();
        $test->mypage();
    
        // This will print test
        $test->secondpage();
        // This will also print test
        echo MyClass::$var; 
    ?>
    

    如果你真的想从一个页面保存到一个全新的页面,你确实需要一个会话。

    【讨论】:

      猜你喜欢
      • 2018-10-27
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      相关资源
      最近更新 更多