【问题标题】:Using two GLOBAL variables with same name in PHP在 PHP 中使用两个同名的 GLOBAL 变量
【发布时间】:2012-01-04 13:25:01
【问题描述】:

我使用$_SESSION['user'],即用户作为变量将用户登录的ID存储在SESSION数组中。同时,我在其他地方使用$_GET['user']做一些其他的事情。

但是,问题在于,一旦我使用 GET 数组设置“用户”值,我的 SESSION 数组的用户值也会被覆盖。我对此感到非常惊讶。

代码在我的本地服务器上运行良好(没有覆盖),但在我的网站上同样失败

虽然,我现在已经通过更改变量来修复它,但我很想知道这背后的原因。

如果我的问题不清楚,请发表评论。

这里是代码(根据要求发布)。但是,我认为这不是必需的

if($_SESSION['user']!=""){
$user = $_GET['user'];
$q = "select * from some_table where username='$user' order by product";
$a = mysql_query($q);
$count = mysql_num_rows($a);
if($count==0){
   die ("No such username exists. No credits will be deducted for wrong query.");
   }
   else {
   $user_q = $_SESSION['user'];
   $val = 10;
   $query2 = "UPDATE some_table set user_balance=user_balance-'$val' where username='$user_q'";
   mysql_query($query2);
   echo "<table class='tablesorter' id='myTable' style='width:600px;align:center;'><thead><tr><th align='center'>Product</th><th align='center'>Time</th><th align='center'>Credit</th><th align='center'>Modified Credits</th></tr></thead><tbody>";
   }
while($array = mysql_fetch_array($a)){
$p = $array['product_name'];
$c = $array['cost_incurred'];
$t = $array['timestamp_jkj'];
$m = $array['mod_balance_something'];
   echo "<tr><td align='center'>$p</td><td align='center' >$t</td><td  align='center'>$c</td><td  align='center'>$m</td></tr>";
   }
   echo "</tbody></table>";
}
else {
  echo "You need to login to see your details.";
}

谢谢:)

【问题讨论】:

  • 这不应该发生,您应该发布您的代码,以便我们尝试找出原因。
  • 但是,为什么它只是将变量名从用户更改为用户1??
  • 没有看到你的代码,我不知道。
  • @PrashantSingh:设置会话变量的某些条件可能是您在本地使用的帐户而不是远程帐户
  • @PrashantSingh:你有 register_globals 设置为 On 吗?

标签: php session get


【解决方案1】:

我猜你的 register_globals 设置已打开。在此处阅读更多信息:http://en.wikibooks.org/wiki/PHP_Programming/Register_Globals

【讨论】:

  • +1 - 但是您应该添加“并且您应该将其关闭”。 :-)
  • @drrcknlsn 确实,这是一个邪恶的设置,现在也已弃用
  • +1 非常好的评论。我也喜欢@drrcknlsn 的评论 :)
【解决方案2】:

我真的很喜欢你的评论“我添加了代码。找出来”@DaveRandom

检查您的 register_globals 设置。

谢谢:)

【讨论】:

    猜你喜欢
    • 2014-02-09
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    相关资源
    最近更新 更多