PHP正确处理未分配的POSTS和GETS的方法

时间:2012-01-31 19:59:27

标签: php post get

我最近在工作时在我的电脑上安装了WAMP服务器软件包。当我第一次开始使用PHP时(不久前),我手动安装了PHP,MySQL和Apache。好吧,我一直在努力的应用程序现在给了我一个完整的通知消息:

Notice: Undefined index: lookatLon in C:\wamp\www\coordinates.php on line 3

嗯,事实证明,我已经知道我正在处理我的$ variable = $ _REQUEST ['whatever']的分配;都错了。例如......我有一个脚本接受来自$ _GET ['经度']的$经度和$纬度;和$ _GET ['latitude'] ....但在某些情况下,页面加载时url中没有任何'longitude ='或'latitude ='。

现在我收到这些通知,表示不喜欢我未设置的变量。

所以,我的问题是,处理情况的正确方法是什么,有时可以获得GET或POST信息,有时则没有。我只是读到关闭通知(这肯定会解决我的问题)不是一个好主意,而是解决方案是正确编码。

那么考虑GET或POST数据的正确方法是什么,取决于具体情况可能会有或不存在?

5 个答案:

答案 0 :(得分:3)

要获取,您必须初始化变量,例如

$longitude = '';
$latitude = '';
if (isset($_GET['longitude'])) $longitude = $_GET['longitude'];
if (isset($_GET['latitude'])) $latitude = $_GET['latitude'];

以后使用指定的变量

要控制程序流程,您可以直接查询请求变量:

if (isset($_GET['id'])) {
  //get data
}
  • 请勿使用$ _REQUEST。知道您的数据来自哪里,不要让它干扰。
  • 您可能还希望对请求变量进行一些验证。
  • 例如,如果你要批量处理它们,你可以在数组中保留变量,以创建一个SQL语句。

答案 1 :(得分:2)

非强制性且不太可读的三元解决方案:

$myvar = ( isset($_GET['myvar']) ? sanitize($_GET['myvar']) : 'default value' );

sanitize()只是用于清理输入的通用占位符函数。

答案 2 :(得分:1)

查看该值是否已设置。 (http://php.net/manual/en/function.isset.php)

$myvar = "";
if(isset($_GET["myvar"])) $myvar = $_GET["myvar"];

不要忘记在代码中的适当位置检查您是否拥有有效值,清理用户输入等...

答案 3 :(得分:0)

您必须使用isset()测试包装变量:

if (isset($_REQUEST['whatever'])) {
    if ($_REQUEST['whatever'] == '.....') {
    }
}

你可以在短期内使用@错误抑制opreator,但这是一个短期解决方案,只能解决问题。您还可以在php.ini级别禁用警告,但同样,这只是一个短期不可靠的修复。最好的解决方案是在任何地方使用isset()包装器。痛苦,但最好的长期解决方案。

答案 4 :(得分:0)

我发现处理它的最简单方法是使用isset()函数,如下所示:

if(isset($_GET['foo']))
{
  //do whatever with $_GET['foo']
}