努力思考 + 实践, 眼高手低是不行的. 注册 | 登陆
浏览模式: 标准 | 列表全部文章

PHP防恶意用户输入

1. 过滤影响SQL正常运行的字符。

1) 过滤影响MySQL正常运行的字符。

当需要把用户输入的内容(有可能包含单引号、双引号 、反斜线、空字元 NUL )代入到mysql的语句 中执行时,应该把APACHE中的magic_quotes_gpc项设成On。

如果APACHE中的此项设成Off时,也可用php的函数addslashes()达到相同的目的,但这两种手段不能同时使用,否则会出现重复替换,出现错误。

样例:

PHP代码
  1. <?php      
  2. if (get_magic_quotes_gpc()) {   
  3.     $content=$_POST["content"];   
  4. else {   
  5.     $content=addslashes($_POST["content"]);   
  6. }   
  7. ?>  

当然,如果APACHE中的magic_quotes_gpc项为On,但有时又不想转义某项的特殊字符,可以使用stripslashes()去掉其中的 \

2) 过滤影响MSSQL正常运行的字符。

当需要把用户输入的内容(有可能包含单引号)代入到mssql的语句中执行时,应该把APACHE中的magic_quotes_sybase项设成On,此时magic_quotes_gpc项不再生效。

如果APACHE中的此项设成Off时,php中并没有合适的函数达到相同的目的,只能使用字符串替换函数来达到此目的。

样例:

PHP代码
  1. <?php   
  2. $content=str_replace("'","''"$_POST["content"]);   
  3. ?>   

现在10.218.17.53上的PHP既要访问mysql又要访问mssql,APACHE中的设置不能兼顾两种数据库,所以只对mysql做了相应设置。


2. 应对用户输入包含SQL语句的一个措施。

以下两种SQL写法都比较普遍,但安全程度是不同的,当用户提交的$id='1 and 1=2 union select ...'时第一种就会显示出不该显示的数据,而第二种就相对安全些。

SQL代码
  1. Select * FROM article Where articleid=$id   
  2. Select * FROM article Where articleid='$id'  

 

3. 防止用户输入的内容因包含html标签或javascript而影响页面的正常显示。

可以用htmlspecialchars()过滤其中的 & " < >

PHP代码
  1. $content=htmlspecialchars($content);  

4. 当页面要显示的内容包含回车换行时,可以使用nl2br()来达到页面上换行的效果。

Tags: php技巧, php, 安全

可爱的PHP

大小: 22.9 K
尺寸: 400 x 300
浏览: 103 次
点击打开新窗口浏览全图

Tags: php, 布偶

[转]平时积累的PHP技巧

平时积累的PHP技巧,与大家分享,可能有一些很基础,但每个人都有大脑短路的时候,常拿出来翻翻也没有坏处......
如果有什么错误 希望指出,或是跟贴分享自己积累的技巧

PHP代码
  1. public function GetIP(){
  2.     if (getenv("HTTP_CLIENT_IP")&& strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown")) {
  3.         $ip = getenv("HTTP_CLIENT_IP");   
  4.     }   
  5.     elseif (getenv("HTTP_X_FORWARDED_FOR")&& strcasecmp(getenv("HTTP_X_FORWARDED_FOR"),"unknown")) {
  6.         $ip = getenv("HTTP_X_FORWARDED_FOR");
  7.     }
  8.     elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
  9.         $ip = getenv("REMOTE_ADDR");
  10.     }
  11.     elseif (isset($_SERVER['REMOTE_ADDR'])&$_SERVER['REMOTE_ADDR']&strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
  12.         $ip = $_SERVER['REMOTE_ADDR'];
  13.     }
  14.     else
  15.         $ip = "unknown";
  16.     return($ip);
  17. }

2、跳转 <meta http-equiv='refresh' content='3; url =1.php'>

3、 /(^[0-9]|^[1-9][\d]{1,3})($|[\.][\d][1-9]$|[\.][1-9]$)/; 一个价格匹配的正则

4、js 取得 1-10的随机数 document.write(Math.floor(Math.random()*10+1)); //1-10随机数

5、mysql 取得随机记录 SELECT * FROM lzyblog_shop_category ORDER BY RAND() limit 5

6、js: onpropertychange当对象属性发生变化的时候触发事件

7、筛选出 年月出来的 SQL
SELECT regdate FROM `analyse_system` GROUP BY year( regdate ) + month( regdate ) ORDER BY `regdate` DESC
或是 SELECT regdate FROM `analyse_system` GROUP BY left(regdate,7) ORDER BY `regdate` DESC

8、strrev 字符串翻转

9、basename(__FILE__); 获得文件名称

10、implode(间隔符号,数组) explode(间隔符号,字符串)

11、加下划线的 CSS

<a href="#" style="text-decoration:none; border-bottom:#FF0000 1px dashed;">asdfasdf</a>

12、perl 的效率问题

1)处理文本文件,一般是逐行读入,在这样的循环里,绝不要使用外部shell命令,例如,假如要将分析内容写往其他文件,那么该老老实实的使用perl 自己的写文件句柄的方式,而不要使用shell的"echo $_ >;file"之类的命令,后者比前者慢10000倍。
2)在匹配正则表达式时,如果匹配里含有"&"字符,那么记得在前面加个"\"转义,否则perl会把匹配的内容复制一份以供以后参考,这导致程序其慢无比;
3)在匹配正则表达式时,尽量不要使用i选项(区分大小写),请将不区分大小写的区域尽量缩小,例如/ID=something\&/i,如果只对ID不分大小写的话,那么应该这么写:/[Ii][Dd]=something\&/,后者比前者快不止100倍;
4)在匹配正则表达式时,如果匹配项是固定不变的,那么请使用o选项,这表示只对正则表达式编译一次,例如/jsp/io比/jsp/i好很多。
5)while循环要比for/foreach循环效率高,
6)多用小括号,少用$&,$`,$'
7)多余多行匹配推荐用s/m修饰符,不推荐使用$*

13、linux修改时间
date -s 07/5/10 &&
date -s 09:28:00 &&
#clock -w

14、 checkdate 用 UNIX时间戳验证时间的正确性

15、cvs 的建立
环境设置:指定CVS库的路径CVSROOT

tcsh
setenv CVSROOT /path/to/cvsroot(指定CVS路径)
bash
CVSROOT=/path/to/cvsroot(指定CVS路径) ; export CVSROOT

初始化:CVS版本库的初始化。
cvs init

导入库
$ cd wdir(项目的目录)
$ cvs import -m "Imported sources" yoyodyne/rdir(期望在CVSROOT下的目录名) yoyo(作者) start
导入
$ cd ..
$ cvs checkout yoyodyne/rdir(项目名) # Explanation below

Tags: php技巧, php

IE无法正常显示PNG格式的图片

重新注册 pngfilt.dll

regsvr32 c:\windows\system32\pngfilt.dll

重启IE。

还是没有解决的话,替换c:\windows\system32\pngfilt.dll,再重新注册一下就OK了。

Tags: ie, png, 图片

[转] 不可多得的Javascript(AJAX)开发工具 - Aptana

自从开始做Web开发起,一直都没有找到一个很让人满意的Javascript开发工具。从Editplus、Dreamweaver到FrontPage、Visual Studio,没有一样是很称手的。你是不是还在为Visual Studio中的那一点点智能提示感到兴奋不已?的确VS比其他的好那么一点点,但是相对于VS中的C#、VB等来说对javascript的支持实在是太少了。

下面我要向你介绍一款非常优秀的Javascript(AJAX) 开发工具:Aptana。应为它实在太棒了,所以我忍不住想向你推荐它。

【详见全文】

» 阅读全文

Tags: ide, javascript, ajax, 开发工具, aptana

[PEA福州] Zifa FormValid 0.5 更新[无js实现表单验证]

完全通过html不需要写JS验证程序就可以实现表单验证功能,可支持一个表单元件多条件验证, 同一页面多表单可同时使用,和服务端程序无关系,完全客户端方式。

更新情况:

http://www.coderhome.net/zifa/?p=71

详细:
http://bbs.coderhome.net/thread-4847-1-1.html

DEMO:
http://coderhome.net/demo/FormValid/

Tags: 框架, javascript

前途未卜《我们这一代》

大小: 45.63 K
尺寸: 300 x 225
浏览: 37 次
点击打开新窗口浏览全图

引:

当我们读小学的时候,读大学不要钱
当我们读大学的时候,读小学不要钱
当我们不能挣钱的时候,房子是分配的
当我们能挣钱的时候,却发现房子已经买不起了
当我们不到结婚的年龄的时候
骑单车就能娶媳妇
当我们到了结婚年龄的时候
没有洋房汽车娶不了媳妇
当我们还没开始关注炒股的时候,炒股的人都能赚钱翻番
当我们开始尝试去炒股的时候,股灾接二连三


早些时候在某个群看到此文时,心里那个翻腾蹈海。
想想目前我们还停留在那行刺眼的断点上,以后还有那么多富有时代特征的“曲折”要走,不禁哀叹:“我们生的还真不是时候!”。

今天到小东的Blog(在读高一,擅长FLASH编程、设计,在闪客圈小有名气)上逛了一圈,发现此文。顿感阵阵苦楚。
想当年我们面对如此枯燥无味的数学的时候,容易躁动的我选择了抗拒,以致现在后悔不已,每到期末考都胆战心惊,生怕过不了挂在那,到大学更是这样,由此心里结下了疙瘩,每每想起都很不舒服。
(明天就开考了...

发现我们之前都在做所谓“素质教育”的小白鼠,试验过来试验过去,到最后我们不还是被压在沉重的书包下喘不过气?我都不知道自己从中得到了啥。现在“素质教育”貌似象样了点,起码学的东西能在实际中得到运用、锻炼,相对来说不那么枯燥无味了,学习也带劲了。

看来偶们这些老一代要更努力些才能在社会上找到一个角落容身。加油了!

[图片来源:浮云不寂寞]

Tags: 牢骚

Prototype 入门

相关站点:http://www.prototypejs.org/

Prototype 是由 Sam Stephenson 开发的一个 Javascript 类库,也是其他框架的鼻祖。其对现有的部分 Javascript 对象比如 Object 、 Function 、 Dom 、 String 等进行扩展,并且对 Ajax 应用进行封装,借此提供了兼容标准的更加易于使用的类库,极大的方便开发人员快速创建具备高度交互性的 Web2.0 胖客户端应用程序。

Prototype 最初的目标是应用于 Ruby 领域的,不过由于优秀的表现和完美的封装以及服务器语言无关性,现在已经被应用到各个领域,包括 Java 、 .NET 、 PHP 等。不过在 Prototype 的源码中,还是可以找到 Ruby 的影子,比如 Ruby 样式的 Array 对象枚举。

正如之前提到的, Prototype 是一个底层的远程调用包,虽然其仅仅是一个千余行的 Javascript 文件,但是它为其他框架提供了最底层的 Javascript 扩展和 Ajax 封装。其他 Javascript 程序库在其基础上构建了更加高级的功能和 UI 效果,比如 Script.aculo.us 。

Prototype 目前的最新版本是1.5 ,其官方网站提供了最新版本的下载,包括 zip 包、 js 文件和 Subvision 源码。不过和其他版本一样, Prototype 官方网站并未提供完整的参考文档,开发者只能通过阅读源码掌握其功能。可喜的是,网上已经流传着不少关于 Prototype 源码解读和使用的文档,这在一定程度上弥补了 Prototype 官方文档不足的遗憾。

【详见全文】

» 阅读全文

Tags: 框架, javascript, 入门