PHP / HTML - isset函数
题
我是PHP的新手,我正在为我的公司创建一个网站。我正在使用我已经获得的一些现有代码,但似乎无法使其正常工作 - 任何帮助都将非常感谢!
我有一个变量 $ id ,用于标识要在页面上显示的产品类别类型。我首先需要检查id变量是否已设置,如果没有,则将变量默认为类别0。
我的代码如下:
setdefault($id, 0);
function setdefault(&$var, $default="")
{
if (!isset($var))
{
$var = $default;
}
}
所以使用地址www.website.com/browse.php,我希望它默认为$ id = 0;地址为www.website.com/browse.php?id=3,我希望将$ id设置为3并显示相关产品。但是,尽管设置了$ id,它仍然默认为0.我的代码中是否存在明显不正确的内容?
解决方案
您可能希望PHP使用$ _POST和$ _GET作为全局变量。 PHP曾经以这种方式在当天设置,但较新的版本要求您明确引用这些变量。
你可以试试这个:
setdefault(您可能希望PHP使用$ _POST和$ _GET作为全局变量。 PHP曾经以这种方式在当天设置,但较新的版本要求您明确引用这些变量。
你可以试试这个:
$id = array_key_exists('id', 您可能希望PHP使用$ _POST和$ _GET作为全局变量。 PHP曾经以这种方式在当天设置,但较新的版本要求您明确引用这些变量。
你可以试试这个:
setdefault(您可能希望PHP使用$ _POST和$ _GET作为全局变量。 PHP曾经以这种方式在当天设置,但较新的版本要求您明确引用这些变量。
你可以试试这个:
<*>
甚至更简单(使用三元运算符):
<*>GET['id'], 0);
function setdefault(&$var, $default="")
{
if (!isset($var))
{
$var = $default;
}
}
甚至更简单(使用三元运算符):
<*>GET) ? 您可能希望PHP使用$ _POST和$ _GET作为全局变量。 PHP曾经以这种方式在当天设置,但较新的版本要求您明确引用这些变量。
你可以试试这个:
setdefault(您可能希望PHP使用$ _POST和$ _GET作为全局变量。 PHP曾经以这种方式在当天设置,但较新的版本要求您明确引用这些变量。
你可以试试这个:
<*>
甚至更简单(使用三元运算符):
<*>GET['id'], 0);
function setdefault(&$var, $default="")
{
if (!isset($var))
{
$var = $default;
}
}
甚至更简单(使用三元运算符):
<*>GET['id'] : 0;
甚至更简单(使用三元运算符):
<*>GET['id'], 0);
function setdefault(&$var, $default="")
{
if (!isset($var))
{
$var = $default;
}
}
甚至更简单(使用三元运算符):
<*>其他提示
首先,如果这是PHP 5.X我强烈建议你不要使用&amp;参考传递变量。话虽如此。使用该函数,isset函数调用将始终为true。但是你会在setdefault($ id,0);
上收到一个未定义的变量警告试试这个。
$id = isset($id) ? $id : 0;
如果未设置$ id,则调用setdefault($ id,0)将生成警告。像setdefault这样的函数在PHP中不起作用。请改用它。
if (!isset($id)) $id = 0;
如果您对数组变量执行此操作,例如$ _GET和$ _POST,则可以执行此操作:
function getuservar($A, $index, $default = '') {
if (!isset($A[$index])) return $default;
if (get_magic_quote_gpc()) return stripslashes($A[$index]);
return $A[$index];
}
$clean_id = getuservar(如果未设置$ id,则调用setdefault($ id,0)将生成警告。像setdefault这样的函数在PHP中不起作用。请改用它。
if (!isset($id)) $id = 0;
如果您对数组变量执行此操作,例如$ _GET和$ _POST,则可以执行此操作:
<*>
这种返回形式更好,因为你立即停止使用$ _GET数组,只使用在其余代码中清理的变量。您清理外部变量一次,而不再在代码中再次触摸外部变量。 $ A可以是$ _GET,$ _POST,$ _REQUEST或$ _COOKIE。
它还会为您处理恼人的magic_quote内容,因此您知道变量中的数据是用户发送的文本。只需记住在将其发送回用户或数据库时再次清理它。
GET, 'id', 0);
这种返回形式更好,因为你立即停止使用$ _GET数组,只使用在其余代码中清理的变量。您清理外部变量一次,而不再在代码中再次触摸外部变量。 $ A可以是$ _GET,$ _POST,$ _REQUEST或$ _COOKIE。
它还会为您处理恼人的magic_quote内容,因此您知道变量中的数据是用户发送的文本。只需记住在将其发送回用户或数据库时再次清理它。
如何设置 $ id
?如果 register_globals
关闭(默认情况下它在PHP 4.2及更高版本中关闭),则需要查看 $ _ GET ['id']
或 $ _ POST [ 'id']
代替(或 $ _ REQUEST ['id']
,但有理由避免这种情况。)
还需要包含从查询字符串( browse.php?id = 3
)设置 $ id
的代码。您可能会想到PHP具有的 register_globals
设置,它将在查询字符串中包含时自动创建变量。不要重新启用该功能,这几年已被证明是一个非常糟糕的主意。
在使用之前,需要检查从查询字符串中提取的任何变量的类型/安全性。例如,您可以从 $ _ GET
超级全局中提取变量,检查它是否为数字,如果不是则设置为默认值:
if (!is_numeric(还需要包含从查询字符串( browse.php?id = 3
)设置 $ id
的代码。您可能会想到PHP具有的 register_globals
设置,它将在查询字符串中包含时自动创建变量。不要重新启用该功能,这几年已被证明是一个非常糟糕的主意。
在使用之前,需要检查从查询字符串中提取的任何变量的类型/安全性。例如,您可以从 $ _ GET
超级全局中提取变量,检查它是否为数字,如果不是则设置为默认值:
<*>GET['id']) {
setdefault(还需要包含从查询字符串( browse.php?id = 3
)设置 $ id
的代码。您可能会想到PHP具有的 register_globals
设置,它将在查询字符串中包含时自动创建变量。不要重新启用该功能,这几年已被证明是一个非常糟糕的主意。
在使用之前,需要检查从查询字符串中提取的任何变量的类型/安全性。例如,您可以从 $ _ GET
超级全局中提取变量,检查它是否为数字,如果不是则设置为默认值:
<*>GET['id'], 0);
}