首页 开发编程 正文

php怎么发验证码

就会产生很多垃圾数据.PHP默认是一个SESSION对应一个磁盘文件.Ubuntu/Debian上apt安装的PHP会带有一个定时任务/etc/cron.d/php5来清理会话文件.即使用Redis存储PHPSESSION,...

php怎么发验证码,如何自动检测session过期?

个人认为,能不用session,尽量不用SESSION吧,因为SESSION有单机的问题,不适合集群,而且SESSION的回收清理也不太方便,很容易受到攻击,比如说用SESSION记录验证码,如果有人CC攻击验证码,就会产生很多垃圾数据.PHP默认是一个SESSION对应一个磁盘文件.Ubuntu/Debian上apt安装的PHP会带有一个定时任务/etc/cron.d/php5来清理会话文件.即使用Redis存储PHP SESSION,并设置了过期时间,也只能依赖Redis周期性随机检测这种被动的过期机制来清除会话记录(有残余).

Memcached作者说过,Memcached不适合存SESSION,因为Memcached默认的LRU清理机制会在内存不足时清理掉一些记录,可能会导致用户无缘无故地掉线.Redis默认设置是noeviction(不收回),内存不够直接报错.

如何写一份受程序员青睐的登录注册需求说明?

1.简要说明产品的使用价值

我是谁(一两句话写清楚产品的身份)?

我有什么用(我是做什么的,我能提供什么服务等)?

为什么选择我们(与竞争对手相比,我们产品的优势,核心竞争力是什么)?

2.目标用户、使用场景

产品的主要用户群是谁?

用户主要在什么场景下使用我们的产品。

3.每次的大版本开发,最好对应有一个排期表(与开发沟通确认时间的安排),开发过程中,根据进度情况,适当调整时间安排。

4.当你做的产品是从0到1时,为了让数据库的开发人员更快速的了解你的产品,实体关系图(E-R图)将会发挥很大作用,数据库的开发人员可以参考此图来做数据表结构的设计(具体这里就不说了,可以网上详细了解E-R)。

5.通过业务流程图,可以在大方向上知道产品的整体逻辑,业务流程图拆解可以得到任务流程图,任务流程图拆解可以得到页面流程图。

6.一些通用的控件、状态等,不需要每次都说明,比如空数据、网络异常、加载失败、刷新状态等等,只需说明一次即可。

7.很多人在写功能说明、交互说明时,总是会遗漏一些细节,逻辑不严谨。从以下几个维度去说明,将会让你考虑的更加全面:

字段、字段说明、数据来源

前置条件、排序机制、刷新机制

状态流转(一个页面可能有多个状态,需要说明)

交互操作(正常操作、异常操作)

8.性能需求

请求数据的响应时间要求、并发数要求等。

9.兼容性需求

系统版本的支持、多终端的支持、浏览器的支持等。

手机号被标记为快递送餐?

根据调查,市面上至少有30多款手机软件提供了电话号码标记服务,可能由于某种原因,我们的手机号码被标记成了快递、送餐、营销等号码,被亲朋好友认为是骚扰电话,而拒绝接听,给生活造成了影响。我们又不可能轻易更换号码,那么怎么取消呢?下文具体说一说。

1、为什么会打上“标签”?

首先,我们要知道号码是如何被打上“标签”的。我们使用的手机后台运行了一些程序,比如各种手机管家、手机卫士、号码助手等等,都在暗中监视我们的手机来电信息,当手机接到电话时,这些后台程序会获取手机号码,与在“云端”的数据比对,查询这个号码是否被标记,并且显示在屏幕上。

2、如何取消标记?

如果自己的号码被错误的打上标记,就需要取消。因此,有很多公司做起了“取消号码标记”的生意,引导用户支付几十元就可以取消标记,需要提醒的是,这些平台可能根本无法帮助用户消除号码标记。

目前,标记号码的主流平台有以下几个:

腾讯手机管家号码公众平台

百度号码认证平台

360号码申诉平台

搜狗号码通申诉平台

触宝电话号码申述平台

114百事通号码申诉平台

取消“标记”申诉流程

这里以百度号码认证平台为例,其它平台类似。

step1:打开百度号码认证平台官网,点击顶部的【号码查询】功能,如下图所示▼;

step2:在【号码查询】的页面,输入要查询的号码和验证码,如下图所示▼;

step3:如果号码被标记,如下图所示▼,被标记成某某公司号码,点击【企业号码申诉/个人号码申诉】的链接;

step4:在【个人号码申诉】的界面,填写相应的表单信息,点击【提交按钮】,如下图所示▼;

以上就是手机号码为什么被标记,以及如何取消标记的方式,首先需要查询自己的号码是被哪个平台标记的,然后到相应的平台申诉取消标记就可以了。

如何使用PHP生成随机字符串?

引言

我们经常可能会用到邀请码,邮件验证码,或者需要使用unique 字符串标记用户属性的情况。

今天我们且不说高深的“全局唯一ID”的生成方案,我们说一个简单的,如何生成一个唯一的,随机的,数组字母组成的字符串。

学习时间

PHP 有一个内置函数 uniqid,用于生成一个唯一的ID。该函数结构形式:

string uniqid([ string $prefix = ""[, bool $more_entropy = false]] )

用于获取一个带前缀、基于当前时间微秒数的唯一ID。

但是该方法所生成的ID并不是安全的,且依赖于本机的时间戳,有可能在同一微秒生成同一ID。所以安全起见,需要添加上 prefix 参数,以示区别。

more_entropy 参数使生成的ID更具有唯一性,如果设置为 TRUE,uniqid() 会在返回的字符串结尾增加额外的煽(使用combined linear congruential generator)。

这就够了吗?这当然不是最优的解决方法。我们尝试其他解决方案。使用 openssl 带来的加密性和唯一性。

bin2hex(openssl_random_pseudo_bytes($bytes))

使用 openssl_random_pseudo_bytes 函数生成一个伪随机字符串的字节,然后使用 bin2hex 将其格式化为十六进制的字符串。

生成的伪随机字节,其字节数由length参数确定。还指示是否使用了加密功能强的算法来生成伪随机字节,并通过可选的crypto_strongparameter来执行此操作。 此种方法返回的参数,很少情况下会出现false。

美中不足的是,这样生成的数字字符串,只在[0-9][a-z]之间,不够广泛。我们尝试加固这个生成方法,增强其鲁棒性。

上述函数会生成一个区间位于 [$min, $max] 的随机数字。然后调用该函数生成指定长度的字符串。

函数 crypto_rand_secure 函数的实现方法,在PHP标准函数中,可以使用 rand / mt_rand 函数替代。

在PHP 7 中,系统提供了更好的函数,可以替代 crypto_rand_secure 使用,就是 random_bytes 和 random_int。使用内置函数,我们将 getToken 函数改造如下:

当然少不了的测试结果,我们批量生成一些 32 位长度的字符串。

写在最后

本文深入探讨了生成随机数字,进而生成指定长度的字符串,实现函数并进行了测试。大家可以在机器环境进行测试。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

PHP如何避免表单的重复提交?

1. 使用JS让按钮在点击一次后禁用(disable)。采用这种方法可以防止多次点击的发生,实现方式较简单。缺点是若客户端禁止JavaScript脚本,则失效。

2. 在提交成功后执行页面重定向(redirect)。转到提交成功信息页面。特点:避免F5重复提交,消除浏览器前进和后退按钮可导致的同样问题。

3. 表单隐藏域中存放session(表单被请求时生成的标记)。采用此方法在接收表单数据后,检查此标志值是否存在,先进行删除,然后处理数据; 若不存在,说明已提交过,忽略本次提交。

4. 数据库唯一索引约束(最有效的防止重复数据的方法)。

5. 使用验证码

本文转载自互联网,如有侵权,联系删除