PHP的 - 这是点击按钮(Php - Which button is clicked)

2019-09-27 08:27发布

我写一个剧本,我提供两个按钮“授权”和“撤销”给用户。 问题是,他们两个都设置与“授权”按钮总是优先。

下面是示例代码

<form name="form_access" id="form_access" action="" method="POST" class="access">
|
|
| 

<input type="hidden" name="accessaction" value="Grant Access"/>
<input type="hidden" name="revokeaction" value="Revoke Access"/>

<a id="_access_btt" class="button" href="#">Grant Access</a>

    <img class="ajaxload" style="display:none;" id="ajaxld" src="images/ajax-loader.gif"/>
    <a id="_revoke_btt" class="button" href="#">Revoke Access</a>

    <img class="ajaxload" style="display:none;" id="ajaxld1" src="images/ajax-loader.gif"/>
</form>

Answer 1:

而不是使用两个隐藏的元素,你为什么不使用一个隐藏的元素,像这样的东西吗?

例如:你可以使用:

<input type="hidden" name="accessPermission" value=""/>

并且根据哪个按钮用户点击,用JavaScript的,你可以设置此动作的价值也帮助:

document.form_access.accessPermission.value = "Revoke Access"

document.form_access.accessPermission.value = "Grant Access"

然后提交表单!

所以到最后,你可以检查值$ _REQUEST [“accessPermission”]在你的PHP,

你会得到什么价值你已经为你的隐藏表单元素accessPermission设置:

如果它的值是撤销访问,您将获得$ _REQUEST [“accessPermission”]为“撤销访问权”

如果它的值是授权访问,您将获得$ _REQUEST [“accessPermission”]为“授予访问权”

所以在最后,您可以构建您的形式:

<form name="form_access" id="form_access" action="" method="POST" class="access">
|
|
| 

<input type="hidden" name="accessPermission" value=""/>

<a id="_access_btt" class="button" href="javascript:document.form_access.accessPermission.value = 'Grant Access'">Grant Access</a>

    <img class="ajaxload" style="display:none;" id="ajaxld" src="images/ajax-loader.gif"/>
    <a id="_revoke_btt" class="button" href="javascript:document.form_access.accessPermission.value = 'Revoke Access'">Revoke Access</a>

    <img class="ajaxload" style="display:none;" id="ajaxld1" src="images/ajax-loader.gif"/>
</form>

并且两个值被设定,因为其真正具体由行设置:

<input type="hidden" name="accessaction" value="Grant Access"/>
<input type="hidden" name="revokeaction" value="Revoke Access"/>

格兰特行动优先,因为这是第一次出现。



Answer 2:

<input type="submit" name="accessaction" value="Grant Access"/>
<input type="submit" name="revokeaction" value="Revoke Access"/>

要检查是否授权访问被按下,可以检查isset($_POST['accessaction'])
要检查是否撤消访问权限被按下,可以检查isset($_POST['revokeaction'])

所有的浏览器将只设置按下的按钮,IE是愚蠢的,将值设置为坐标或什么的,其他浏览器也设置为true,和Firefox通常将值设置按钮上的t4ext。 但是,最好的办法是只检查$_POST数组,一个是存在的。

编辑

使用JS来解决这个可能是正确的,但是当用户有JS这个解决方案适用于或关闭,因此,我认为这是更优雅

编辑

如果你不希望使用这些作为实际的按钮,就可以将它们设置为display: none再触发要真正地提交表单的一个点击。



文章来源: Php - Which button is clicked