多个表单提交选项到php脚本的HTML最佳实践


HTML best practice for multiple form submission options to php script

我已经结束了这样一种情况,我将有一个表中保存的条目列表,div集合,或其他。每个条目都有多个可执行的操作-"编辑","删除"等。

从UI的角度来看,我比较擅长CSS/HTML,但我对通过表单进行信息管理仍然很模糊。

我知道我可以有一个超链接去一个地址使用GET符号(addr.com?id=17&act=edit),我应该能够读取值使用PHP脚本GET'd到。这是…聪明吗?如何处理这种情况呢?

我不确定它是否足够安全,或者是否有一种常见的方法来处理这种情况。如果你能想出一个通用的方法来处理这种情况,那就太好了。

我经常这样做,而且我几乎总是使用您所描述的GET符号。这使得将操作和要操作的记录的UID分开非常容易。

e.g. /submit.php?action=edit&uid=17

我们可以很简单地在PHP中路由多个动作:

<?php
$uid = $_REQUEST['uid'];
switch ( $_REQUEST['action'] ) {
    case 'edit':
        $notice = editRecord ( $uid );
        break;
    case 'delete':
        sqlQuery("DELETE FROM `records` WHERE `uid` = '$uid' LIMIT 1");
        $notice = 'The record has been removed.';
        break;
    case 'rename':
        $newname = $_REQUEST['name'];
        sqlQuery("UPDATE `records` SET `name` = '$newname' WHERE `uid` = '$uid' LIMIT 1");
        $notice = 'The record has been renamed.';
        break;
    default:
}
?>
<h1>Admin Panel</h1>
<?php if ( isset( $notice ) ) echo $notice; ?>

我们也可以使用POST保存编辑,上传图像等必要时。因为我们依赖于$_REQUEST超全局变量,所以$_GET和$_POST都被输入其中,所以它适用于两种类型的表单提交。

对于这些操作使用GET没有任何问题,因为它被广泛使用。然而,使用POST实际上可能更安全一点(如果您保护免受CSRF攻击等…)。

这完全取决于您需要多少安全措施以及应用程序中的数据或操作有多敏感。只要牢记某些安全原则,就可以同时使用GET和POST,甚至可以一起使用。对于GET和POST,永远不要信任输入、转义和过滤器,并尝试防止CSRF和其他攻击,这一点总是很重要的。

我建议你在网上阅读一些教程,并尝试自己看看哪种请求方法是最好的选择。