做为一个合格的web开发人员,一定会牢记一个原则——永远不能相信用户输入的数据,行走江湖,安全第一是很重要的。用户通过表单或url传过来的数据,一定要仔细检查过了,才往后台数据库里存进去。在一个成熟的开发团队里,贯彻这个原则不成问题;但是如果在一个新人老手混搭的小team里,很容易就忽视了这个问题,那么各种安全漏洞比如跨站攻击,sql注入等等真是防不胜防。

实际上,用php 5自带的filter扩展能够较好的解决这个问题。我在从前的blog里记录了filter扩展的常规用法——直接利用filter来校验数据,这样有不少额外的代码量,所以我得介绍一个比较偷懒的办法——自动对所有输入变量进行过滤,这只需要对php.ini增加一行配置,然后重启apache或fastcgi让php配置生效。

filter.default=”special_chars”

开启了这项配置后,会自动使用filter_input方法对$_GET, $_POST, $_COOKIE, $_REQUEST以及$_SERVER变量进行过滤转义。配置中special_chars是常量FILTER_SANITIZE_SPECIAL_CHARS的缩写,它能自动转义大部分危险字符例如: '"<>。而php手册对它的解释是:

HTML-escape ‘”<>& and characters with ASCII value less than 32, optionally strip or encode other special characters.

在这个情况下,新人们写出这样的代码我也不会太担心:

$foo = $_GET['foo'];
echo $foo;
在部分场合,我们可能还是需要未转义的变量,比如某个ajax接受的参数是一段json串,用这段代码即可获得原始数据:

$foo = filter_input (INPUT_GET, 'foo',  FILTER_UNSAFE_RAW);
fitler扩展与yahoo使用的yiv如出一辙,印象里似乎就是yahoo对yiv做了些修改贡献给php社区,但是暂时没找到出处。

来自:http://www.ooso.net/archives/559
安装:http://blog.suchasplus.com/2008/11/centos-rhel-install-php-5-filter-and-json-extension-howto-chinese.html



【社区开学季】360提供的Php防注入代码,上面这个模块也就不用下面这些代码来防止注入了。
   PHP的Fileinfo扩展是libmagic库的一个封装,可以用来获得文件的一些信息,如MIME类型,可以用来更好地代替magic_mime扩展中的 mime_content_type()函数。本文介绍本人在Windows环境下使用Fileinfo扩展获得文件MIME类型的实现步骤:
到下载适合自己PHP版本的Fileinfo扩展到你的PHP扩展目录,即php.ini中由extension_dir指定的目录
将存放文件类型信息的magic和magic.mime两个文件放置到一个目录下,不妨设为E:\php\extras下。这两个文件在附件压缩包中,是我从GnuWin32的share文件夹中提取出来的。其中magic可以用apache的conf目录下的magic代替;PHP的extras文件夹也有一个magic.mime文件,但是用它的话fileinfo扩展无法正确工作,不能用来代替附件中的这个magic.mime
修改php.ini,加入这样一行:
extension=php_fileinfo.dll
之后重新启动web服务器,确认成功加载扩展之后进行下一步代码测试
新建一个php脚本文件,用如下代码进行测试
file($testFile);
?>
输出:application/msword
上述代码中$magicFile即为上述所提到的文件magic,必须保证magic.mime与magic两个文件放在同一个文件夹    
    
简述
在某个项目中需要分析 PHP 代码,分离出对应的函数调用(以及源代码对应的位置)。虽然这使用正则也可以实现,但无论从效率还是代码复杂度方面考虑,这都不是最优的方式。
查询了 PHP 手册,发现其实 PHP 已经内置解析器的接口,那就是 PHP Tokenizer,这工具正是我想要的。使用 PHP Tokenizer 能简单、高效、准确的分析出 PHP 源代码的组成。
实例
官方站点对 Tokenizer 的文档很少,不过这不影响我们理解它。Tokenizer 组件仅仅包含两个函数:token_get_all 以及 token_name,它们分别用于分析 PHP 代码以及获取代码对应的标识符名称。
下面是个简单的实例,说明如何使用这两个函数:
以下为引用的内容:

对应的输出为
以下为引用的内容:
1 - T_OPEN_TAG    <?php
1 - T_ECHO    echo
1 - T_WHITESPACE    
1 - T_CONSTANT_ENCAPSED_STRING    "string1"
1 - T_CONSTANT_ENCAPSED_STRING    "string2"
1 - T_WHITESPACE    
1 - T_CLOSE_TAG    ?>
这里顺便说明下,$token 如果为数组,那么分别对应的三个数组成员为 token 标识符(可以用 token_name 获得字面量)、对应的源代码内容、以及对应的行号。
还有中情况就是 $token 为字符串,这可能的情况之一就是为 T_CONSTANT_ENCAPSED_STRING 等常量,在分析代码时要注意。如果对这点很在意,可以考虑使用这里的代码。
是的,调用方式非常的简单,我们的野心当然远远要比写个简单的循环要大得多。我们可以利用这个组件做写实事,例如下面的代码用于“压缩” PHP 代码,去除不不要的换行、空白以及注释
以下为引用的内容:

调用方式很简单,只需要使用
以下为引用的内容:
CompactCode::compact($source_code);
即可,返回的字符串就是压缩以后的内容。
    在做一些测试时,往往自己是搞开发的,网速还成,但是我们的用户会在偏远的山区,56K上网,为此,我们能保证我们看到的就是用户看到的么?当然不能,尤其是图片和css在一个较低的网速加载时会出现变形,图片加载时出现Load不进来,这一切都不是我们能预料的,为此,我们的网络是快,但我们的用户可能会用一个慢的网速来访问,会有各种情况,所以,我们必须和果模拟出这样一种情形,好提高我们的访问质量。
   有同事推荐,NetLimiter这个软件,我是Win7,发现确实不怎么的,安都安不上,于是重启动了电脑,同事说是QQ电脑管家有一个这样的软件,So,我又没有安这个(当时安了做了下更新,后来就卸载了,不想让它更新Win7,再就是占用资源),在网上闲逛了一下,发现有一个这样的独立软件可以用,太好了,Url:http://www.huacolor.com/soft/59780.html  名字: 网络流量管理器 6.8.2383.401正式版(QQ电脑管家提取版).rar   ,这个是个好玩意,呵呵,在此介绍给大家,至于怎么用,参考:http://www.duote.com/tech/5/14227.html
PHP中类的对象经类的重重包含在找出一原先类里的某个变量时出现多次->的原因探究:

其之所以出现多个->,让人一看还真的蒙了,特别是给你看一段代码片段,蒙了,于是经过推敲后,得出如下代码:
压缩会出现js错误最多的就是少分号,怎么解决避免的:
常看到一些大牛的JS源码 在function 前面加;
;function($,undefined) 是什么用处 ?
;(function($){$.extend($.fn...
现般在一些 JQuery 函数前面有分号
在前面加分号可以有多种用途:
1、防止多文件集成成一个文件后,高压缩出现语法错误。
2、这是一个匿名函数,一般js库都采用这种自执行的匿名函数来保护内部变量 (function(){})()
3、因为undefined是window的属性,声明为局部变量之后,在函数中如果再有变量与undefined作比较的话,程序就可以不用搜索undefined到window,可以提高程序性能
————————————————————————————————————————————————————

Yahoo!给我们带来了YUI  compressor!
一.安装Java,配置环境变量。http://java.sun.com/javase/downloads/index.jsp
下载,安装,一路Next,没有任何问题,对了,你可以修改一下路径。
安装完毕以后,需要配置一下JAVA_HOME环境变量。
配置方法如下。
1、点击我的电脑—>属相—>高级—>环境变量—>系统变量
2、新建变量,变量名JAVA_HOME 路径:E:\Program Files\Java\jdk1.6.0_11 (我的是在E盘,你的JDK安装到那个盘,就写那个盘)
3、找到path变量,在后面添加路径:;%JAVA_HOME%\jre6\bin
OK,一路确定,关闭窗口。
打开CMD,输入java -version
看看能不能出来版本?
java version “1.6.0_11″
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)


二:直接调用包的执行代码:java -jar E:/Tool/yuicompressor/yuicompressor-2.4.2.jar E:/CMS.ContentPager.js -o E:/CMS.ContentPager-min.js --charset utf-8

三:压缩示例,压缩实现:
使用yuicompressor-2.4.2.jar对js文件进行压缩和输出。
示例如下:
Java  -jar  yuicompressor-2.4.2.jar  public.js  -o  compress/public.js  --charset=utf-8
命令说明:
1.  java –jar  执行jar包内的主函数
2.  public.js   将被压缩的原版JS文件
3.  –o        压缩后输出 后面是输出文件路径
4.  –charset  压缩文件的编码格式

四:实际运用时,要注意目录中有空格的情况,会出现:Unable to access jarfile D:/Program,要用双引号引起来即可。
cd D:\Program Files\yuicompressor


DownLoad:

参考(带文件下载):http://yekui.iteye.com/blog/819278


以上来自来自:
http://yui.github.io/yuicompressor/
在线web压缩:http://ganquan.info/yui/?hl=zh-CN
TBCompressor 基于YUICompressor的淘宝封装的css和js压缩工具(不用命令,直接合用的批处理工具):
http://www.jb51.net/softs/25860.html
描述实现方法:http://wenku.baidu.com/view/163a48f3770bf78a65295423.html
UI界面版本CSDN下载:http://download.csdn.net/download/tianqi520/1499680
Bat脚本实现批量压缩:http://www.cnblogs.com/heiniuhaha/archive/2011/06/15/YUI-Compressor.html

这个哥们写了一个,感觉界面不错利用YUI Compressor :
http://www.ninja911.com/blog/?p=345
-----------【相关下载】-----------
YUI Compressor [ http://yuilibrary.com/downloads/ ]
CSDN:NBCompressor_v1.2.0.2 附带 aauto ,利用YUI Compressor :
http://download.csdn.net/download/anto72/6328001
前一阶段开发ios手机程序,客户端和服务器端主要通过json传输数据内容。从服务器端返回来的数据内容是json格式,查看很不方便,因此在网上找到如下的查询工具,方便查询。


我们知道Json是一种特殊Javascript对象,介绍几个Json查看工具。

http://jsonviewer.codeplex.com/

.Net开发的Json查看器,可反编译查看源码,呵呵。

https://addons.mozilla.org/en-us/firefox/addon/jsonview/

火狐的Json查看器插件,可在火狐中打开Json内容查看

https://chrome.google.com/extensions/detail/chklaanhfefbnpoihckbnefhakgolnmc

谷歌浏览器的Json查看器插件,功能同上

http://jsonviewer.stack.hu/
本文来自:http://blog.csdn.net/z343929897/article/details/8009106


最后,我自己的工具:http://tools.jackxiang.com/  里面有一个Json编辑器。
这书花了两个小时看了一下,这门子语言简单,且实用,就像是搭建积木一样,呵呵,异步等是它的亮点,但PHP+Nginx也有类似的处理,该书Url:
http://www.nodebeginner.org/index-zh-cn.html#a-basic-http-server

再就是node.js和php性能测试 :
http://www.jiangmiao.org/blog/2491.html
http://snoopyxdy.blog.163.com/blog/static/60117440201183101319257/

后记:
Node.js并不适合需要与用户实时交互的系统;它适合集中处理用户发来的大规模“指令”,即不需要及时看到结果的请求。比如微博系统,用户发表一条微博,可能需要在服务器上排队1分钟才能最终保存到数据库。在这一分钟里,用户更多地是看看别人发表的微博,并不十分迫切地想看到自己那条微博。如果希望有更好的体验,其实可以用DOM直接把用户发表的微博先更新到当前页面,同时使用Ajax异步请求保存这条数据。
node作为一种新型的服务器语言从被认可,到广泛用于生产环境要走的路还很长。



个人总结:
node适用小型/单一的任务型应用,具备高效率的特性,例如计数器/访问足迹/comment等高并发ajax操作,结合缓存/nosql和队列是个不错的选择;但做完整项目可能略显复杂,容易导致控制流倒置。

人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
里面的End用法参看:http://www.jackxiang.com/post/4763/
阅读全文
Rango  18:02:56
http://matyhtf.iteye.com/blog/1679051
回忆未来-向东  18:05:11
对你这篇文章提到了Erlang,其中说到Push这一块,也是我研究的原因,你这块有实例吧?Push到浏览器的实例。
当年搜狐的白社会就是用的Erlang能并发2W,但没有做起来,技术已经是相当先进了。
Rango  18:05:56
只有测试的例子。目前还没有完整的方案
呵呵,并发2W不算什么。
搞到20W都不成问题
回忆未来-向东  18:06:21
带逻辑的,所以并发可能要低一点儿。
Rango  18:06:38
并发跟这个没关系,RPS和同时连接数
...
Rango  18:22:01
对啊。一直保持的,长连接
需要在你的代码中自己去选择关闭
回忆未来  18:22:14
为何要长连接?
Rango  18:22:26
swoole_server_close
...
阅读全文
PHP APC apc stat=0:

如果你覺得自己的 PHP 網站不快,可以在自己的 php.ini 裡面,load 進來 apc.so 後面加上 apc.stat=0 ,對樣對網站的效能會有顯著地提昇。原理是因為 APC 在每次讀取 PHP 程式碼的時候,都會先 stat() 程式碼所在的檔案,以確定要不要重新編譯成 OPCODE ,而 apc.stat=0 則是直接省略 stat() 的步驟,拿原本就有的 opcode 來用。

而當使用了 APC 並且設置 apc.stat=0 之後,其實網站在第一次編譯成 OPCODE 之後,除非重起或是清除快取,要不然就是會一直拿 OPCODE 來跑,而這樣速度也因此有了顯著的提升

当然重启动一下Apache也是可以自动再次加载一次的。
阅读全文
没想到在CSDN上看到一个兄弟写的文章成连载了,于是细看了下,发现对PHP的Socket的编码及扩展实现写得不错,建议看下其扩展写法,很有学习教育意义,再就是对Epoll模型的分析很到位,觉得写得都不错,特摘录下Socket这块的PHP扩展代码分析结合其PHP的Soket服务器写法,原文来自:
http://blog.csdn.net/shagoo/article/details/6647961
http://blog.csdn.net/shagoo/article/details/6396089
《Socket深度探究4PHP(一)》和《Socket深度探究4PHP(二)》 Socket 深度探究 4 PHP (三) 应该是写得很有体系的难得一见的不错的好文章。
阅读全文
system(“nohup ./t.py $ks &”);这个不会在后台运行,php会一直挂起直到t.py结束。

system(“nohup ./t.py $ks >>log.txt &”);这样写才能在后台运行因为system函数启动一个程序并希望保持在后台运行,

必须确保该程序的输出被重定向到一个文件或者其它输出流去,否则 PHP 会在程序执行结束前挂起。

如:

到无穷的黑夜文件中去:
Cacti基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测
官方网站:http://www.cacti.net/
演示地址:http://www.cacti.net/screenshots.php
下载地址:http://www.cacti.net/download_cacti.php
文章来源:http://www.OSphp.com.cn
程序介绍:

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形解决方案。Cacti通过snmpget来获取数据,使用RRDtool绘画图形,也可外挂Scripts及加上Templates来作出各式各样的监控图,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善,界面友好,支持插件扩展。



转载自 xiaoxiaolq最终编辑 xiaoxiaolq值班监控服务器时,需一台台去登录查看服务器情况,很是麻烦,故用PHP SNMP做了个简单的服务器监控系统。结合了用来发短信的MAS系统,当服务器反生异常时可通过短信进行报警。阅读全文
PHP语言在实际编写中经常会与数据库打上交道。下面我们就来一起看看PHP类phpExcel的具体使用方法。phpExcel,操作excel很方便,尤其是可以方便的加入图片,支持jpg gif png格式。
下面是总结的几个PHP类phpExcel使用方法

创建一个excel

$objPHPExcel = new PHPExcel();
PHP类phpExcel保存excel—2007格式

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter=new PHPExcel_Writer_Excel5($objPHPExcel);//非2007格式
$objWriter->save("xxx.xlsx");
直接输出到浏览器

$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition:attachment;filename="resume.xls" ');
header("Content-Transfer-Encoding:binary");
$objWriter->save("php://output");
PHP类phpExcel设置excel的属性:
阅读全文
锁:这种在脚本重复跑,加上文件锁是最有效的方法,以下介绍Php的文件锁使用方法。
阅读全文
一般来说他们的区别在于混合表达式中运算符的处理顺序。
a++是先处理其他运算,然后a再自加;
而++a则是先处理a自加运算,再处理其他表达式运算;
如果只是单纯的表达式a++;或者是++a;这两个表达式的结果就没什么区别。
譬如是

计算的结果是a=2,b=1,c=2
c=++a是表达式先处理自加运算后处理赋值运算;
b=a++是表达式先处理赋值运算后处理自加运算;

http://iask.sina.com.cn/b/16210468.html
分页: 20/26 第一页 上页 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 下页 最后页 [ 显示模式: 摘要 | 列表 ]