Php 验证码存储在会话中?

Php 验证码存储在会话中?,php,forms,session,random,Php,Forms,Session,Random,我制作了一个简单的联系表格,为了防止垃圾邮件,我不得不使用验证码。 当然,我认为使用图像或这些奇怪的几乎不可能读懂的字母对用户或我来说都很烦人 所以我所做的只是随机创建一个数字并存储在会话中: if(!isset($_SESSION['var_answer'])) { $_SESSION['var_answer'] = rand (1, 100); } 然后要求用户输入这个数字,当用户提交表单时,我的代码检查会话之前创建并存储在会话中的随机数是否与用户输入的数字匹配,并将表单发送出去,

我制作了一个简单的联系表格,为了防止垃圾邮件,我不得不使用验证码。 当然,我认为使用图像或这些奇怪的几乎不可能读懂的字母对用户或我来说都很烦人

所以我所做的只是随机创建一个数字并存储在会话中:

if(!isset($_SESSION['var_answer']))
{
    $_SESSION['var_answer'] = rand (1, 100);
}
然后要求用户输入这个数字,当用户提交表单时,我的代码检查会话之前创建并存储在会话中的随机数是否与用户输入的数字匹配,并将表单发送出去,然后会话取消设置,我们有另一个随机数


安全吗?或者,这种方式是无用的保护垃圾邮件

我甚至不能说它是否无用,但我在我的项目中所做的是使用第三方工具/软件,它们中有很多用于验证码,或者生成随机文本/数字,并将其制作成图像以防止来自机器人的垃圾邮件,我甚至不打算将它们存储到会话中

我认为这对于随机浏览网页的一般垃圾机器人来说是安全的。然而,如果你是垃圾邮件发送者的目标,他们会专门为你的网站编写一个机器人,那么,它可以在你的解析中拼凑数字,并将其放入请求中


你可以用数字创建一个简单的图像,这可能会让垃圾邮件发送者更难处理。

这是安全的,但是访问你页面的机器人不会像用户那样创建会话吗?你如何创建会话?每次退出浏览器?当包含session_start的文件被提供时,PHP就会创建一个会话,不管它是提供给浏览器还是机器人。这就是服务器的执行。大多数CAPTCHA都在使用会话,我认为它们是安全的。我不认为安全的是使用普通的数字/文本作为CAPTCHA。在我看来,这些可以理解为孩子们在玩耍。我也有同样的问题,我的用户无法阅读代码,于是决定使用captha,reCAPTCHA代替难以阅读的代码。我的观点是,总是选择图像。我相信我可以让这个代码更难,包括字符,而不仅仅是数字。