07 2013 档案

摘要:==过滤输入/输出转义过滤是Web应用安全的基础。它是你验证数据合法性的过程。通过在输入时确认对所有的数据进行过滤,你可以避免被污染(未过滤)数据在你的程序中被误信及误用。大多数流行的PHP应用的漏洞最终都是因为没有对输入进行恰当过滤造成的。有很多种方法过滤数据,其中有一些安全性较高。最好的方法是把过滤看成是一个检查的过程。请不要试图好心地去纠正非法数据,要让你的用户按你的规则去做,历史证明了试图纠正非法数据往往会导致安全漏洞。另外一个Web应用安全的基础是对输出进行转义或对特殊字符进行编码,以保证原意不变。例如,O’Reilly在传送给MySQL数据库前需要转义成O\’Reilly。单引号前 阅读全文
posted @ 2013-07-31 14:34 幻星宇 阅读(218) 评论(0) 推荐(0) 编辑
摘要:" /> 阅读全文
posted @ 2013-07-31 14:24 幻星宇 阅读(334) 评论(0) 推荐(0) 编辑
摘要:许多前端工程师,他们拥有客户所寻找的创造能力和技术能力,但是他们没有机会向客户展示他们的能力。这种,客户直接找到他们所需求的前端工程师的情况却很少发生。 让你的能力出名的方法,有一个很好的方法,建立起声誉,并且收集一个对你的特殊技能感兴趣的客户的名单。这不仅仅对一个自由作家是一个好办法,这也能使你脱离仅仅对一个特殊职位的竞争。作为一个开发者,你或许不知道如何开始营销自己,遵循这些技巧,你可以有效的表现出你的能力去赢得客户的注意。1、找准定位 有时候我们喜欢什么技术都学一点,似乎这样能让自己无所不能,但在实际工作中我们让自己成为某一方面的专家会更好一些(毕竟你自己不能干完所有的事)。集中... 阅读全文
posted @ 2013-07-31 09:42 幻星宇 阅读(202) 评论(0) 推荐(0) 编辑
摘要:在朋友眼里,我是一个没神经没大脑,赚一块钱花两块浑浑噩噩过生活的人。我一般不在意,也觉得没什么大不了。人生嘛,就是笑笑别人,再让别人笑笑。在我的心里,一直有一句十分俗气的话:成长,就是不断妥协的过程。说它俗气,因为太多人和我讲过这个道理,他们告诉我妥协的必要性和不可回避。我承认它是有道理的。可是我不愿意被别人告知。我喜欢自己去慢慢地一路走来,然后觉得这句话不是俗气的,而是真理。有一朋友,跟我打电话的时候抱怨生活多累多苦,我很想跟他说少追求一点生活会不会轻松点,但还是笑了笑没说出口。现在这个社会,苦和累已经成了衡量一个人是否成功的标准,我怎么忍心剥夺他享受成功的喜悦呢?我们都按自己的方式努力的生 阅读全文
posted @ 2013-07-30 15:41 幻星宇 阅读(264) 评论(0) 推荐(0) 编辑
摘要:简单的生活对我们每个人都有不同的意义和价值。对我而言,简单的生活意味着去粗取精,避开纷争去追求内心的平和,以及把时间花在真正对自己重要的事情上。这就意味着摆脱纠缠不清的种种,把这些时间用来陪伴自己心爱的人和做自己喜欢做的事情。避开一些杂事,你的生活将变得更加有价值。然而,让生活变得简单并不像说起来那么容易。简单的生活是生命的过程,而不是目的。如果你想让生活变得轻松而简单,请接着读下去:如果你觉得以下的72条观念过于冗长,那么它们可以被简短的概括成以下两条:定义对你而言最重要的事情。专注于对你最重要的事情,其它的统统不要。(原文有72条,为了简约生活,我删掉了一些……)找出对你而言最重要的4-5 阅读全文
posted @ 2013-07-29 16:58 幻星宇 阅读(236) 评论(0) 推荐(0) 编辑
摘要:使用系统命令是一项危险的操作,尤其在你试图使用远程数据来构造要执行的命令时更是如此。如果使用了被污染数据,命令注入漏洞就产生了。exec()是用于执行shell命令的函数。它返回执行并返回命令输出的最后一行,但你可以指定一个数组作为第二个参数,这样输出的每一行都会作为一个元素存入数组。使用方式如下:1假设ls命令在shell中手工运行时会产生如下输出:1$ ls2total 03-rw-rw-r-- 1 chris chris 0 May 21 12:34 php-security4-rw-rw-r-- 1 chris chris 0 May 21 12:34 chris-shiflett当通 阅读全文
posted @ 2013-07-29 16:53 幻星宇 阅读(421) 评论(0) 推荐(0) 编辑
摘要:关于包含的一个重要问题是源代码的暴露。产生这个问题主要原因是下面的常见情况:对包含文件使用.inc的扩展名包含文件保存在网站主目录下Apache未设定.inc文件的类型Apache的默认文件类型是text/plain上面情况造成了可以通过URL直接访问包含文件。更糟的是,它们会被作为普通文本处理而不会被PHP所解析,这样你的源代码就会显示在用户的浏览器上。避免这种情况很容易。只能重组你的应用,把所有的包含文件放在网站主目录之外就可以了,最好的方法是只把需要公开发布的文件放置在网站主目录下。虽然这听起来有些疯狂,很多情形下能导致源码的暴露。我曾经看到过Apache的配置文件被误写(并且在下次启动 阅读全文
posted @ 2013-07-29 16:51 幻星宇 阅读(396) 评论(0) 推荐(0) 编辑
摘要:一个比欺骗表单更高级和复杂的攻击方式是HTTP请求欺骗。这给了攻击者完全的控制权与灵活性,它进一步证明了不能盲目信任用户提交的任何数据。为了演示这是如何进行的,请看下面位于http://example.org/form.php的表单:12Please select a color:389如果用户选择了Red并点击了Select按钮后,浏览器会发出下面的HTTP请求:1POST /process.php HTTP/1.12Host: example.org3User-Agent: Mozilla/5.0 (X11; U; Linux i686)4Referer: http://example.o 阅读全文
posted @ 2013-07-29 16:49 幻星宇 阅读(392) 评论(0) 推荐(0) 编辑
摘要:跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法。此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者。这样,很你就很难确定哪些请求是属于跨站请求伪造攻击。事实上,如果没有对跨站请求伪造攻击进行特意防范的话,你的应用很有可能是有漏洞的。请看下面一个简单的应用,它允许用户购买钢笔或铅笔。界面上包含下面的表单:010203Item:0408Quantity: 091011一个攻击者会首先使用你的应用以收集一些基本信息。例如,攻击者首先访问表单并发现两个表单元素item及quantity,他也同时知道了item的值会是铅笔或是钢笔。下面的bu 阅读全文
posted @ 2013-07-29 16:48 幻星宇 阅读(492) 评论(0) 推荐(0) 编辑
摘要:Ctype函数是PHP内置的字符串体测函数。主要有以下几种ctype_alnum-- Check for alphanumeric character(s)检测是否是只包含[A-Za-z0-9]ctype_alpha-- Check for alphabetic character(s)检测是否是只包含[A-Za-z]ctype_cntrl-- Check for control character(s)检查是否是只包含类是“\n\r\t”之类的字 符控制字符ctype_digit-- Check for numeric character(s)检查时候是只包含数字字符的字符串(0-9)cty 阅读全文
posted @ 2013-07-29 16:42 幻星宇 阅读(232) 评论(0) 推荐(0) 编辑
摘要:深度防范深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的。深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域。使用过备份伞的跳伞队员可以证明有冗余安全措施是多么的有价值,尽管大家永远不希望主伞失效。一个冗余的安全措施可以在主安全措施失效的潜在的起到重大作用。回到编程领域,坚持深度防范原则要求您时刻有一个备份方案。如果一个安全措施失效了,必须有另外一个提供一些保护。例如,在用户进行重要操作前进行重新用户认证就是一个很好的习惯,尽管你的用户认证逻辑里面没有已知缺陷。如果一个未认证用户通过某种方法伪装成另一个用户,提示录入密码可以潜在地避免未认证(未验证) 阅读全文
posted @ 2013-07-29 16:39 幻星宇 阅读(307) 评论(0) 推荐(0) 编辑
摘要:没有不会犯错的开发者,PHP的错误报告功能可以协助你确认和定位这些错误,可以提供的这些错误的详细描述,但如果被恶意攻击者看到,这就不妙了。不能让大众看到报错信息,这一点很重要。做到这一点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出错日志文件的保存路径。由于出错报告的级别设定可以导致有些错误无法发现,您至少需要把error_reporting设为E_ALL。E_ALL | E_STRICT 是最高的设置,提供向下兼容的建议,如不建议使用的提示。所有的出错报告级别可以在任意级别进行修改,所以您如果使用 阅读全文
posted @ 2013-07-29 16:36 幻星宇 阅读(183) 评论(0) 推荐(0) 编辑
摘要:除了能在共享服务器上读取任意文件之外,攻击者还能建立一个可以浏览文件系统的脚本。由于你的大多数敏感文件不会保存在网站主目录下,此类脚本一般用于找到你的源文件的所在位置。请看下例:01read())26{27$size=filesize("$dir$filename");2829if(is_dir("$dir$filename"))30{31$type='dir';32$filename.='/';33}34else35{36$type='file';37}3839if(is_readable("$ 阅读全文
posted @ 2013-07-29 16:34 幻星宇 阅读(359) 评论(0) 推荐(0) 编辑
摘要:绝不要信任外部数据或输入关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据。外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据。在采取措施确保安全之前,来自任何其他来源(比如 GET 变量、表单 POST、数据库、配置文件、会话变量或 cookie)的任何数据都是不可信任的。例如,下面的数据元素可以被认为是安全的,因为它们是在 PHP 中设置的。1但是,下面的数据元素都是有瑕疵的。1为什么第一个变量 $myUsername 是有瑕疵的?因为它直接来自表单 POST。用户可以在这个输入域中输入任何字符串,包括用来清除文件或运行以前上传的 阅读全文
posted @ 2013-07-29 16:28 幻星宇 阅读(227) 评论(0) 推荐(0) 编辑
摘要:跨站脚本攻击是众所周知的攻击方式之一。所有平台上的Web应用都深受其扰,PHP应用也不例外。所有有输入的应用都面临着风险。Webmail,论坛,留言本,甚至是Blog。事实上,大多数Web应用提供输入是出于更吸引人气的目的,但同时这也会把自己置于危险之中。如果输入没有正确地进行过滤和转义,跨站脚本漏洞就产生了。以一个允许在每个页面上录入评论的应用为例,它使用了下面的表单帮助用户进行提交:12Name: 3Comment: 45程序向其他访问该页面的用户显示评论。例如,类似下面的代码段可能被用来输出一个评论($comment)及与之对应的发表人($name):1$name writes:&quo 阅读全文
posted @ 2013-07-29 16:24 幻星宇 阅读(354) 评论(0) 推荐(0) 编辑
摘要:SPL提供了6个迭代器接口:Traversable遍历接口(检测一个类是否可以使用foreach进行遍历的接口)Iterator迭代器接口(可在内部迭代自己的外部迭代器或类的接口)IteratorAggregate聚合式迭代器接口(创建外部迭代器的接口)OuterIterator迭代器嵌套接口(将一个或多个迭代器包裹在另一个迭代器中)RecursiveIterator递归迭代访问接口(提供递归访问功能)SeekableIterator可索引迭代访问接口(实现查找功能)下面对各种迭代器接口简单介绍一下:1. TraversableTraversable接口实际上不是一个接口,在实际写php代码中 阅读全文
posted @ 2013-07-29 16:22 幻星宇 阅读(252) 评论(0) 推荐(0) 编辑
摘要:斐波纳契数列通常做法是用递归实现,当然还有其它的方法。这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把类里的next()方法重写了一次。注释已经写到代码中,也是相当好理解的。/*** @author 简明现代魔法 http://www.nowamagic.net*/class Fibonacci implements Iterator { private $previous = 1; private $current = 0; private $key = 0; public function current() { ... 阅读全文
posted @ 2013-07-29 16:20 幻星宇 阅读(227) 评论(0) 推荐(0) 编辑
摘要:迭代器有时又称光标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如list或vector)上遍访的接口,设计人员无需关心容器物件的内容。各种语言实作Iterator的方式皆不尽同,有些面向对象语言像Java, C#, Python, Delphi都已将Iterator的特性内建语言当中,完美的跟语言整合,我们称之隐式迭代器(implicit iterator),但像是C++语言本身就没有Iterator的特色,但STL仍利用template实作了功能强大的iterator。PHP5开始支持了接口, 并且内置了Iterator接口, 所以如果你定义了一个类,并实现 阅读全文
posted @ 2013-07-29 16:19 幻星宇 阅读(218) 评论(0) 推荐(0) 编辑
摘要:对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。ORM提供了所有SQL语句的生成,代码人员远离了数据库概念。从一个概念需求(例如一个HQL)映射为一个SQL语句,并不需要什么代价,连1%的性能损失都没有。真正的性能损失在映射过程中,更具体地讲,是在对象实例化的过程中。目前PHP 开源比较有名的ORM有以下几个:1、PropelPropel是一个适用于PHP5 阅读全文
posted @ 2013-07-29 16:16 幻星宇 阅读(570) 评论(0) 推荐(0) 编辑
摘要:随着移动设备的普及,网站也会迎来越来越多移动设备的访问。用适应PC的页面,很多时候对手机用户不友好,那么有些时候,我们需要判断用户是否用手机访问,如果是手机的话,就跳转到指定的手机友好页面。这里就介绍一下,如何判断用户是否用手机访问。自定义的函数如下:01$agent= check_wap();02if($agent)03{04header('Location:http://www.nowamagic.net');05exit;06}0708// check if wap09functioncheck_wap(){10// 先检查是否为wap代理,准确度高11if(strist 阅读全文
posted @ 2013-07-29 16:13 幻星宇 阅读(321) 评论(0) 推荐(0) 编辑
摘要:后门URL是指虽然无需直接调用的资源能直接通过URL访问。例如,下面WEB应用可能向登入用户显示敏感信息:由于sensitive.php位于网站主目录下,用浏览器能跳过验证机制直接访问到该文件。这是由于在网站主目录下的所有文件都有一个相应的URL地址。在某些情况下,这些脚本可能执行一个重要的操作,这就增大了风险。为了防止后门URL,你需要确认把所有包含文件保存在网站主目录以外。所有保存在网站主目录下的文件都是必须要通过URL直接访问的。 阅读全文
posted @ 2013-07-29 16:12 幻星宇 阅读(332) 评论(0) 推荐(1) 编辑
摘要:[php] view plaincopydb=&$db;session_module_name('user');//session文件保存方式,这个是必须的!除非在Php.ini文件中设置了session_set_save_handler(array(&$this,'open'),//在运行session_start()时执行array(&$this,'close'),//在脚本执行完成或调用session_write_close()或session_destroy()时被执行,即在所有session操作完后被执行arra 阅读全文
posted @ 2013-07-29 15:32 幻星宇 阅读(3545) 评论(0) 推荐(0) 编辑
摘要:当你关注于防止源码的暴露时,你的会话数据只同样存在着风险。在默认情况下,SESSION保存在/tmp目录下。这样做在很多情形下是很方便的,其中之一是所有用户都有对/tmp的写入权限,这样Apache同样也有权限进行写入。虽然其他用户不能直接从shell环境读取这些会话文件,但他们可以写一个简单的脚本来进行读取:01read())10{11if(substr($filename, 0, 5) =='sess_')12{13$data=file_get_contents("$path/$filename");1415if(!empty($data))16{17s 阅读全文
posted @ 2013-07-29 15:23 幻星宇 阅读(183) 评论(0) 推荐(0) 编辑
摘要:一个与会话暴露类似的问题是会话注入。此类攻击是基于你的WEB服务器除了对会话存储目录有读取权限外,还有写入权限。因此,存在着编写一段允许其他用户添加,编辑或删除会话的脚本的可能。下例显示了一个允许用户方便地编辑已存在的会话数据的HTML表单:0106070809read())15{16if(substr($filename, 0, 5) =='sess_')17{18$sess_data=file_get_contents("$path/$filename");1920if(!empty($sess_data))21{22session_decode($se 阅读全文
posted @ 2013-07-29 15:16 幻星宇 阅读(331) 评论(0) 推荐(0) 编辑
摘要:如果你还能记起早期Web应用开发中使用C开发CGI程序的话,一定会对繁琐的表单处理深有体会。当PHP的register_globals配置选项打开时,复杂的原始表单处理不复存在,公用变量会自动建立。它让PHP编程变得容易和方便,但同时也带来了安全隐患。用户输入从何而来?第一个源是 GET、POST 和 COOKIE 数据。一般称为 GPC 数据。此数据的可识别程序依赖于一个有争议的 php.ini设置:register_globals。在 PHP V4.3.0 以后,register_globals 默认情况下被设置为 Off。但是几年前,在 PHP 中,register_globals 的默 阅读全文
posted @ 2013-07-29 15:11 幻星宇 阅读(502) 评论(0) 推荐(0) 编辑
摘要:第一部分是指在Android系统的手机上直接写PHP脚本代码并立即运行;第二部分则继续讲解如何把写好的PHP脚本代码打包成akp安装文件。首先,在手机上安装两个apk包。一个是SL4A(Scripting Layer for Android),这个是Android的脚本环境,前身是ASE(Android Scripting Environment),Android系统上的所有脚本都将在这个环境下执行,下载地址:sl4a_r3,下载后将扩展名改为.akp即可,也可以到谷歌官方下载http://code.google.com/p/android-scripting/downloads/list。( 阅读全文
posted @ 2013-07-29 09:49 幻星宇 阅读(536) 评论(0) 推荐(0) 编辑
摘要:在Linux下用源代码方式编译安装完Apache后,启动关闭Apache可以通过如下命令实现:/app/apache2.2.14/bin/apachectl start | stop | restart如果想将httpd列入系统自动启动的服务,可以直接将上述的apachectl文件拷贝到 /etc/rc.d/init.d 中,然后在相应的启动级别如3,5中加入链接即可。命令如下: /etc/rc.d/init.d/.httpd.swp cp /app/apache2.2.14/bin/apachectl /etc/rc.d/init.d/httpd ln -s /etc/rc.d/init.d 阅读全文
posted @ 2013-07-28 20:48 幻星宇 阅读(334) 评论(0) 推荐(0) 编辑
摘要:如果某台Linux服务器ping不通域名, 如下提示:# ping www.baidu.comping: unknown host www.baidu.com如果确定网络没问题的情况下, 可以通过如下步骤寻找解决办法:1) 确定设置了域名服务器, 没有的话, 建议设置Google的公共DNS服务, 它应该不会出问题的# cat /etc/resolv.conf-------------------------------------------------------------------nameserver 8.8.8.8nameserver 8.8.4.4---------------- 阅读全文
posted @ 2013-07-28 17:44 幻星宇 阅读(1539) 评论(0) 推荐(0) 编辑
摘要:一、源文件编译安装。源文件共两个,为:1.下载subversion源文件subversion-1.6.1.tar.gzhttp://d136.d.iask.com/fs/800/1/187a3087a49b71b42ba4d4a300b6278746011506/gz/subversion-1.6.1.tar.gz2.下载subversion依赖文件subversion-deps-1.6.1.tar.gzhttp://d136.d.iask.com/fs/800/1/48f59892a78763e7215ae94628c7e97f46011512/gz/subversion-deps-1.6. 阅读全文
posted @ 2013-07-28 17:15 幻星宇 阅读(387) 评论(0) 推荐(0) 编辑
摘要:编译时出现下列问题时:In file included from /usr/local/src/php-5.4.6/ext/gd/gd.c:103:/usr/local/src/php-5.4.6/ext/gd/gd_ctx.c: 在函数‘_php_image_stream_putc’中:/usr/local/src/php-5.4.6/ext/gd/gd_ctx.c:51: 错误:‘struct gdIOCtx’没有名为‘data’的成员/usr/local/src/php-5.4.6/ext/gd/gd_ctx.c: 在函数‘_php_image_stream_putbuf’中:/usr/ 阅读全文
posted @ 2013-07-28 16:41 幻星宇 阅读(461) 评论(0) 推荐(0) 编辑
摘要:rpm -ivh MySQL-devel-community-5.1.57-1.sles10.x86_64.rpmexport PATH=/usr/local/services/libxml2-2.7.2/bin:$PATH cp /usr/lib64/mysql/libmysqlclient.so.15.0.0 /usr/lib/libmysqlclient.so./configure --prefix=/usr/local/services --with-mysql=/usr/include/mysql/ --with-curl=/usr/local/services/curl-7.15. 阅读全文
posted @ 2013-07-28 16:37 幻星宇 阅读(3555) 评论(0) 推荐(0) 编辑
摘要:#rpm –qa|grep –i mysql查看已安装的mysql版本如果有已存在的mysql版本则删除安装服务端和客户端,去Oracle官网下载:# rpm -ivh MySQL-server-5.5.28-1.linux2.6.i386.rpm# rpm -ivh MySQL-client-5.5.28-1.linux2.6.i386.rpm安装后会出现以下信息,提示不要忘记设计root用户的密码以及其他信息。之后查看mysql的服务是否启动#netstat -nat如看到有3306的端口号,就说明服务启动了,默认的端口是3306 ,如果没有启动的话 ,就打开服务 #service m 阅读全文
posted @ 2013-07-28 14:44 幻星宇 阅读(1267) 评论(0) 推荐(0) 编辑
摘要:select gid, username from users where FIND_IN_SET(8,gid); //查询gid里含有数字8的记录,gid是varchar ,数据格式:"1,12,8,18,5"select gid, username from users where !FIND_IN_SET(8,gid); //查询gid里不含有数字8的记录,gid是varchar ,数据格式:"1,12,8,18,5" 阅读全文
posted @ 2013-07-27 23:16 幻星宇 阅读(3755) 评论(0) 推荐(0) 编辑
摘要:月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历,我在把他的心得做了不多的增改,并根据我的经历增加了“进阶”一节。这是一篇由新手和我这个老家伙根据我们的经历完成的文章。我的这个朋友把这篇文章取名叫Build Your ProgrammingTechni 阅读全文
posted @ 2013-07-25 14:35 幻星宇 阅读(171) 评论(0) 推荐(0) 编辑
摘要:jquery1.6中新加了一个方法prop(),一直没用过它,官方解释只有一句话:获取在匹配的元素集中的第一个元素的属性值。官方例举的例子感觉和attr()差不多,也不知道有什么区别,既然有了prop()这个新方法,不可能没用吧,那什么时候该用attr(),什么时候该用prop()呢?大家都知道有的浏览器只要写disabled,checked就可以了,而有的要写成disabled = "disabled",checked="checked",比如用attr("checked")获取checkbox的checked属性时选中的时候可以取 阅读全文
posted @ 2013-07-25 10:04 幻星宇 阅读(182) 评论(0) 推荐(0) 编辑
摘要:使用php的常见问题是:编译php时忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想删除目录重装,别说,php还真有这样的功能。 我没有在手册中看到。 如我想增加bcmath支持,这是一个支持大整数计算的扩展。windows自带而且内置,linux“本类函数仅在 PHP 编译时配置了 --enable-bcmath 时可用”(引号内是手册中的话) 幸好有phpize, 方法是,要有与现有php完全相同的php压缩包。我用的是php-5.2.6.tar.gz。 展开后进入里面的ext/bcmath目录 然后执行/usr/local/php/bin... 阅读全文
posted @ 2013-07-24 11:25 幻星宇 阅读(151) 评论(0) 推荐(0) 编辑
摘要:主要软件包,1. httpd-2.2.6.tar.gz2. mysql-5.0.45-linux-i686-glibc23.tar.gz (这个版本是已编译好的压缩包,解压后稍做配置即可使用)3. php-5.2.5.tar.gz安装php所需的软件包(其中libxml2是安装php5必须的.)1. libxml2-(version).tar.gz ---> http://ftp.gnome.org/pub/GNOME/sources/libxm22. libxslt-(version).tar.gz ---> http://ftp.gnome.org/pub/GNOME/sour 阅读全文
posted @ 2013-07-24 11:18 幻星宇 阅读(205) 评论(0) 推荐(0) 编辑
摘要:最近决定把几个IDE的代码样式统一一下,Visual Studio的还算好改,PHP目前用得不多,不过也打算给Zend Studio换身新装。网上搜索的一些更改Zend Studio主题的多是修改或者导入主题配置文件,可选主题不多而且略显麻烦,今天在Zend官方网站上找到一个比较好的解决办法。详细参见Zend文档《Working with Eclipse Color Theme》。原文是英文,比较麻烦,而且大家肯定去找菜单Window | Preferences | General | Appearance | Color Theme选项,很抱歉,你有可能不能发现这个选项。因为原文有个Prer 阅读全文
posted @ 2013-07-21 12:00 幻星宇 阅读(399) 评论(0) 推荐(0) 编辑
摘要:Zend Studio 10正式版注册破解(2013-02-26完成更新)1、以下方法仅供技术交流学习,请勿非法使用,如长期使用请支持购买正版。2、若你还没有最新安装程序? ZendStudio 10下载地址:http://pan.baidu.com/share/link?shareid=586569&uk=12416140083、注册破解步骤 Zend Studio 10,先下载zend jar破解文件:http://pan.baidu.com/share/link?shareid=586572&uk=12416140084、破解文件 ZendStudio10破解文件:com 阅读全文
posted @ 2013-07-21 11:31 幻星宇 阅读(292) 评论(0) 推荐(0) 编辑
摘要:函数描述及例子按照比例改变图片大小(非生成缩略图) 阅读全文
posted @ 2013-07-18 17:35 幻星宇 阅读(190) 评论(0) 推荐(0) 编辑
摘要:当我们说到压缩,我们可能会想到文件压缩,其实,字符串也是可以压缩的。PHP提供了gzcompress()和gzuncompress()函数:Php代码$string=“Loremipsumdolorsitamet,consecteturadipiscingelit.Nuncutelitidmiultriciesadipiscing.Nullafacilisi.Praesentpulvinar,sapienvelfeugiatvestibulum,nulladuipretiumorci,nonultricieselitlacusquisante.Loremipsumdolorsitamet,co 阅读全文
posted @ 2013-07-18 17:24 幻星宇 阅读(276) 评论(0) 推荐(0) 编辑
摘要:PHP序列化功能大家可能用的比较多,也比较常见,当你需要把数据存到数据库或者文件中是,你可以利用PHP中的serialize() 和 unserialize()方法来实现序列化和反序列化,代码如下:Php代码//一个复杂的数组$myvar=array(‘hello’,42,array(1,’two’),‘apple’);//序列化$string=serialize($myvar);echo$string;/*输出a:4:{i:0;s:5:”hello”;i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:”two”;}i:3;s:5:”apple”;}*///反序例化$newv 阅读全文
posted @ 2013-07-18 17:22 幻星宇 阅读(264) 评论(0) 推荐(0) 编辑
摘要:很多朋友都利用md5()来生成唯一的编号,但是md5()有几个缺点:1、无序,导致数据库中排序性能下降。2、太长,需要更多的存储空间。其实PHP中自带一个函数来生成唯一的id,这个函数就是uniqid()。下面是用法:Php代码//generateuniquestringechouniqid();/*输出4bd67c947233e*///generateanotheruniquestringechouniqid();/*输出4bd67c9472340*/该算法是根据CPU时间戳来生成的,所以在相近的时间段内,id前几位是一样的,这也方便id的排序,如果你想更好的避免重复,可以在id前加上前缀, 阅读全文
posted @ 2013-07-18 17:20 幻星宇 阅读(229) 评论(0) 推荐(0) 编辑
摘要:PHP 提供非常有用的系统常量可以让你得到当前的行号 (__LINE__),文件 (__FILE__),目录 (__DIR__),函数名 (__FUNCTION__),类名(__CLASS__),方法名(__METHOD__) 和名字空间 (__NAMESPACE__),很像C语言。我们可以以为这些东西主要是用于调试,当也不一定,比如我们可以在include其它文件的时候使用?__FILE__ (当然,你也可以在 PHP 5.3以后使用 __DIR__ ),下面是一个例子。Php代码//thisisrelativetotheloadedscript’spath//itmaycauseprobl 阅读全文
posted @ 2013-07-18 17:16 幻星宇 阅读(218) 评论(0) 推荐(0) 编辑
摘要:获取了内存使用情况,也可以使用PHP的getrusage()获取CPU使用情况,该方法在windows下不可用。Php代码print_r(getrusage());/*输出Array([ru_oublock]=>0[ru_inblock]=>0[ru_msgsnd]=>2[ru_msgrcv]=>3[ru_maxrss]=>12692[ru_ixrss]=>764[ru_idrss]=>3864[ru_minflt]=>94[ru_majflt]=>0[ru_nsignals]=>1[ru_nvcsw]=>67[ru_nivcs 阅读全文
posted @ 2013-07-18 17:14 幻星宇 阅读(958) 评论(0) 推荐(0) 编辑
摘要:PHP的内存回收机制已经非常强大,你也可以使用PHP脚本获取当前内存的使用情况,调用memory_get_usage()函数获取当期内存使用情况,调用memory_get_peak_usage()函数获取内存使用的峰值。参考代码如下:Php代码echo“Initial:“.memory_get_usage().”bytes\n”;/*输出Initial:361400bytes*///使用内存for($i=0;$i<100000;$i++){$array[]=md5($i);}//删除一半的内存for($i=0;$i<100000;$i++){unset($array[$i]);}e 阅读全文
posted @ 2013-07-18 17:12 幻星宇 阅读(230) 评论(0) 推荐(0) 编辑
摘要:大部分PHP函数的函数名从字面上都可以理解其用途,但是当你看到glob()的时候,你也许并不知道这是用来做什么的,其实glob()和scandir()一样,可以用来查找文件,请看下面的用法:Php代码//取得所有的后缀为PHP的文件$files=glob(‘*.php’);print_r($files);/*输出:Array([0]=>phptest.php[1]=>pi.php[2]=>post_output.php[3]=>test.php)*/你还可以查找多种后缀名:Php代码//取PHP文件和TXT文件$files=glob(‘*.{php,txt}’,GLOB 阅读全文
posted @ 2013-07-18 16:47 幻星宇 阅读(227) 评论(0) 推荐(0) 编辑
摘要:$value) { echo 'arg' . ($key+1) . ': ' . $value . ""; }*/ getVars($args, $i);}/** * 参数判断 */function getVars($args, $i) { if (is_array($args)) { foreach ($args as $key => $value) { if (is_array($value)) { getVars($value, $i); } else { echo 'arg' . ($i+1) . ': 阅读全文
posted @ 2013-07-18 16:42 幻星宇 阅读(271) 评论(0) 推荐(0) 编辑
摘要:ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑…其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情..ob_*系列函数, 是操作PHP本身的输出缓冲区.所以, ob_flush是刷新PHP自身的缓冲区.而flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用. 它是刷新WebServer(可以认为特指apache)的缓冲区.在apache module的sapi下, flush会通过调用sapi_module的flush成员函数指针 阅读全文
posted @ 2013-07-17 15:57 幻星宇 阅读(216) 评论(0) 推荐(0) 编辑
摘要:漏洞无非这么几类,XSS、sql注入、命令执行、上传漏洞、本地包含、远程包含、权限绕过、信息泄露、cookie伪造、CSRF(跨站请求)等。这些漏洞不仅仅是针对PHP语言的,本文只是简单介绍PHP如何有效防止这些漏洞。 1.xss + sql注入(关于xss攻击详细介绍) 其中占大头的自然是XSS与SQL注入,对于框架类型或者有公共文件的,建议在公共文件中统一做一次XSS和SQL注入的过滤。用PHP写个过滤函数,可由如下所示: $_REQUEST = filter_xss($_REQUEST); $_GET = filter_xss($_GET); $_POST = filter_x... 阅读全文
posted @ 2013-07-17 15:44 幻星宇 阅读(408) 评论(0) 推荐(0) 编辑
摘要:1在httpd.conf文件里使下面模块生效LoadModule rewrite_module modules/mod_rewrite.so2httpd.conf配置文件或者是在httpd-vhost.conf文件里修改Options Indexes FollowSymLinksAllowOverride All# 上面是http-https时需要添加的语句Order allow,denyAllow from all3在网站根目录下面添加该文件“.htaccess” 目录访问控制文件,并添加如下内容:#---------------------------------RewriteEngine 阅读全文
posted @ 2013-07-17 15:26 幻星宇 阅读(13651) 评论(0) 推荐(1) 编辑
摘要:1.首先要开启相应的扩展和辅助的dll(ssleay32.dll,libeay32.dll)到system32下2.生成服务器证书安装好在bin目录下有一个openssl.exe文件,用来生成证书和密钥。 1). 生成服务器用的私钥文件server.key(注:在Windows操作系统环境下需先设置Openssl环境变量:在DOS命令下进入conf目录,执行命令行:set OPENSSL_CONF=..\conf\openssl.cnf;请在执行之前确保openssl.cnf存在,否则会出现:WARNING: can't openconfig file: /usr/local/ssl/ 阅读全文
posted @ 2013-07-17 14:31 幻星宇 阅读(728) 评论(0) 推荐(0) 编辑
摘要:主要讲述在windows下apache配置SSL以实现http转换为httpsSSL: SSl是为Http传输提供安全的协议,通过证书认证来确保客户端和网站服务器之间的数据是安全。也就是说在SSL下http传输是安全的,我们成为https.过程:步骤一:安装apache,使其支持SSL,并安装php 1.安装配有SSL模块的apache,apache_2.2.8-win32-x86-openssl-0.9.8g 2.配置apache以支持SSL:打开apache的配置文件conf/httpd.conf 1)LoadModule ssl_module modules/mod_ssl.so Inc 阅读全文
posted @ 2013-07-16 16:47 幻星宇 阅读(350) 评论(0) 推荐(0) 编辑
摘要:1.首先在php的安装文件下找到三个文件 并copy到系统目标下的 system32文件夹下: ssleay32.dll、libeay32.dll,php_openssl.dll。2.打开php.ini 把;extension=php_openssl.dll把前面的符号去掉;3.重新启动apache... 阅读全文
posted @ 2013-07-16 16:45 幻星宇 阅读(689) 评论(0) 推荐(0) 编辑
摘要:Zend框架2使用一个模块系统,和你组织内每个你的主应用程序特定代码模块。骨架提供的应用程序模块是用于提供引导,错误和路由配置到整个应用程序。它通常是用来提供应用水平控制器,比如说,应用程序的主页,但我们不会使用,因为我们希望在本教程中提供的默认我们的相册列表的主页,将生活在我们自己的模块。我们打算把所有的代码到相册模块将包含我们的控制器,模型形式和意见。我们还需要一些配置文件。我们开始与所需的目录。设置相册模块从以下子目录下的所谓专辑举行的模块的文件创建一个目录: zf2tutorial/ /modules /Album /configs /src /Album /Controller /F 阅读全文
posted @ 2013-07-16 16:10 幻星宇 阅读(280) 评论(0) 推荐(0) 编辑
摘要:By Rob Allen, www.akrabat.com修订0.1.2文件版权所有? 2011本教程的目的是给创建一个简单的数据库的介绍使用Zend Framework 2驱动的应用程序使用模型 - 视图 - 控制器模式。注:本教程已经在Zend框架的Beta 2 1测试。我没有想法,如果它的工作原理任何更高版本,它不与任何先前版本。需求Zend框架具有以下要求:?PHP 5.3.3(或更高)?Web服务器支持mod_rewrite或类似的功能。一些假设我假定您正在运行与Apache Web服务器和MySQL PHP 5.3.6或更高,通过mysqli扩展访问。 Apache安装必须有安装m 阅读全文
posted @ 2013-07-16 16:09 幻星宇 阅读(278) 评论(0) 推荐(0) 编辑
摘要:今天把原来一份很老的PHP代码导入到了PaaS上,出现了许多Strict standards:Declaration of … should be compatible with that of…这样的错误,字面意思好像是说函数不匹配,看了下出错的函数,都是子类重写的基类函数。上网搜索了一下,发现许多帖子基本都抄的一样,说什么这是由于 php5.3版本后,要求继承类必须在父类之后定义,如果父类定义在前,继承类在后,就不会出现这个错误。尤其是http://bugs.php.net/bug.php?id=46851上面还煞有介事的给出了正反例:123456789123456789并且讨论了出错的情 阅读全文
posted @ 2013-07-16 14:58 幻星宇 阅读(1625) 评论(0) 推荐(0) 编辑
摘要:::作用域运算符, 左部表示右部符号的作用域, 左部为空时表示全局作用域.一般情况下, 全局作用域的函数和变量可以不指定作用域而直接使用. 但当代码作用域内有同名函数或变量出现时, 两者就会冲突. 由于程序默认是使用代码作用域内的符号, 如果需要指定使用全局符号, 就需要加上::表示是使用全局作用域. 比如int var1 = 0;int func() { int var1 = 3; //return var1; // return 3; return ::var1; // return 0;}代码中的::max也是同样的含义. 阅读全文
posted @ 2013-07-16 09:40 幻星宇 阅读(423) 评论(0) 推荐(0) 编辑
摘要:mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结:话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添加的文章总数并且按照时间从大到小排序,则查询语句如下:1select*from`article`wheredate_format(from_UNIXTIME(`add_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d');或者:1select*from`article`whereto_days(date_format(f 阅读全文
posted @ 2013-07-12 17:11 幻星宇 阅读(765) 评论(0) 推荐(0) 编辑
摘要:php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法,主要使用到了 php 的时间函数 mktime。下面首先还是直奔主题以示例说明如何使用 mktime 获取今日、昨日、上周、本月的起始时间戳和结束时间戳,然后在介绍一下 mktime 函数作用和用法。//php获取今日开始时间戳和结束时间戳$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));$endToday=mktime(0,0,0,date('m'),date('d')+1,date(& 阅读全文
posted @ 2013-07-12 17:08 幻星宇 阅读(212) 评论(0) 推荐(0) 编辑
摘要:PHP5.4正式前两天发布了,之前有看了一些PHP5.4主要特性相关文章,因此在这里小结一下。其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客。1. Buid-in web serverPHP5.4内置了一个简单的Web服务器,这样在做一些简单程序就方便多了,省去了环境配置的工作,特别对于初学者来说。把当前目录作为Root Document只需要这条命令即可:1$ php -S localhost:3300也可以指定其它路径:1$ php -S localhost:3300 -t /path/to/root还可以指定路由:1$ php -S localhos 阅读全文
posted @ 2013-07-12 16:38 幻星宇 阅读(208) 评论(0) 推荐(0) 编辑
摘要:What has changed in PHP 5.4.x Most improvements in PHP 5.4.x have no impact on existing code. There are afew incompatibilitiesandnew featuresthat should be considered, and code should be tested before switching PHP versions in production environments.1. Backward Incompatible Changes :一些内容将不兼容1)不再支持安 阅读全文
posted @ 2013-07-11 23:06 幻星宇 阅读(693) 评论(0) 推荐(0) 编辑
摘要:今天在做一个新浪登录功能,新浪提供的PHPSDK里需要用到curl_init()函数,在调试的时候报找不到curl_init()的方法。经搜索得知需要开启curl的php扩展,那curl又是什么呢?能做什么?简单介绍,当我们需要抓去某个网站的数据信息时,可以用到file(),file_get_contents()等网页读取函数,因为过多的小偷程序泛滥,导致一些站点做了域名限制,从而是的这些file()函数效率低下甚至失效。如果使用curl来优化一下的话就能进行一些表单,cookie,验证等功能的强大,灵活的功效。开启curl的步骤1.在localhost站点下输出一下phpinfo,以此来检测 阅读全文
posted @ 2013-07-11 17:00 幻星宇 阅读(212) 评论(0) 推荐(0) 编辑
摘要:在cmd中执行以下命令来重新分配。netsh winsock reset.还不行的话可以重启电脑,再不行就算apache配置文件错误。 阅读全文
posted @ 2013-07-11 15:08 幻星宇 阅读(156) 评论(0) 推荐(0) 编辑
摘要:下载了PHP5.4.13 +Apache2.4.4,开始在网上下教程。环境配置遇到的第一个问题就是网上很多教程是针对老版本的PHP和apache,不得不搜了很久才搜到这篇文章。windows安装PHP5.4+Apache2.4+Mysql5.5一路照着做,很顺利。但最后配置了PHP后,apache怎么也启动不起来。主要是按文中这段操作时出了问题:------------------------------------------------------------------------------------------------------------------------------ 阅读全文
posted @ 2013-07-11 10:13 幻星宇 阅读(282) 评论(0) 推荐(0) 编辑
摘要:定界符给字符串定界的方法使用定界符语法(“但要注意的是:结束标识符所在的行不能包含任何其它字符,可能除了一个分号(;)之外。这尤其意味着该标识符不能被缩进,而且在分号之前和之后都不能有任何空格或制表 符。同样重要的是要意识到在结束标识符之前的第一个字符必须是你的操作系统中定义的换行符。例如在 Macintosh 系统中是 \r。 如果破坏了这条规则使得结束标识符不“干净”,则它不会被视为结束标识符,PHP 将继续寻找下去。如果在这种情况下找不到合适的结束标识符,将会导致一个在脚本最后一行出现的语法错误。ps:定界符文本表现的就和双引号字符串一样,只是没有双引号。这意味着在定界符文本中不需要转义 阅读全文
posted @ 2013-07-08 09:48 幻星宇 阅读(3516) 评论(0) 推荐(0) 编辑
摘要:我们在windows下安装mysql时会出现Access denied for user 'root'@localhost'(using password:No)的问题,这个问题是因为你的机器上之前安装过mysql,或者这 一次安装配置了新密码,进入应用的最后一步时候由于某些原因卡出了或者由于服务未启动等原因导致无法配置成功,最终结果是,配置未成功,密码设置已经保存 进去了。这样我们调整好了服务等原因后,进行重新配置的时候,会发现在设置密码的时候,多了一个旧密码输入框。其实这也没什么,在密码知道的情况下,输入 旧密码重新设置密码并不难,而问题关键在于即使旧密码正确,你依 阅读全文
posted @ 2013-07-07 23:09 幻星宇 阅读(250) 评论(0) 推荐(0) 编辑
摘要:在Windows 7下进行PHP环境搭建,首先需要下载PHP代码包和Apache与Mysql的安装软件包。 PHP版本:php-5.3.2-Win32-VC6-x86,VC9是专门为IIS定制的,VC6 是为了其他WEB服务软件提供的,如 Apache。我下载的是ZIP包,下载地址 Mysql版本:mysql-essential-5.1.45-win32,即MySQL Community Server 5.1.45,下载地址 Apache版本:httpd-2.2.15-win32-x86-openssl-0.9.8m-r2,openssl表示带有openssl模块,利用openssl可给... 阅读全文
posted @ 2013-07-07 22:48 幻星宇 阅读(308) 评论(0) 推荐(0) 编辑
摘要:sql语言中有没有类似C语言中的switch case的语句?? 没有,用case when 来代替就行了. 例如,下面的语句显示中文年月 select getdate() as 日期,case month(getdate()) when 11 then '十一' when 12 then '十二' else substring('一二三四五六七八九十', month(getdate()),1) end+'月' as 月份=================================================CASE可能 阅读全文
posted @ 2013-07-05 12:24 幻星宇 阅读(382) 评论(0) 推荐(0) 编辑
摘要:在看这些之前请确保你正确加载了PDO扩展。作法是编辑php.ini手动增加下面这两行(前面要没有分号;):extension=php_pdo.dllextension=php_pdo_mysql.dll然后要把extension_dir指向php_pdo.dll及php_pdo_mysql.dll所在目录,如extension_dir = "C:php5ext"OK,lets go..index.php 网站首页,也是唯一入口PHP代码如下: 127.0.0.1, username => root, password => 123456, dbname => 阅读全文
posted @ 2013-07-02 16:24 幻星宇 阅读(201) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示