随笔分类 -  PHP

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 18 下一页
网站语言
摘要:迭代器有时又称光标(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 幻星宇 阅读(224) 评论(0) 推荐(0)
摘要:对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。ORM提供了所有SQL语句的生成,代码人员远离了数据库概念。从一个概念需求(例如一个HQL)映射为一个SQL语句,并不需要什么代价,连1%的性能损失都没有。真正的性能损失在映射过程中,更具体地讲,是在对象实例化的过程中。目前PHP 开源比较有名的ORM有以下几个:1、PropelPropel是一个适用于PHP5 阅读全文
posted @ 2013-07-29 16:16 幻星宇 阅读(579) 评论(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 幻星宇 阅读(327) 评论(0) 推荐(0)
摘要:后门URL是指虽然无需直接调用的资源能直接通过URL访问。例如,下面WEB应用可能向登入用户显示敏感信息:由于sensitive.php位于网站主目录下,用浏览器能跳过验证机制直接访问到该文件。这是由于在网站主目录下的所有文件都有一个相应的URL地址。在某些情况下,这些脚本可能执行一个重要的操作,这就增大了风险。为了防止后门URL,你需要确认把所有包含文件保存在网站主目录以外。所有保存在网站主目录下的文件都是必须要通过URL直接访问的。 阅读全文
posted @ 2013-07-29 16:12 幻星宇 阅读(336) 评论(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 幻星宇 阅读(3552) 评论(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 幻星宇 阅读(189) 评论(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 幻星宇 阅读(336) 评论(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 幻星宇 阅读(509) 评论(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 幻星宇 阅读(562) 评论(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 幻星宇 阅读(339) 评论(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 幻星宇 阅读(468) 评论(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 幻星宇 阅读(3564) 评论(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 幻星宇 阅读(156) 评论(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 幻星宇 阅读(211) 评论(0) 推荐(0)
摘要:函数描述及例子按照比例改变图片大小(非生成缩略图) 阅读全文
posted @ 2013-07-18 17:35 幻星宇 阅读(202) 评论(0) 推荐(0)
摘要:当我们说到压缩,我们可能会想到文件压缩,其实,字符串也是可以压缩的。PHP提供了gzcompress()和gzuncompress()函数:Php代码$string=“Loremipsumdolorsitamet,consecteturadipiscingelit.Nuncutelitidmiultriciesadipiscing.Nullafacilisi.Praesentpulvinar,sapienvelfeugiatvestibulum,nulladuipretiumorci,nonultricieselitlacusquisante.Loremipsumdolorsitamet,co 阅读全文
posted @ 2013-07-18 17:24 幻星宇 阅读(283) 评论(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 幻星宇 阅读(268) 评论(0) 推荐(0)
摘要:很多朋友都利用md5()来生成唯一的编号,但是md5()有几个缺点:1、无序,导致数据库中排序性能下降。2、太长,需要更多的存储空间。其实PHP中自带一个函数来生成唯一的id,这个函数就是uniqid()。下面是用法:Php代码//generateuniquestringechouniqid();/*输出4bd67c947233e*///generateanotheruniquestringechouniqid();/*输出4bd67c9472340*/该算法是根据CPU时间戳来生成的,所以在相近的时间段内,id前几位是一样的,这也方便id的排序,如果你想更好的避免重复,可以在id前加上前缀, 阅读全文
posted @ 2013-07-18 17:20 幻星宇 阅读(232) 评论(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 幻星宇 阅读(227) 评论(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 幻星宇 阅读(967) 评论(0) 推荐(0)

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 18 下一页