手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2009年11月的文章

php中addslashes() ,mysql_real_escape_string() 和mysql_escape_string() 的区别

以前还真没有关注过这面的事情。自己在写的时候都是用了一个很简单的函数

PHP代码
  1. <?php  
  2. function escape($str){  
  3.     if(function_exists('mysql_escape_string')){  
  4.          return mysql_escape_string($str);  
  5.     }elseif( function_exists(...real_escape...)){  
  6.        //real_escape  
  7.     }else{  
  8.         if(MAGIC_QUOTER ....判断){  
  9.              return $str  
  10.         }else{  
  11.             return addslashes($str);  
  12.         }  
  13.     }  
  14. }  

但是这篇文章却告诉我,原来这三个函数的功能各有不同,前两个我当然知道,但如果没有加载mysql库,这两个功能是都用不上的,当然,现在有PDO的prepare然后setParam当然是很方便,mysqli函数也有这种功能。如果没有呢?怎么办?下面这篇文章告诉你上面三个函数的区别
来源:http://www.akii.org/2009-08/php-in-the-addslashes-mysql_real_escape_string-and-mysql_escape_string-the-difference-between/

SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除。

为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全上的初步处理,也即Magic Quotes。(php.ini magic_quotes_gpc)。如果magic_quotes_gpc选项启用,那么输入的字符串中的单引号,双引号和其它一些字符前将会被自动加 上反斜杠\。

但Magic Quotes并不是一个很通用的解决方案,没能屏蔽所有有潜在危险的字符,并且在许多服务器上Magic Quotes并没有被启用。所以,我们还需要使用其它多种方法来防止SQL注入。

许多数据库本身就提供这种输入数据处理功能。例如PHP的MySQL操作函数中有addslashes()、 mysql_real_escape_string()、mysql_escape_string()等函数,可将特殊字符和可能引起数据库操作出错的字 符转义。那么这三个功能函数之间有什么却别呢?下面我们就来详细讲述下。

虽然国内很多PHP程序员仍在依靠addslashes防止SQL注入,还是建议大家加强中文防止SQL注入的检查。addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会 被看作是单引号,所以addslashes无法成功拦截。

当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧。

另外对于php手册中get_magic_quotes_gpc的举例:
if (!get_magic_quotes_gpc()) {
$lastname = addslashes($_POST[‘lastname’]);
} else {
$lastname = $_POST[‘lastname’];
}
最好对magic_quotes_gpc已经开放的情况下,还是对$_POST[’lastname’]进行检查一下。

再说下mysql_real_escape_string和mysql_escape_string这2个函数的区别:
mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ,两者的区别是:mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。

总结一下:

* addslashes() 是强行加\;
* mysql_real_escape_string()  会判断字符集,但是对PHP版本有要求;
* mysql_escape_string不考虑连接的当前字符集。

Tags: mysql, addslashes

有趣的输入法【搜狗云输入法】

凡事和云搭上边,也许都会吸引人的眼球吧?
不过在试用了一下这个输入法后,感觉还是挺新颖的。。
以前所谓的在线输入法,都是一个输入框,你输完后,ctrl+c,ctrl+v的转来转去的,如今,搜狗却不太一样

搜狗这么做

1、右键点击下面的按钮【也就是云输入法的图标,这里不作提供】,选择右键菜单中的“添加到收藏夹…

    提示:已经在IE、搜狗浏览器、世界之窗,Firefox等浏览器下测试通过,部分浏览器在操作中可能给出不安全的警告,请点击允许通过。

2、浏览其他页面时,点击浏览器收藏栏中的“启用搜狗云输入法”,页面左上角浮出云输入法的状态栏(如下图示),即可在该页面使用云输入法输入了!

     提示:使用搜狗云输入法时需要保持客户端输入法在英文键盘状态

看到上面的提示是不是很激动 ?当初我也是很激动,就跑到http://pinyin.sogou.com/cloud/进行了试用,最起码,我在windows下的firefox浏览器上测试成功了,其他浏览器没有测试。

搜狗认为自己的这个产品,即搜狗云输入法是作为搜狗输入法的创新实验室,将持续探索创新的输入模式,并将创新成果移植进入搜狗拼音输入法,提升两亿多的搜狗用户的输入体验的一个概念产品。想来,效率还是有待改进的。毕竟每次输入都需要向搜狗服务器发出请求来获取词组啥的。。。【这东西,估计在网吧会比较多一点,跑到一台机器上没有自己用的输入法,想下载又没权限,它的功能就大了】

其他情况下,我想不出还有什么意思?

Tags: 搜狗, 输入法

几行代码实现文件打包下载

短短几行代码实现文件打包下载。。。

PHP代码
  1. /** 
  2.  * 没有写成class 或者 function ,需要的朋友自己写,就这么几行。。 
  3.  */  
  4. $filename = "./test/test.zip"//最终生成的文件名(含路径)  
  5. if(!file_exists($filename)){  
  6.     //重新生成文件  
  7.     $zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释  
  8.     if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {  
  9.         exit('无法打开文件,或者文件创建失败');  
  10.     }  
  11.     foreach$datalist as $val){  
  12.         $attachfile = $attachmentDir . $val['filepath'];    //获取原始文件路径  
  13.         if(file_exists($attachfile)){  
  14.             $zip->addFile( $attachfile , basename($attachfile));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下  
  15.         }  
  16.     }  
  17.     $zip->close();//关闭  
  18. }  
  19. if( !file_exists($filename)){  
  20.     exit("无法找到文件"); //即使创建,仍有可能失败。。。。  
  21. }  
  22. header("Cache-Control: public");   
  23. header("Content-Description: File Transfer");   
  24. header('Content-disposition: attachment; filename='.basename($filename)); //文件名  
  25. header("Content-Type: application/zip"); //zip格式的  
  26. header("Content-Transfer-Encoding: binary");    //告诉浏览器,这是二进制文件   
  27. header('Content-Length: 'filesize($filename));    //告诉浏览器,文件大小  
  28. @readfile($filename);         

Tags: php, 文件下载, zip压缩

关注张宴:利用开源的Gearman框架构建分布式图片处理平台

关注一下张宴的这篇【利用开源的Gearman框架构建分布式图片处理平台】,网址为:http://blog.s135.com/dips/

正如张宴一开始说的:
大小: 46.72 K
尺寸: 294 x 325
浏览: 1408 次
点击打开新窗口浏览全图

如何把这些闲置资源利用起来才是真的。之所以不转载,是因为,我目前还遇不到这类事情,但了解一下总是好的。。。
顺便转载了PPT和一些软件的安装
ksg_xoyo_dips.pdf



附1:Gearman分布式计算框架网址
http://gearman.org/

附2:PHP客户端Gearman扩展安装:

wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gz
tar zxvf libevent-1.4.12-stable.tar.gz
cd libevent-1.4.12-stable/
./configure --prefix=/usr
make && make install
/sbin/ldconfig
cd ../

wget http://launchpad.net/gearmand/trunk/0.9/+download/gearmand-0.9.tar.gz
tar zxvf gearmand-0.9.tar.gz
cd gearmand-0.9/
./configure
make
make install
/sbin/ldconfig
cd ../

wget http://pecl.php.net/get/gearman-0.5.0.tgz
tar zxvf gearman-0.5.0.tgz
cd gearman-0.5.0
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-gearman
make
make install
cd ../



php.ini文件中增加:

extension = "gearman.so"


附3:Gearman调度器安装(JOB Server):

wget http://launchpad.net/gearmand/trunk/0.9/+download/gearmand-0.9.tar.gz
tar zxvf gearmand-0.9.tar.gz
cd gearmand-0.9/
./configure
make
make install
/sbin/ldconfig
cd ../



以守护进程启动:

gearmand -L 192.168.0.1 -p 4730  -u root -d

Tags: 分布式, php处理图片

Karl Swedberg 谈 jQuery

新闻来源:Think Vitamin,http://www.cnbeta.com/articles/96791.htm
这是 Think Vitamin 网站对 Learning jQuery 作者 Karl Swedberg 的一次简短访谈。Karl Swedberg 是 JavaScript 和 jQuery 技术专家,撰写了大量相关文章,并在各种 Web 开发设计大会上有与 jQuery 相关的讲座。 对那些可能还没听说过 jQuery 的设计师来说,什么是 jQuery

jQuery 是一种让开发和设计者在他们的网页中添加交互内容的工具,它的核心命令让你在网页中定位或创建对象并对之进行操作,它事实上是一种更容易使用的 JavaScript,可以不必强迫页面刷新而对页面进行各种操作。

在你看来,为什么 jQuery 对 Web 设计师有用?

JavaScript 为设计拓宽了视野,而 jQuery 让这一切变得更简单。对那些通晓 CSS 的设计师来说,编写 jQuery 代码很类似,而对于那些拥有 Flash 经验的设计师来说,jQuery 是一种标准化的,开放的技术,它可以实现类似 Flash 的交互效果。

你将在 The Future of Web Deisgn New York 大会上做 jQuery 讲座,大体内容是什么?

我将对 jQuery 库做一简介,接下来会通过一些实践一步一步讲解如何在站点中提升用户体验,我将演示一些技术,看看 jQuery 如何弥补 CSS 或某些浏览器的 CSS 处理的不足。我将讲解如何善用动画,如何防止滥用。最后将演示一些有趣的插件。

jQuery 有不少实用插件,哪一些是设计师不可或缺的?

这要看网站,或者说客户的需求。我自己常用的一个插件是 Mike Alsup 设计的 Cycle Plugin,这是一个轮番播放图片的饰件,拥有很漂亮的过度效果,这个插件并不限于播放图片,还可以播放任何内容,它确实很不错,在那么小的空间可以放那么多内容。

最近我还对 jQuery UI 插件颇感兴趣,这套插件使富用户体验,如拖放操作,变得很简单,它包含的部件都很棒,我已经开始使用其中的对话框,Tab 以及日期选择器等。

在你看来,Web 设计的未来是什么?

在预测任何未来技术方面我完全象个傻瓜。在某些方面,如果我们无法摆脱那些旧浏览器的话,事情可能没多少改变,不过,即使现在,在那些更好的浏览器身上,我们也已经看到一些令人振奋的东西,我期待看到一些全新的东西。

Webkit 引擎开发团队已经做在 CSS 动画方面做了很多工作,他们甚至将触角伸向图形硬件来实现炫目的视觉效果。Firefox, Safari, and Chrome 正在 JavaScript 引擎方面你追我赶,而众多 JavaScript 库也在性能上大幅提升。我们会开到越来越多的 HTML 5 元素的使用,如 Canvas, 音频,视频。Web 字体方面也将更加完善,不管从技术方面还是版权方面。可以肯定的是,未来的 Web 会让人惊异。

本文来源:http://carsonified.com/blog/dev/jquery/karl-swedberg-on-jquery/
中文翻译来源:COMSHARP CMS 企业网站内容管理系统官方站

看到这些新闻,你还有什么好犹豫的?国内除了blueidea外,还有51js网站,当然还有一个博客也一直关注着jQuery那就是cssrain.cn,黑黑,我的博客也略有关注。但仅限于使用。。。

Records:45123456789