为什么“ GET”优先于“ SESSION” - php

在代码中:

<?php
    session_start();
    $_SESSION['id'] = 14;
    if(isset($_GET['id']))
    {
        $id = $_GET['id'];
    }
    else
    {
        $id = $_SESSION['id'];
    }
    echo $id;
    echo "<br>";
    echo $_SESSION['id'];
?>

为什么回显出的第二个值总是等于GET变量(假设有一组)?这是配置错误还是我缺少什么?

参考方案

我的魔幻水晶球说您已打开register_globals设置。通过调用phpinfo()进行检查

启用register_globals时,$foo$_SESSION['foo']彼此为references,但前提是$ foo在全局范围内。这意味着为它们中的任何一个分配值都会导致另一个更新。可以将它们视为完全相同的变量。

这种设置是古老的。如果我没有记错的话,$ foo和$ _SESSION ['foo']之间的引用将仅在以下之一之后建立:

如果会话中存在$ _SESSION ['foo'],则在调用session_start()之后立即进行。
在为$ _SESSION ['foo']分配任何值后立即
在调用session_register('foo')之后立即

您应该强烈考虑禁用register_globals。像这样的意外程序行为是阻止设置的最终原因,最终将其从php中完全删除。

为什么“ htmlspecialchars”这么慢? - php

htmlspecialchars($string, ENT_NOQUOTES); ...比以下速度慢约2.5倍:str_replace(array('&', '<', '>'), array('&amp;', '&lt;',…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数