我是PHP的新手,只花了两周时间。我目前正在阅读“ PHP和MySQL Web开发”,但我在我正在处理的当前网站上的表单验证方面应该做些什么。我决定第一次使用HTML5Boilerplate,所有内容都编码并且工作得很好,但我似乎无法弄清楚如何做我的表单。在我的表单中,我要求的是Name
email
和message
,我正在使用$_post
方法。
$name
,$email
和。{
$message
但我想知道这是否是最佳做法?2+2
创建一个简单的表单验证码
需要一个4
的输入框,我想知道这是最好的方法
那个if ($_POST['submit'] && $human == '4')
?$email =
htmlspecialchars
的评论是否有人解释原因?我为这个帖子道歉但是我已经阅读了几周(我相信的15)关于PHP表单验证的教程,他们都有自己的优点和缺点,我想开始正确使用PHP。我确实尝试在我的BoilerPlate中实现Eric Martin's表单,但它不起作用,也没有在Firefox中收到任何浏览器错误。
如果它有帮助,这些是我读过的一些教程:
答案 0 :(得分:1)
我按照要点按顺序编号我的回复...
$ name,$ email和$ message已经在提交的数组中,$ _POST。将它们移动到另一个变量只是一种偏好(不一定是最佳实践)。当做一个长形式时,只需为每个变量键入$ _POST就会很累。
Javascript验证是一种便利,而不是后备。 PHP将是你的后备。 JS不是必需的,但是很有帮助。您应该始终在PHP中验证,因为JS可以轻松绕过,但JS很不错。如果我提交一个有错误的表单而我必须等待整个页面加载才发现,我可能不会再次填写表格来纠正它。在JS中更好的方法是验证模糊的每个字段(意味着当光标离开字段时),以便我可以立即返回,如果有错误的话。
PHP不是严格类型的,意味着'2' == 2 == 2.0
。 PHP将尝试隐式转换几乎任何类型。
制作图像,向他们展示,只知道预期的响应并将其与其他任何字段进行比较。如果你想动态地制作图像,只需生成2个随机数,将结果存储在会话中,使用gd绘制带有数学表达式的图像,并在帖子上进行比较。
htmlspecialchars会翻译许多有效字符。翻译后,它们可以被撤消,但如果没有撤销,电子邮件将不再有效,并且无法到达目的地。
答案 1 :(得分:0)
许多教程建议我使用$ name,$ email和$ message的数组,但我想知道这是否是最佳做法?
我不确定你的意思。它们位于$ _POST,$ _GET和/或$ _REQUEST数组中,具体取决于它们的发送方式。
我是否仍应将JavaScript验证作为后备广告?
是
如果我使用PHP,有没有办法将所有提交的内容视为文本,或者是PHP中的默认内容?
浏览器通过HTTP提交的所有数据都被视为字符串,无论它是什么数据。这就是为什么你想使用is_numeric()而不是is_int()来检查数字。
我想用2 + 2创建一个简单的表格验证码,需要一个4的输入框,我想知道if($ _POST ['submit']&& $的最好方法人=='4')?
您将需要使用$ _SESSION来回答其验证码的答案。
我已经阅读了几条关于使用$ email = htmlspecialchars的评论是否有人可以解释为什么?
电子邮件中有几个特殊字符是有效字符,htmlspecialchars()将翻译。
答案 2 :(得分:0)
我知道这并不能解决所有问题,但希望这会有所帮助。
许多教程建议我使用$ name,$ email和$ message的数组,但我想知道这是否是最佳做法?
不确定你在这个上的意思,请详细说明一下?
我是否仍应将JavaScript验证作为后备广告?
这绝对是个好主意。这不仅仅是一种恭维的后备。真正重要的是你的PHP处理验证,因此不会发生MySQL注入(或其他不好的事情)。任何JS验证都可以轻松绕过,因此您不能依赖它。 JS验证主要是一种用户友好的方式,以正确的格式显示字段是否需要。
如果我使用PHP,有没有办法将所有提交的内容视为文本,或者是PHP中的默认内容?
PHP没有关于变量的内在类型。话虽这么说,您可以使用强制转换和函数来确保变量是数字等。对于表单,如果您有多个具有相同名称值foods[]
的复选框,则$_POST['foods']
是一个数组。大多数其他字段都以文本形式提交。
我想用2 + 2创建一个简单的表格验证码,需要一个4的输入框,我想知道if($ _POST ['submit']&& $的最好方法人=='4')?
我会谷歌一个很好的Captcha PHP库。这些演示通常非常彻底且易于实施。
我已经阅读了几条关于使用$ email = htmlspecialchars的评论是否有人可以解释为什么?
我会考虑使用正则表达式验证电子邮件,有些函数也可以这样做,请参阅:How to validate an Email in PHP?