php当前时间怎么算,如何使用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如何自学?
PHP自从我工作已经用了10年了,我简单说一下我的学习路线和。
在上大学的时候,我就自学了PHP,当时PHP4还占市场一大部分。那怎么自学才好呢?我建议首先要熟悉计算机的基础知识,尤其是网络方面的,PHP主要用来开发网页,所以在学 PHP 的同时,也要看一下网页开发,例如前端语言 HTML + CSS + JavaScript。
然后是PHP的一些基础语法,内置函数。最好挑选一本入门的书,书上的例子最好亲自抄一遍,自己运行。记住这个非常重要,我当时只是看,后来导致能看懂,不会写,汗。
基础的学的差不多以后,下面就要看一些数据库 MySQL 和服务器 Linux 的内容,了解基本的增删改查的操作和服务器的配置,学会使用命令行。可以在自己的电脑上装一个虚拟机练练手。
这些都了解的差不多后,建议阅读一些开源程序的源代码,看看人家是怎么编程的,这会让你收获很大。
最后,记住,最最重要的是,一定要亲自写,多练,多拿一些小项目练练手,实践与知识结合,这样才能融会贯通。
学习难度java大于php吗?
简单从语言复杂角度上来说,java的学习难度确实要大于PHP。虽然都是面向对象,语法上虽然有些许的雷同,但从安全角度上来说java的强类型要优于PHP的弱类型。学习起来稍微废一些力气。
笔者从事软件开发行业10年有余了。由于工作需要,用过各种杂七杂八的编程语言,可以说是一个”杂家”,做完项目,刚接触到皮毛,马上有得去学习新语言,应对新的项目。现在能想起来自己用到项目上的语言大约有不下10中:汇编,C++,
VB.NET
,C#,java,PHP,Perl,Ruby,vbscript, javascript...我想题主既然问这个问题,那就是有学习这两个其中之一的打算。下面就我肚子里的这点皮毛为基础,提些见意,希望能帮到你。
纯粹想学一门编程语言的话,选javaJava把面向对象理念体现的淋漓尽致,学习java之后,既可以掌握一门语言,也可以同时很自然而然的形成面向对象思想。
特别是在校学生,还有对IT有浓厚兴趣的其他行业的人,学习java是入门的不二选择。
但是,学习java的难度要大很多,得保证有足够得时间来学习。
如果想快速进入IT行业就职,选PHPPHP和JAVA这两中经常听到得编程语言,用到的行业和场景也完全不同。PHP擅长快速敏捷开发一个网站,比较严谨的java经常被用于大型金融系统,保险业务。
PHP是一种脚本语言,无需编译。轻量级网站,销售系统,公司主页之类的开发到发布维护,完全可以由一个开发者来搞定。人力成本低,快速开发是PHP流行的原因。
如果是前端,想转全栈的话,选PHP就像前面讲到的,java一般用于开发大型系统,只注重安全和功能,一般不需要特殊的设计。对于前端攻城狮来讲,快速掌握PHP之后,就可以挂上全栈头衔。
如果想自己接私活单干的话,选PHP还是那句话,适合java的大型系统开发,一般需要一个团队集中协调开发。想拿这种项目自己来做,不太现实。PHP的话一般都是小型网站,在线商城,CMS之类的居多,掌握之后一般可以一个人负责开发,发布,维护等一系列工作。可以到猪八戒之类的私活网站上事先调查一下。看看是不是PHP的项目要比java多。
无论学哪种语言,需要先问一下自己的目的是什么。其实学那种都没问题,只要能解决你眼前的问题。语言只是一种工具,码code多了就会发现,不管用什么语言,能解决问题目前问题才就是王道。
php中怎么让程序一直运行下去?
public static void main(String[] args) { long begain = System.currentTimeMillis();//开始系统时间 try { Thread.sleep(100); } catch (Exception e) { e.printStackTrace(); } long CheckTime = System.currentTimeMillis(); //判断时间 while(true){ System.out.println(CheckTime-begain); try { Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } CheckTime = System.currentTimeMillis(); if((CheckTime-begain)>=(30*1000)){//判断时候到30秒 System.out.println("30秒后结束"); break; } } }给你的答案希望你能满意
学习Nodejs时需要学习什么?
第一步
对于刚接触Node.js的新手来说,第一步无非是打好基础,你需要弄明白以下事情:
JavaScript 的特性和语法。假如你对 JavaScript 还不熟悉的话,推荐书籍及链接:JavaScript 推荐书籍列表深入理解JavaScript系列Node.js 是什么?Node.js与JavaScript的区别是什么?Node.js的优点?Node.js的缺点?Node.js适用场景?Node.js不适用的场景?Node.js的基本语法。Node.js的特性:单线程异步 IO事件驱动npm 是什么?npm的基本使用REPL等等其实上面的内容,大部分Node.js的书籍都有介绍。基本了解了Node.js后,我们可以写一些 hello world 的程序:
搭建一个 HTTP 服务器,返回 hello, world 。(使用 HTTP 模块)读取一个 txt 文件,将内容显示到命令行中。(使用 fs 模块)等等第二步
你也许想,Node.js 只有那些少得可怜的核心模块能做什么呢?别担心,npm 上目前有近 7W 的第三方模块,月下载量高达 2.1亿 (2014—4—20 数据)… 这才是 Node.js 的活力所在。当你对Node.js已经了解的差不多了,并且按耐不住跃跃欲试了。这个时候,我们不妨用 Node.js 的第三方模块做些好玩的事情:
搭建一个微博网站搭建一个博客网站搭建一个在线聊天室写一个简单的爬虫调用一些网站的API做一些好玩的东西等等但是,并不是说 Node.js 只能做以上事情,几乎其他语言能做的事情 Node.js 都能做,而且有些情况下能做的更好。
第三步
当然,就像学 js 也不能只会用框架一样,学习 Node.js 也不能只会用外部模块。这个时候,我们需要回头深入了解下 Node.js 核心模块的用法。说白了,就是好好看 Node.js 官方 API 文档。看文档是码农必备技能,英语不好的童鞋浏览器装个划词翻译的插件。
第四步
多实践。不管是用核心模块还是外部模块,尝试用 Node.js 解决某个问题或者替换掉以前用其他语言写过的代码。读源码。这里说的读源码并不是说上来就去读 Node 或者其他较大的框架的源码。这个时候,挑一些简单的只实现某个特定功能的工具模块的源码读,这种模块的代码通常在几百行,阅读起来并不是很困难,但是却能涨不少的姿势。比如:underscore (学习 JavaScript 的语法和技巧)等等第五步
坚持第四步。在使用 Node.js 时发现没有合适的模块选择或者选择的模块功能不尽人意,这个时候你可以尝试去创建一个模块或者修改现有的模块,并且使用 npm 发布自己的模块或者去该模块的 GitHub 上提 PR 。
第六步
多实践。这个就不用解释了读 Node 源码及较大的框架的源码。提高必备多关注下 GitHub 上的牛人重复第1-6步PS:贯穿始终的是买几本 Node.js 的书读,推荐《深入浅出Node.js》。