随笔分类 -  PHP

摘要:一般而言,页面文件开启gzip压缩以后,其体积可以减小60%~90%,对于文字类站点,可以节省下大量的带宽与用户等待时间。但是不论是iis 还是apache默认都只压缩html类静态文件,对于php文件需要模块配置才可支持(iis7.5中开启动态+静态压缩也可以),于是利用php自身功能到达gzip的效果也成为一项合理的诉求。 阅读全文
posted @ 2013-03-04 16:45 linzj 阅读(1775) 评论(0) 推荐(0) 编辑
摘要:1. 不会利用如phpDoc这样的工具来恰当地注释你的代码2. 对优秀的集成开发环境如Zend Studio或Eclipse PDT视而不见3. 从未用过任何形式的版本控制系统,如Subclipse4. 不采用某种编码与命名标准,以及通用约定,不能在项目开发周期里贯彻落实5. 不使用统一开发方式6. 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函数)7. 不在编码之前彻底规划你的程序8. 不使用测试驱动开发9. 不在错误开启状态下进行编码和测试(译注:参考PHP函数error_reporting)10. 对调试器的好处视而不见11. 不重构你的代码 阅读全文
posted @ 2013-02-18 14:28 linzj 阅读(610) 评论(0) 推荐(0) 编辑
摘要:1.利用COOKIE存放session_id();实例:域名一文件php代码:<?phpsession_start();setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".session.com"); $_SESSION['user_name'] = '梁山良民';echo $_SESSION['user_name'];?>域名二文件php代码:<?phpsession_destroy(); s 阅读全文
posted @ 2013-01-23 09:43 linzj 阅读(14535) 评论(1) 推荐(1) 编辑
摘要:1 <?php 2 /** 3 * function getmxrr 4 * 获取指定域名的MX记录信息 5 */ 6 function win_getmxrr($hostname, &$mxhosts, &$mxweight=false) 7 { 8 if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') return; 9 if (!is_array ($mxhosts) ) $mxhosts = array(); 10 if (empty($hostname)) return; 11 ... 阅读全文
posted @ 2012-12-28 00:30 linzj 阅读(2301) 评论(0) 推荐(0) 编辑
摘要:1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; c 阅读全文
posted @ 2012-12-05 00:04 linzj 阅读(1233) 评论(0) 推荐(0) 编辑
摘要:1 <?php 2 /**堆栈 使用数组模拟入栈和出栈*/ 3 class myStark{ 4 public $top = -1; 5 public $maxStark = 5; 6 public $stark = array(); 7 public function __construct(){ 8 9 }10 /*入栈*/11 public function push($val){12 if($this->top > $this->maxStark - 1){13 return false... 阅读全文
posted @ 2012-12-03 23:40 linzj 阅读(795) 评论(0) 推荐(0) 编辑
摘要:1 <?php 2 /**双向链表 -- 水浒传英雄排行版*/ 3 class hero{ 4 public $name = ''; 5 public $no =''; 6 public $cname = ''; 7 public $next = ''; 8 public $pre = ''; 9 public function __construct($no = '',$name='',$cname=''){10 $this->no = $no;11 $ 阅读全文
posted @ 2012-12-02 23:55 linzj 阅读(848) 评论(0) 推荐(0) 编辑
摘要:1 <?php 2 /**单向链表 -- 水浒传英雄排行版*/ 3 class hero{ 4 public $name = ''; 5 public $no =''; 6 public $cname = ''; 7 public $next = ''; 8 public function __construct($no = '',$name='',$cname=''){ 9 $this->no = $no;10 $this->name = $name;11 $th 阅读全文
posted @ 2012-12-02 23:54 linzj 阅读(1866) 评论(0) 推荐(0) 编辑
摘要:对我们这些Web开发者来说,不计其数的网站,其中有些对我们来说是相当有用的工具。在本文中,我汇编了10个顶有用的网站,可以说每个开发者都应当将这些网站存为自己的书签。Mysql Format DateMySQL Format Date允许你利用MySQL DATE_FORMA函数规范化你的日期数值。只须挑选一个通用的日期格式,然后修改以满足自己的需求。页底将生成MySQL DATE_FORMAT代码会,你只须复制到你的代码中就行了。访问该网站:http://www.mysqlformatdate.comScript Src你是否厌倦了在互联网上一遍遍地奔波、搜索,只是为了找到你需要的Javas 阅读全文
posted @ 2012-12-02 00:33 linzj 阅读(1845) 评论(0) 推荐(0) 编辑
摘要:<?php//************************加密解密*************************//** $string: 明文 或 密文* $operation:DECODE表示解密,其它表示加密* $key: 密匙* $expiry:密文有效期* */function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0){ // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 $ckey_length = 4; // 密匙 $key = md5( 阅读全文
posted @ 2012-11-22 21:26 linzj 阅读(6668) 评论(0) 推荐(0) 编辑
摘要:你是否在程序开发的过程中遇到以下的情况:当你花了很长的时间开发一个应用后,你认为应该是大功告成了,可惜在调试的时候,老是不断的发现bug,而且最可怕的是,这些bug是重复出现的,你可能发现这些bug之间会有关联,但却老是找不到问题的所在。 当你遇到以上这些令你沮丧的情况时,你一定会想能有什么更好的办法去解决呢?办法当然是有的!这就是使用单元测试。单元测试不但可以在一定程度上解决上述头疼的问题,而且能让代码变的容易维护,还可以能让你更多地对代码进行重构。 一旦你编写好单元测试用例,当你需要修改你的代码时,你要做的事情就是重新运行你的单元测试用例并观察这些单元测试用例能否通过,如果通过了的话,.. 阅读全文
posted @ 2012-11-17 01:09 linzj 阅读(515) 评论(0) 推荐(0) 编辑
摘要:Selenium也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、 Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创 建衰退测试检验软件功能和用户需求。支持自动录制动作和自动生成。Net、Java、Perl等不同语言的测试脚本。Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。功能 # 测试直接在浏览器中运行,就像真实用户所做的一样,从终. 阅读全文
posted @ 2012-11-17 00:39 linzj 阅读(1536) 评论(0) 推荐(1) 编辑
摘要:1、Windows的开始 -> 运行 ->cmd2、安装命令 进入php所在目录,执行命令:go-pear.batAre you installing a system-wide PEAR or a local copy?(system|local) [system] :敲击回车键 (Enter)Below is a suggested file layout for your new PEAR installation. Tochange individual locations, type the number in front of thedirectory. Type ‘a 阅读全文
posted @ 2012-10-10 23:52 linzj 阅读(410) 评论(0) 推荐(0) 编辑
摘要:一直在用康盛的产品,自然少不了单点登陆,最近重新研究了下ucenter的机制,其实它的基本原理就一句话:跨域设置用户信息。下面只对用户登陆做比较详细说明,其他注册、PM等操作其实原理差不多。用户登陆do_login.php[uchome]$passport = getpassport($username, $password);此处操作调用了uc_client下client.php的uc_user_login($username, $password);此函数又调用了call_user_func(UC_API_FUNC, 'user', 'login', arr 阅读全文
posted @ 2012-08-25 00:24 linzj 阅读(5873) 评论(0) 推荐(0) 编辑
摘要:以用户登录为例介绍,其它注销,改密码,消息,头像,好友均类同。从用户xxx在某一应用程序的login.php,输入用户名,密码讲起。先用uc_user_login函数到uc_server验证此用户和密码,如正确,则写入session,写入cookies,并更新应用程序会员表中的登录ip,登录时间。用户感觉不到这个过程。然后通过uc_user_synlogin通知uc_server 用户xxx登录成功,这个过程可能使用ajax,用户感觉不到通知过程。uc_server收到这个消息后,马上命令手下,把xxx登录的消息,像令牌环一样,发给所有愿意接收(后台中那个是否开启同步登录)这个消息的其它应用程 阅读全文
posted @ 2012-08-25 00:10 linzj 阅读(4649) 评论(0) 推荐(0) 编辑
摘要:UCenter除了对实现用户通行,各个应用通用信息的存储和处理之外,还有一个重要的功能就是开放的接口协议,其他第三方应用程序通过简单修改,即可很容易将程序纳入UCenter体系中来,和其他应用共享用户以及其他数据,关于第三方应用程序的整合牵扯到的东西比较多,这里篇幅有限不能很详细的说,我只对整合概念上做一些描述。第三方应用程序的整合可以分为两个层次,一种层次只整合用户基本数据,能够实现用户的同步登录。这个层次的整合只需需要应用程序的注册和登录程序即可,注册通过接口将用户信息发送给UCenter,登录时候将用户提交的信息发送到UCenter进行验证,其他的相关操作还保持系统的原有操作即可。这个层 阅读全文
posted @ 2012-08-24 23:56 linzj 阅读(6935) 评论(0) 推荐(1) 编辑
摘要:摘要:本文主要介绍了利用webservice,session,cookie技术,来进行通用的单点登录系统的分析与设计。具体实现语言为PHP。单点 登录,英文名为Single Sign On,简称为 SSO,是目前企业,网络业务的用户综合处理的重要组成部分。而SSO的定义,是在多个应用系统中,用户只需要登陆一次就可以访问所有相互信任的应用系 统。动机:用过ucenter的全站登录方式的朋友,应该都知道这是典型的观察者模式的解决方案。用户中心作为subject, 其所属observer的注册和删除统一在ucenter的后台进行。而各个子应用站点都对应一个observer。每次用户中心的登录动作,都 阅读全文
posted @ 2012-08-24 08:42 linzj 阅读(42126) 评论(74) 推荐(19) 编辑
摘要:设计模式实例:Singleton(单例)表示类只能实例化一次,生成一个全局状态且单一的根对象,利用单例模式可以配置应用程序并定义应用程序中可能随时访问你的变量,缺点在于该对象没有封装任何系统功能,多数情况下使应用程序的单元测试和调试变得更加困难 1 <?php 2 class SingletonClass { 3 public static function getInstance(){ 4 static $instance = null; 5 if($instance == null){ 6 $instance = new Si... 阅读全文
posted @ 2012-08-08 00:41 linzj 阅读(812) 评论(0) 推荐(0) 编辑
摘要:一、理解面向对象基础知识面向对象的优势:1、具有扩展现有代码的功能2、允许类型提示,能够对传递给函数的变量进行更加严格的控制3、允许使用现有的设计模式,可以用来解决常见的软件设计问题并使用调试更加容易成员变量和成员方法:public(公有的)表示其修饰的成员可以通过PHP程序全局访问private(私有的)表示其修饰的成员仅可以被定义它的类访问protected(受保护的)表示其修饰的成员仅可以被定义它的类及派生类访问 static(静态的)表示成员不会绑定到类的某一特定的实例,可以被类的任意实例访问abstract(抽象的)抽象方法标志抽象类,必须定义类的所有子类加以实现final(终态的) 阅读全文
posted @ 2012-08-06 23:28 linzj 阅读(554) 评论(0) 推荐(0) 编辑
摘要:1. 写出如下程序的输出结果 1 <?php 2 $str1 = null; 3 $str2 = false; 4 echo $str1==$str2 ? '相等' : '不相等'; //相等 5 $str3 = ''; 6 $str4 = 0; 7 echo $str3==$str4 ? '相等' : '不相等'; //相等 8 $str5 = 0; 9 $str6 = '0';10 echo $str5===$str6 ? '相等' : '不相等'; //不 阅读全文
posted @ 2012-08-06 23:02 linzj 阅读(1026) 评论(0) 推荐(2) 编辑