1)
我有这个:
function ObtainRequest($Field, $Method) {
$Returned = "";
if ($Method == "POST")
$Returned = $_POST[$Field];
else if ($Method == "GET")
$Returned = $_GET[$Field];
else
$Returned = $_REQUEST[$Field];
return $Returned;
}
现在,使用函数:
if (isset(ObtainRequest("OneField","POST"))) {
DoSomething();
} else if (!isset(ObtainRequest("OneField","POST"))) {
DoOtherthing();
}
但是我的脚本没有运行(显示计划页)...
我的错误是什么?
2)
$_REQUEST
在函数内部丢失了吗?
此代码有效!!:
if (isset($_REQUEST["OneField"])) {
DoSomething();
}
此代码不起作用!!:
if (isset(ObtainRequest("OneField","REQUEST"))) {
DoSomething();
}
此代码不起作用!!:
if (empty(ObtainRequest("OneField","REQUEST"))) {
DoSomething();
}
第3)
它也适用于Session吗?
答案 0 :(得分:1)
你的错误在这里:
$Method == "Post"
但你传递大写的POST
:
ObtainRequest("OneField","POST")
修复strtoupper()
:
function ObtainRequest($Field, $Method) {
$Returned = "";
$Method = strtoupper($Method);
if ($Method == "POST")
$Returned = isset($_POST[$Field]) ? $_POST[$Field] : false;
else if ($Method == "GET")
$Returned = isset($_GET[$Field]) ? $_GET[$Field] : false;
else
$Returned = isset($_REQUEST[$Field]) ? $_REQUEST[$Field] : false;
return $Returned;
}
此外,可以使用switch
构造缩短此功能:
function ObtainRequest($Field, $Method) {
switch(strtoupper($Method)){
case "POST": return isset($_POST[$Field]) ? $_POST[$Field] : false;
case "GET": return isset($_GET[$Field]) ? $_GET[$Field] : false;
default: return isset($_REQUEST[$Field]) ? $_REQUEST[$Field] : false;
}
}
第二个问题是isset()
可能会与变量,一起使用,但不会与功能结果一起使用。改为使用布尔检查:
if (ObtainRequest("OneField","POST") !== false) {
DoSomething();
} else if (ObtainRequest("OneField","POST") === false) {
DoOtherthing();
}
它也适用于Session吗?
好吧,如果您对我的观点感兴趣:我 $_SESSION
在此类函数中添加{{3} },$_POST
和$_GET
,因为$_REQUEST
的含义不同。而且,它的存在方式不同,与它们不同。
但$_SESSION
本身可能会实现类似此函数的功能。
答案 1 :(得分:1)
我更喜欢使用NULL,因为它表示空或没有数据。
function ObtainRequest($Field, $Method) {
$Method = strtoupper($Method);
if ($Method == "POST")
return = isset($_POST[$Field]) ? $_POST[$Field] : NULL;
else if ($Method == "GET")
return = isset($_GET[$Field]) ? $_GET[$Field] : NULL;
else
return isset($_REQUEST[$Field]) ? $_REQUEST[$Field] : NULL;
}
现在,您可以使用此方法:
if (ObtainRequest("OneField","POST") != NULL) {
DoSomething();
} else if (ObtainRequest("OneField","POST") == NULL) {
DoOtherthing();
}
答案 2 :(得分:0)
我可以看到你使用post而不是POST的第一个问题...
是的,你也可以用会话这样做,但代码需要稍微修改一下..