首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP表单处理

PHP表单处理
EN

Stack Overflow用户
提问于 2012-09-26 03:50:55
回答 2查看 223关注 0票数 0

我已经建立了一个注册表,我已经实现了jQuery验证插件JÖRN ZAEFFERER,包括样式的错误消息与CSS,我想现在添加一层PHP来验证第二次,以防JS是关闭然后以下,我将运行数据通过安全:散列/盐/加密等,然后插入到一个mySql表的数据,然后编写一个程序,以获得通过电子邮件验证的帐户作为注册过程的一部分。

我是自学的,所以任何有更多经验的人都可以解释这个过程的最佳实践。我的问题是: PHP应该去哪里,嵌入到html文件中,嵌入到表单action = "“提交到的单独的php文件中,还是嵌入到包含文件中?关于安全性的最佳实践是什么?如果我使用的是盐、散列或加密函数,那么它们应该在包含文件中吗?最后一个问题是: jQuery验证是在浪费时间吗?如果你两个都做,是把自己嵌入到一个HTML文件中,还是把它放在别的地方更安全?

这是我第一次这样做,但它只是简单地接受输入,将其安全地放入数据库,通过电子邮件进行验证,然后登录新用户,然后去使用网站。

首先,我很想知道最佳实践,所以如果网上有什么好文章,请给我链接。

谢谢

蚂蚁电源

EN

回答 2

Stack Overflow用户

发布于 2012-09-26 04:09:41

所以你在这里问了很多不同的问题。我会把它们一个一个地看一遍。

应该把PHP放在哪里,嵌入到html文件中,在表单action = "“提交到的单独的php文件中,还是在包含文件中?

PHP永远不会直接嵌入HTML文档中。更确切地说,可以将PHP看作一个动态HTML生成器。它创建发送给浏览器的HTML (或JSON等),但实际上从来不会发送到浏览器本身。这就是为什么它被称为服务器端语言,而不是像JavaScript这样的语言(它也可以是服务器端的,但这并不重要)。所以你应该可以把你的验证放在你喜欢的任何地方。它需要在表单action被调用时发生,所以它需要出现在任何发生的地方。下面这样的代码应该是有效的:

代码语言:javascript
复制
<?php

function validate($data) {
  // Do your validation here, and return an array of errors.
  return $errors;
}

// Run the validation on the data posted from the form.
$errors = validate($_POST);
if (empty($errors)) {
  // The data was valid, save it to the database
  // (be sure to sanitize the data first).
} else {
  // The data was not valid, redirect the user or whatever.
}

关于安全性的最佳实践是什么,如果我使用的是盐、散列或加密函数,它们应该在包含文件中吗?

可以,请使用加密函数。它不需要在单独的文件中才是安全的:提供安全性的是加密功能,而不是用户看不到文件的事实(读取:实际的安全性,而不是通过模糊处理的安全性)。,但是,不管你用来散列值的盐是什么,都应该放在一个单独的文件中,这个文件不能通过网络访问。如果用户可以看到你的散列算法和盐,他们就可以开始暴力破解你的数据。

jQuery验证是在浪费时间,用

验证会不会更好?

jQuery验证应该更多地被视为UI/UX的改进,而不是实际的验证。由于您已经提到的原因,客户端(阅读: JavaScript)验证永远不应该取代服务器端(阅读: PHP)验证。但我确实认为它可以为更好的用户体验做出贡献,所以有时两者都值得。

我要做的一件事是使用相同的方法来验证服务器端和客户端,这样您就不必编写两次验证代码。例如,如果您将验证函数放在另一个文件中,则可以使用AJAX将表单数据发送给它,然后接收回表单错误。

希望这能有所帮助!

PHP :另外,如果您要做的是登录用户,请查看password_compat,它将成为PHP5.5中标准库的一部分。这个库应该会以一种可升级的方式为您解决很多安全问题。

票数 2
EN

Stack Overflow用户

发布于 2012-09-26 03:57:42

最佳实践是创建一个php函数或类方法来验证数据,然后在定义为表单操作的单独文件中调用所述函数/方法。假设这是一个POST请求,您应该有一个单独的文件来处理该请求。验证不应该是这个文件的一部分,因为您应该能够在您想要的任何地方使用它。

TLDR:创建一个验证类,并在单独的处理文件中包含和使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12590075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档