Php 如果同名变量为null,则会删除会话值
我有一个名为index.php的脚本:Php 如果同名变量为null,则会删除会话值,php,session,Php,Session,我有一个名为index.php的脚本: <?php session_start(); print_r($_SESSION); $lang = ""; print_r($_SESSION); //some other stuff $lang = "abc"; $_SESSION['lang'] = $lang; ?> 在第二次呼叫时(如果我按F5),这是惊人的imho,此输出显示: Array ( [lang] => abc ) Array () 如果我只是将变量$lan
<?php
session_start();
print_r($_SESSION);
$lang = "";
print_r($_SESSION);
//some other stuff
$lang = "abc";
$_SESSION['lang'] = $lang;
?>
在第二次呼叫时(如果我按F5),这是惊人的imho,此输出显示:
Array ( [lang] => abc ) Array ()
如果我只是将变量$lang
设置为”
,则键为“lang”的会话值将被清空。为什么会发生这种情况
编辑:我正在运行PHP5.2.17。请检查此项,并
但如果我想简单地说:如果register\u globals
出现在所有$\u POST和$\u GET和$\u会话变量将自动复制到具有相同索引名称的变量中。因此,例如,当您有一个$foo
时,您无法理解它来自何处($\u GET['foo',$\u SESSION['foo',等等)
正如@EricCitaire所提到的,“只需禁用它,它的默认值是false,因为PHP4.2在5.3中被弃用,并且由于严重的安全问题在5.4中被删除。” 您可以使用
php.ini
、.htaccess
和ini\u set()来设置它
其他链接:
register\u globals仍处于活动状态?您的register\u globals设置的值是多少?register\u globals处于活动状态-这意味着什么?我刚刚知道它的意思。。但正如我所理解的register_globals,只有像$lang
这样的变量可以被覆盖,但是如果我将变量设为null,为什么它也会将会话值设为null呢?只需禁用它,它的默认值是false,因为PHP4.2在5.3中被弃用,并且由于严重的安全问题在5.4中被删除。
Array ( [lang] => abc ) Array ()
ini_set('register_globals', 'Off')