在PHP中使用两个具有相同名称的GLOBAL变量

Pra*_*ngh 0 php session get

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

但问题是,只要我使用GET数组设置"user"值,我的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.";
}
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

Mic*_*gem 5

我猜你的register_globals设置已打开.在这里阅读更多相关信息:http://en.wikibooks.org/wiki/PHP_Programming/Register_Globals

  • +1 - 但你应该加上"你应该把它关掉." :-) (3认同)