我如何检查请求是否是PHP中的回复,以下是否可以?
if (isset($_POST["submit"]))
其中submit
是name
<input type="submit" />
答案 0 :(得分:25)
如果您知道并期望在同一页面上有这样的提交按钮,那将会有效。
如果您不立即了解请求变量,另一种方法是检查请求方法:
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST')
正如评论中所指出的,要专门检查postback而不是任何POST请求,您需要确保引荐来源与处理页面是同一页面。像这样:
if (basename($_SERVER['HTTP_REFERER']) == $_SERVER['SCRIPT_NAME'])
答案 1 :(得分:3)
您想要$_SERVER['REQUEST_METHOD'] == 'POST'
。
与this one相比,你的问题非常相似但不那么笼统。
这可能是比实际检查post变量更好的方法。首先,您不知道该变量是否会被发送。我有预感,如果没有指定值,某些浏览器根本不会发送密钥。另外,如果没有POSTed值,我担心某些版本的PHP可能无法定义$_POST
。
答案 2 :(得分:3)
如果你想拥有一个没有依赖性“方法”(post / get)和论坛元素的任何其他名称的通用例程,那么我推荐这个
<?php
$isPostBack = false;
$referer = "";
$thisPage = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
if (isset($_SERVER['HTTP_REFERER'])){
$referer = $_SERVER['HTTP_REFERER'];
}
if ($referer == $thisPage){
$isPostBack = true;
}
?>
现在if $ isPostBack如果是回发则为true,否则为false。
我希望这会有所帮助
答案 3 :(得分:1)
是的,应该这样做。
当您使用image
类型提交时,请小心,他们不会在某些浏览器中发送name
属性,您将无法检测到POST。把我的头撞到桌子上几次,直到我自己意识到这一点。
解决方法是添加hidden
类型输入。
答案 4 :(得分:0)
是。您也可以使用if(array_key_exists('submit', $_POST))