用$ _GET替换$ _HTTP_GET_VARS

时间:2012-01-04 10:14:35

标签: php

这是一个关于在数组中为类似于旧的基于纸张的闪存卡的个人记忆辅助项目设置变量的问题,我现在想要消除这些闪存卡。 5年前我的旧工作的PHP程序员帮助编写了这个页面 - 唉我早就失去了联系,而且我的PHP技能充其量只是最基本的。

当前代码(PHP4)

    <?php
# Setting up Variables
reset($HTTP_GET_VARS);
while(list($key,$value) = each($HTTP_GET_VARS))
{
    $$key = $value;
}

#set query string, current_id and current_index
$query_string = "sound=$sound&hint=$hint&type=$type";

if(!isset($current_id)) $current_id = "";

if(!isset($current_index)) $current_index = "";

#connect to MySQL
$conn = @mysql_connect( "localhost","xxxx","xxxx" )
  or die( "Sorry - could not connect to MySQL" );

#select the specified database
$rs = @mysql_select_db( "xxx", $conn )
  or die( "Sorry - could not connect to specified Db" );

# create the query to select the records and then …

尝试寻找解决方案

最初,我尝试了其他地方推荐的简单替换。但是对于这个页面的代码,它没有用。我也看了Replaced $HTTP_GET_VARS with $_GET, but not working,它也没有解决问题(见下面的尝试)

尝试新密码(PHP5)

假设有一个表Db,有多个列,比如'alpha','bravo'和'charlie',那么表格单元格中的数据行。现在折旧的$ HTTP_GET_VARS曾经工作正常:

    <?php
# Setting up Variables
unset($alpha, $bravo, $charlie);
while(list($key,$values) = each($alpha = $_GET['alpha'], $bravo = $_GET['bravo'], $charlie = $_GET['charlie']))
{
    $$key = $value;
}

#set query string, current_id and current_index
$query_string = "sound=$sound&hint=$hint&type=$type";

if(!isset($current_id)) $current_id = "";

if(!isset($current_index)) $current_index = "";

#connect to MySQL
$conn = @mysql_connect( "localhost","xxxx","xxxx" )
  or die( "Sorry - could not connect to MySQL" );

#select the specified database
$rs = @mysql_select_db( "xxx", $conn )
  or die( "Sorry - could not connect to specified Db" );

# create the query to select the records and then...

我使用此代码得到的错误是:注意:未定义的索引:第4行的C:\ wamp \ www \ page2.php中的alpha

3 个答案:

答案 0 :(得分:0)

这不是错误,它是一个通知 - 告诉你在你使用它的地方可能不存在一些$ _GET数组索引。您可以查看php的error_reporting(),并可能在脚本的最初处将其设置为error_reporting(E_ERROR)以避免通知 - 在您的情况下可能就足够了。

http://php.net/manual/en/function.error-reporting.php

答案 1 :(得分:0)

4)如果你想让键可用作局部变量并且(正确)禁用了register_globals,那么extract($ _ GET)有什么问题;? - DaveRandom

自:

<?php
# Setting up Variables
unset($alpha, $bravo, $charlie);
while(list($key,$values) = each($alpha = $_GET['alpha'], $bravo = $_GET['bravo'], $charlie = $_GET['charlie']))
{
     $$key = $value;
}

要:

# Setting up Variables
unset($alpha, $bravo, $charlie);
extract($_GET);

好像已经成功了。

感谢DaveRandom

答案 2 :(得分:-2)

因为您取消设置尚未设置的变量 我认为你有php4 register_globals和php 5 off

register_globals是一件坏事,所以不要把它放在