我最近在工作时在我的电脑上安装了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数据的正确方法是什么,取决于具体情况可能会有或不存在?
答案 0 :(得分:3)
要获取值,您必须初始化变量,例如
$longitude = '';
$latitude = '';
if (isset($_GET['longitude'])) $longitude = $_GET['longitude'];
if (isset($_GET['latitude'])) $latitude = $_GET['latitude'];
以后使用指定的变量
要控制程序流程,您可以直接查询请求变量:
if (isset($_GET['id'])) {
//get data
}
答案 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']
}