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

comparing strings in PHP with the == operator

最近在Greg Beaver's的blog上发表的一篇新文章 comparing strings in PHP with the == operator 中提及了PHP的 == 运算符在对字符串进行比较时值得注意的问题。
在某些情况下,PHP会把类数值数据(如含有数字的字符串等)转换成数值处理,== 运算符就是其中之一。在使用 == 运算符对两个字符串进行松散比较时,PHP会把类数值的字符串转换为数值进行比较,下面的实验证实了这个结论:
<?php
var_dump('01' == 1);
?>
以上代码输出结果为:
bool(true)
  所以,在使用对字符串进行比较时,建议使用 === 运算符对字符串进行严格的检查,或使用strcmp()等函数,从而避免可能产生的问题。PHP手册中的《PHP 类型比较表》对此也有详细说明。
  除此之外,常用的in_array()函数也存在弱类型的问题,见如下代码:
<?php
var_dump(in_array('01', array('1')));
?>
以上代码输出结果为:
bool(true)
  相信用过该函数进行安全性检查的PHP编程人员都知道这会产生怎么样的安全问题了吧?幸好in_array()函数为我们提供了第三个参数,把它设为 true 就可以打开in_array()函数的强制类型检查机制,如下代码所示:
<?php
var_dump(in_array('01', array('1'), true));
?>
输出结果为:
bool(false)
  由于PHP是一种弱类型的语言,也就是说数据类型这个概念在PHP中被弱化。因而如果在编程时过分忽略数据类型(也是大部份PHP程序员的通病),会产生一些问题,甚至导致安全漏洞。最后,还是那句说得很烦很烦的话,对外来数据进行严格检查和过滤。
ps:超过16位长度的字符串 用==比较 只要之前的16位相等 之后的数不相等 也会返回TRUE
so找到


相关文档:

php学习笔记(8):PHP函数和自定义函数


1、PHP函数介绍
PHP函数分为:系统内部函数 和 自定义函数 
格式:Function($a1,$s2....){};
例子:date("Y-m-d");
          Md5("CHAUVET");
函数的优越性:
A)控制程序设计的复杂性
B)提高软件的可靠性
C)提高软件开发效率
D)提高软件的可 ......

PEAR简介:用PEAR来写你的下一个php程序


PEAR简介:用PEAR来写你的下一个php程序
 
文档选项
打印本页
将此页作为电子邮件发送
级别: 初级
潘凡(Night Sailer) (nightsailer@hotmail.com), 工程师, 北京赛迪数据有限公司
2001 年 6 月 01 日
你可能已经是个PHP的老手了,写了很多非常棒的代码。但是,如果你现在要把它们加入到你现在的项目中去,是 ......

php学习笔记(10):MYSQL数据库中的常用SQL语句

MYSQL数据库中的常用SQL语句
1、SELECT 查询语句和条件语句
SELECT  查询字段 from 表名 WHERE 条件 
查询字段:可以使用通配符* 、字段名、字段别名
表名: 数据库.表名 ,表名
常用条件: = 等于 、<>不等于、in 包含 、&nb ......

模板引擎 PHP模板引擎【smarty】

[Smarty - 官方网站]
http://smarty.php.net/
[Smarty - 下载地址]
当前版本 2.6.18, http://smarty.php.net/do_download.php?download_file=Smarty-2.6.18.tar.gz

全部列表, http://smarty.php.net/download.php

[Smarty - 相关论坛]
http://php.board.newsmth.net/
http://forum.c ......

[转]用php_screw加密PHP代码

开始之前,首先要澄清两个问题:第一,支持开源,不等于反对代码加密;第二,如果把不属于自己的东西(比如公司的)拿去开源,就更加不应该了。
以前知道的,PHP代码的加密都是用Zend的encoder,这东西不但是商业软件,好像还暴出过能够被破解的问题,所以就找到了替代的方案────php_screw,一个日本人开发的东东。
p ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号