一个网站,在一个统一入口的页面设置了一个global变量获取用户输入的参数,然后重定向到另外一个页面读取这个参数。
这种情况下会不会导致某一个用户访问时,实际处理到的global变量值是另外一个用户输入的呢?

解决方案 »

  1.   

    不会.PHP是进程级的,无法以线程的细颗粒处理元素.
    所有的变量,函数,执行过程都是在单独的进程中执行,不同进程之间的变量完全封闭不会干扰.
      

  2.   

    global 只在同一个线程内有效
    重定向已经是另一个请求~所以是另一个线程
      

  3.   

    不要使用global变量获取用户输入的参数
    可以直接从$_REQUEST获取用户发送的信息,
    global是系统的共享空间,当多用户访问的时候,不可能准确获取用户输入的信息。
    如果有显示输入信息功能的话,用户A很容易得到用户B的输入信息。
      

  4.   


    好好好,进程
    我其实不知道国内叫什么名称 haha
      

  5.   

    global变量是用来保存系统共享内容的,
    例如连接数据库的实例、缓存几乎没有变化的商品分类信息等等。
    但是,用户输入信息是禁止用global变量操作的,global使用不当,的确存在安全隐患,
    但是如果用global管理输入信息,那就不是按全部安全的问题了——是自掘坟墓。PHP5以后的版本,支持了很多OOP语言功能,所以,可以通过Singleton和Registory设计模式替代global。
    这样的代码更安全,也便于管理。
      

  6.   

    global管理输入信息的确是很不当的,全局变量不可以随意乱用.但是,global跟多用户似乎并没有什么关系?PHP执行细度决定了每一次用户请求,都是在单独的zend虚拟机里完成操作,变量封闭,不会出现这个用户输入的信息被那个用户访问.
    所谓global的共享,是指在同一个zend虚拟机内部,可以跨函数,方法的符号变量表限制,访问外域变量.但不会出现A用户得到B用户输入的信息吧.