gpt4 book ai didi

PHP变量名与 session 变量冲突

转载 作者:行者123 更新时间:2023-12-02 07:46:44 24 4
gpt4 key购买 nike

我有以下别人编写的代码段,我正在尝试修复:

function calc() {
require_once("db.php");
connect();

$a = split("#", $_SESSION['freight']);
$loc = $a[0];

$r = mysql_query("SELECT `price`, `gst` FROM `freight` WHERE `location`='$loc'");
$arr = mysql_fetch_array($r);
$_SESSION['freight'] = $loc."#".$arr['price'];

return $arr['price'];
}

function ajaxFunction () {
$_SESSION['freight'] = $_GET['loc'];
$freight = calc();
echo number_format($freight, 2);
return;
}

它并不漂亮,我只是想修复它。

现在我注意到错误似乎源于 $freight = calc()。在该行之后,$freight 等于 $10($arr['price'] 值)。 但是 $_SESSION['freight'] 也将等于 $10,而且只是 $10,就好像它与 $freight 是同一个变量一样。无论我将 $freight 设置为什么,$_SESSION['freight'] 也会变成。

如果我将 ajax 函数中的 $freight 更改为 $freight2,它不会改变 session 变量。这是我对 PHP 不了解的主要内容吗?变量名称与 session 变量共享相同的命名空间?

总体问题是:改变 $a 会改变 $_SESSION['a'] 吗?因为它看起来确实如此。

最佳答案

看起来您的注册全局变量在您的 php.ini 文件中设置为打开。你需要把它关掉。如果它打开,您的 $_SESSION、$_GET、$_POST 元素可以称为变量名称。

例如$_SESSION['item'] 与 $item 相同

更多信息在这里:http://us2.php.net/manual/en/ini.core.php#ini.register-globals

此外,register globals 现在已被弃用,这也意味着如果这确实是问题所在,那么您使用的是旧版本的 PHP,可能需要考虑升级。

关于PHP变量名与 session 变量冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6481856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com