表单提交问题

时间:2013-08-07 13:08:49

标签: php regex forms validation

我要问的几个问题,首先,你是否填写表格是否重要:

<form action="whatever.php" method="post">

而不是:

<form name="" action="$_SERVER['PHP_SELF']" method="post">

我的意思是我只是列出了whatever.php,因为它拆分我的代码而不是拥有大量的代码文件,我只是传递我的错误消息等会话变量然后立即销毁它们,我只是好奇的什么是优点或缺点,如果我可以做得更好?

下一个问题是表单验证,我被告知它是不是来自数据库,不打扰服务器端验证,只打扰客户端验证...这似乎有点奇怪,不打扰服务器端验证,我觉得我应该同时拥有这两个数据库。

3 个答案:

答案 0 :(得分:0)

表单中的操作并不重要。如果您使用带路由器的框架,则URL不会直接映射到PHP文件。代码所在的位置不应由URL确定,但这是在您进入更高级的代码体系结构时。

  

如果它不是来自数据库,请不要打扰服务器端验证,只打扰客户端验证

反过来说。数据库中的值安全,用户输入从不安全。

答案 1 :(得分:0)

  

,我被告知它是不是来自数据库,不要打扰   服务器端验证,只对客户端验证感到困扰。

错误!在客户端进行的所有操作都具有潜在的危险性。通过禁用javascript或vbscript(或其他),用户可以绕过任何验证。始终在服务器端验证!还可以考虑Chrome&amp; Firefox Web开发人员工具,任何HTML代码都可以随时更改。

从表单开始,省略action参数或留空(以后更好,否则W3C验证失败)会告诉浏览器将输入发送到同一个文件

考虑以下示例

<?php
if(isset($_POST['submit']))
{
    echo $_POST['text'];
}
?>
<hr>
<form action="" method="POST">
    <input type="text" name="text">
    <input type="submit" value="susbmit">
</form>

脚本将在表单提交

上回显传递给它的内容

答案 2 :(得分:0)

如果您在表单中使用$_SERVER['PHP_SELF'],则action属性将默认为当前网址。这是一种告诉PHP 将表单提交到它来自的地方。

的方法

但是,将action属性留空是可以实现同样的效果。表格将提交给自己。我个人认为这更好。如果您使用$_SERVER['PHP_SELF'],攻击者可以通过附加URL的file.php部分来轻松注入恶意代码。将action属性保留为空可以防止这种情况发生。

来到你的第二个问题,

  

我被告知它是不是来自数据库,不打扰服务器端验证,只打扰客户端验证

不,那是另一回事。数据库中的值通常是安全的,因为您将它们插入到数据库中。另一方面,用户输入应该,并且应该正确验证它们。