14

php中的会话和全局变量有什么区别?

4

5 回答 5

31

全局变量是对整个应用程序保持通用的变量……它们的值可以在整个应用程序中使用,而会话变量是对整个应用程序保持通用但对一个特定用户而言的变量。它们也可以在整个应用程序中使用……但是当特定用户会话结束时它们就会消失。

于 2013-02-13T07:09:41.647 回答
4

global只是访问在顶级范围中声明且在实际范围中不可用的变量的关键字。这与会话没有任何关系:不要在页面之间持续存在。

$a = "test";
function useGlobalVar(){
    echo $a;   // prints nothing, $a is not availabe in this scope
    global $a;
    echo $a;   // prints "test"
}

$GLOBALSglobal是另一种不使用关键字访问顶级范围变量的方法:

$a = "test";
function useGlobalVar(){
    echo $GLOBAL['a'];   // prints "test"
}

global和之间有一些混淆superglobals超全局变量(如 $GLOBALS、$_REQUEST、$_SERVER)在任何范围内都可用,而无需进行全局声明。同样,它们不会在页面之间持续存在($_SESSION 除外)。

$_SESSION 是一个超全局数组,可以在不同的页面上持续存在。

于 2017-03-30T10:02:38.477 回答
1

全局变量是在任何函数或类范围之外声明并通过使用global关键字在另一个函数内部使用的任何变量,例如

$a = 123; // this is a global variable
function foo()
{
    global $a; // and this is the explicit declaration
}

超级全局变量类似于常规全局变量,只是它们在函数中隐式声明为全局变量,以便它们始终可用。

最后,会话变量可以通过超级全局访问,$_SESSION并通过发送和接受会话标识符来永久保存。

于 2013-02-13T07:20:18.557 回答
1

会话变量是存储在服务器端的变量,对于给定的客户端连接持续存在。

全局变量是在您的 php 代码中具有通用(全局...)范围的变量。这些变量不一定依赖于给定的客户端连接

会话见: http ://www.php.net/manual/en/book.session.php

对于全局变量,请参见: http ://www.tutorialspoint.com/php/php_global_variables.htm

最后,这类问题不适合本论坛,请参阅: https ://stackoverflow.com/faq#dontask

“你应该只根据你所面临的实际问题提出实用的、可回答的问题。喋喋不休、开放式的问题会降低我们网站的实用性,并将其他问题推到首页之外。

你的问题应该有合理的范围。如果你能想象一本书可以回答你的问题,那你就问得太多了。

如果您提出问题的动机是“我想参加关于______的讨论”,那么您不应该在这里提问。但是,如果您的动机是“我希望其他人向我解释______”,那么您可能还可以。(当然欢迎在我们的实时网络聊天中讨论。)”

于 2013-02-13T07:06:53.647 回答
1

全局变量是可以在所有 php 文件中访问的变量,php 定义了一些可用于所有 php 脚本的全局变量。例如 - $_POST 、 $_SESSION 、 $_REQUEST 。

global 也是一个关键字,当您想要访问在函数外部定义的变量时使用。

  <?php
  $name = "xyz" ;
  function hello(){
  global $name ;
  echo $name ;
  }

  ?>
于 2014-05-07T08:21:21.823 回答