这篇文章主要介绍了PHP中“==”的案例分析,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
创新互联建站公司2013年成立,先为泰山等服务建站,泰山等地企业,进行企业商务咨询服务。为泰山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。首先,看一下这段代码。猜猜看结果会是什么
<?php var_dump(md5('240610708') == md5('QNKCDZO')); var_dump(md5('aabg7XSs') == md5('aabC9RqS')); var_dump(sha1('aaroZmOk') == sha1('aaK1STfY')); var_dump(sha1('aaO8zKZF') == sha1('aa3OFF9m')); var_dump('0010e2' == '1e3'); var_dump('0x1234Ab' == '1193131'); var_dump('0xABCdef' == ' 0xABCdef'); var_dump(0 == 'abcdefg'); var_dump(1 == '1abcdef'); ?>
一眼看过,很明显肯定都是false吧,但运行代码后发现全是true!
WTF!
为什么会这样?
开头我已经说过了,PHP 是弱类型的语言。使用==对比两个变量时,当有一个变量为整数,另外一个变量也会转换为整数。这也就解释了,为什么0 == 'abcdefg'和1 == '1abcdef'会成立。
但是,其他的代码呢?字符串难道还会转换?
PHP 手册上为我们提供了解释说明。
If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically.
也就是说,如果你比较的两个字符串涉及到数字(如:"0"),那么每个字符串都会转换成数字。
在这里,我不得不说:PHP是最好的语言!
危害
当我们的网站是直接MD5或Sha1加密而没有加盐,碰巧某用户密码加密涉及到数字,那么就有可能被碰撞破解!
解决
1.在开发过程中尽可能避免使用==判断两个变量的值
2.密码加密最好使用password_hash()或者加盐md5($pwd.$salt)
感谢你能够认真阅读完这篇文章,希望小编分享PHP中“==”的案例分析内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!
本文名称:PHP中“==”的案例分析-创新互联
当前网址:https://www.cdcxhl.com/article4/hgjie.html
成都网站建设公司_创新互联,为您提供品牌网站建设、电子商务、标签优化、网站导航、软件开发、网站制作
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联