易截截图软件、单文件、免安装、纯绿色、仅160KB

php字符串比较用==的一个教训

一直认为php中字字符串比较直接用==来判断还是很方便的,但今天遇到的一个问题,彻底让我明白了使用strcmp的必要性.这个问题很多老手都可能会忽略的.
今天在登录自己做的程序时,在输入验证码后,想直接按小键盘上回车登录(程序检查了回车事件),结果按回车按成了键盘上回车键旁边小数的那个键,验证码栏就多输入了一个点。由于点很小,我就没注意,再按了一次回车,居然验证码验证成功了。这不见鬼了吗?于是退出再试了一次,多输入一个点,居然的确可以验证通过。果然有问题!但多输2个点,则验证通不过了。
大汗之下,发现是验证用了==。难道字符串==会忽略最后的那个点?
于是做了个实验。
$aa = '3306.';//多个点
$b = '3306';
if($aa == $b) echo "相等哦";
果然得到的结果是相等。
用恒等 === 则 不会得到相等的结论.
用strcmp()也不会得到相等的结论.
于是立刻修正编码规范,禁止使用 == 作为字符串相等比较.改用strcmp();
至于为何 == 会忽略那个点.尚不得知.


相关文档:

PHP计算页面执行时间

run_time.php  Code:
<?php
class runtime
{
var $StartTime = 0;
var $StopTime = 0;
function get_microtime()
{
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
function start()
{
$this->StartTime = $this->get_microtime();
}
f ......

php的simpletest框架对uchome项目进行接口测试脚本

<?php
require_once ('unit_tester.php');
require_once ('reporter.php');
require_once ('../config.php');
require_once ('../source\modules\user\user_api.func.php');
require_once ('../source/base_model.class.php');
Class registertest extends UnitTestCase{
public function testAssertEqual(){
$b ......

重要的PHP超级全局变量总结




重要的PHP超级全局变量总结

2008-07-14 16:53:03
 标签:全局变量
   [推送到技术圈
]
        PHP有9个预定义变量数组,分别总结如下:
 
1、$_SERVER
       
$_SERVER超级全局变量包含由web服务器创建的信息 ......

PHP 实现查询结果动态组合输出

      数据库中查询到以下的结果:
     cname      linename    minute
     aa              c1      & ......

PHP中多维数组的排序

1.用户定义排序:usort($array, functionName);其中functionName为用户定义的函数名,用户定义的函数指定排序规则,比较数组中两个元素的大小,大于返回正数,小于返回负数,等于返回0。2.反向用户排序:用户定义函数时,比较数组中两个元素的大小,大于返回负数,小于返回正数,等于返回0。$fruits = array(array('APP', ' ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号