手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

PHP编码规范

这是一份比较老的规范了,不是我写的,事实上现在看起来也并不是特别的完善,但不要忘了,它是几年前的东西。
其实规范这玩意,只是大家用来忽悠的一套玩意,说有用吧,其实每个人的习惯都不一样,强制规范一下,确实很痛苦,但是不规范吧,如果团队中开发的人很多,那就非常痛苦了。

事实上我更希望是通过IDE来进行格式化,但,每个人喜欢的IDE都不一样,这确实很痛苦。很让人郁闷。。。嗯 。我的代码一般是用NetBeans进行格式化的。定义好formatter后,按alt+shift+f格式化。

这几句话不错:

XML/HTML代码
  1. 标准不是项目成功的关键,但可以帮助我们在团队协作中有更高的效率并且更加顺利的完成既定的任务。  
  2. 1. 程序员可以了解任何代码,弄清程序的状况  
  3. 2. 新人可以很快的适应环境  
  4. 3. 防止新接触PHP的人出于节省时间的需要,自创一套风格并养成终生的习惯  
  5. 4. 防止新接触PHP的人一次次的犯同样的错误  
  6. 5. 在一致的环境下,人们可以减少犯错的机会  
  7. 6. 程序员们有了一致的敌人   

上附件 。。。

附件: php编码规范.chm (45.93 K, 下载次数:2072)

Tags: php, 编码规范

XSS 的一些资料

Tags: xss

转:Paypal IPN接口开发小结

之所以转载这篇文章,不是因为他实现了多少代码,而是说文章中会有一些遇到的问题和解决方法。
前一段时间也做了alipay和tenpay的接口编码,其实说白了这些东西都差不多。只是因为这篇文章中说的是https接口,会有点不太一样。
alipay和tenpay最终都是跳转到对方的网站上做进一步的支付的,paypal可能不太一样(没仔细折腾过,所以才要转这篇)

上原文:http://shiningray.cn/paypal-ipn.html

最近终于搞定了该死的Paypal ipn,特地在此留下点东西备忘。
所谓paypal ipn(Instant Payment Notification),就是Paypal开发的一种能主动通知第三方卖家系统交易状态的一种机制。IPN的原理很简单,就是当产生了一个交易之后, 交易状态发生变化时,如用户已经付款、或者退款、撤销时,Paypal利用常用的HTTP POST方式,将交易的一些变量提交给网站的某个页面(称之为IPN Handler),当这个页面接受到请求时候,将这些数据原封不动加上一个指示验证的cmd=_notify-validate,POST回Paypal的接口地址,如果数据正确,那么Paypal返回字符串VERIFIED,否则为INVALID,如果结果为VERIFIED,那么你的程序就可以使用这些数据进行操作。
但代码的调试是一件很痛苦的事情,因为作为第三方开发人员,不可能开两个帐号,每次测试还要之间交易一些钱,所以Paypal专门开发了Sandbox给开发人员进行开发,首先到https://developer.paypal.com/ 注册一个开发帐号,好了之后再进入Sandbox建立测试用的Paypal虚拟帐号(至少应该建立一个Business的和一个Personal的),这 种账号注册方法和Paypal的流程一样,信息可以是假的,包括银行帐号、信用卡(其实Paypal Sandbox会自动生成一些随机的号码)。接下来需要激活Paypal Sandbox的虚拟帐号,注意,这里不管你在Paypal Sanbox注册时填什么邮件地址,有任何发送到虚拟帐号所填邮箱的邮件都存会在开发帐号的管理界面中的Email页(导航栏上有)中。登录 Sandbox的虚拟Paypal环境,还需要验证虚拟帐号的银行,这里可以随便填,然后通过Add Funds来给账户充值(想填多少填多少)。然后,还需要激活IPN的选项,在Business的那个账户的Profile设置页面中,点击,然后点击 Edit按钮,打开IPN,这里如果你使用的是固定的IPN Handle,可以直接将地址填入。
接下来,我们测试的时候,应该将Paypal接口的地址设置为https://www.sandbox.paypal.com/cgi-bin/webscr
最后基本的流程为:

  • 用户在我们的网站上选择商品、放入购物车,然后检查准备支付
  • 网站根据购物车中的商品,生成Paypal的支付表单(也是提交到上面IPN用的Paypal接口地址),包含了此次交易的一些信息(下次会专门找机会解释一下)。并在自己的数据库中生成一张订单记录。
  • Paypal在Session中记录下这些交易信息
  • 用户用Paypal账户登录Paypal(Sandbox用Sandbox的虚拟帐号),复查明细,点击Pay按钮
  • Paypal进行交易处理,如果我们的Paypal收款帐号在接受帐款上没有什么问题(没有特别的需要在界面上“Accept”的地方),交易完成,那么Paypal会发送一个IPN,并发送提示邮件。
  • 我们IPN Handler接受到信息,首先向Paypal进行校验,如果信息正确,然后根据信息和自己数据库中进行比对,如果无误,可以将支付信息保存,并修改订单状态。
  • 然后Paypal会显示一个界面表示交易完成,此时如果用户点击“Return”按钮,Paypal会将用户送回我们网站指定地点。
  • 我们网站迎接用户回来,向用户表示感谢,并进行提醒,给出订单号等等。

整个流程基本如下,不过其中有很多要注意的地方:

  1. 我们看到了,接口地址是https开头的,也就是要求使用SSL进行连接, 其实Paypal Sandbox可以使用http,但是最后实际的Paypal接口,不支持http协议,所以如果你用PHP写IPN Handler脚本的话,在验证信息的代码部分,如果简简单单使用fopen、HTTP_Request之类的工具是没用的,PHP的socks库不支持SSL,应该使用curl,有两种方法,一个是使用PHP扩展中的libcurl,Paypal官方发布的SDK中便是使用的这个方法,但Paypal的SDK非常复杂,如果想自己写,可以使用Snoopy,一个简单实用的PHP请求库(它自己说是模拟了浏览器的行为),而它使用的是Curl的可执行文件,通过管道获得结果,而非php的libcurl,所以自己cURL的主页上下载一个支持SSL的编译版本,可能还需要安装OpenSSL,不过对于Linux系统,可能应该会都带。
  2. 在支付表单中,可以自己设置notify_url字段,来指定此次交易的信息应该发送到哪个地方,这样就可以覆盖在Profile中我们的设置,另外,这个字段要进行urlencode
  3. 我们得到的IPN信息中,status对应的便是交易状态,如Complete表示完成,首字母大写,而验证结果则是VERIFIEY或者INVALID,全部大写,具体的内容,可以查看Paypal官方的文档订单管理整合指南

--EOF--
文章虽老,但值得参考一下。

Tags: paypal, payment

netbeans and PHPdocs

我不知道是我的PHPDOC版本有问题还是有我的netbeans版本有问题,反正,我在netbeans里调 用生成phpdoc没有成功
但是我在命令行下,以及WEB管理界面,我都成功生成了。

OK说一下我的步骤
1、下载phpdocumentor并解压到某个目录
2、修改phpdoc.bat,把set PHPCli的路径改成我的PHP实际路径
3、在命令行下运行phpdoc,会提示你选择哪一个INI文件,选择0.即使用默认的phpdocumentor.ini
4、然后运行。。phpdoc -d xxx -t xxx就over了。
这是最简单的方法
然后是进入WEB管理,这时候,要把phpdocument解压到WEB可访问的目录下,打开http://localhost/xxx/phpdoc.php会跳转到builder目录下
然后设置一下directoy目录和Target目录。同时也可以选择生成的格式,最后选择create,就直接创建成功了。。

然而我在官方的介绍下(视频)我却没有配置成功。。。不知道怎么回事,想知道官方是怎么下载的,可以到官方看一下视频。。。地址是:http://netbeans.org/kb/docs/php/screencast-phpdoc.html



如果觉得我说的简单,这里有一份比较详细的介绍:

http://gyxuehu.iteye.com/blog/582517
  1. 写文档是一项乏味却不得不做的工作,而编写API级的文档更是意味着大量的重复劳动和难以保持的一致性。这里我们要推荐给大家的,是支持PHP5语法分析的文档工具——phpDocumentor。  
  2.   
  3. 使用phpDocumentor不仅可以自动从代码中提取出函数和方法定义,还可以自动处理各个class之间的关系,并据此生成class tree。你还可以选择将文档生成html、chm或者pdf。有了phpDocumentor,文档工作变得轻松了很多。  
  4.   
  5.   
  6. 安装phpDocumentor  
  7.   
  8. 在pear下安装phpDocumentor是一件极其简单的事情,只需要在cmd窗口中cd 到php安装目录下,然后输入  
  9.   
  10. Pear install phpDocumentor  
  11.   
  12.   
  13. Pear就会自己下载并完成phpDocumentor的安装。  
  14.   
  15. 在phpDocumentor成功安装后,php安装目录下会多出来一个phpdoc.bat。这个文件就是我们用来生成文档的批处理文件了。  
  16.   
  17. 〈? 相关知识 ?〉   
  18.    
  19.   
  20. phpDocumentor是phpDoc的升级版本,是专门为支持php5语法而重写的文档工具,当你的php版本为5时,运行phpDoc.bat,它会自动去调用phpDocumentor。所以文章中的提到的phpDoc和phpDocumentor实际上是相同的。  
  21.   
  22. 在phpdoc.bat所在目录下,输入  
  23.   
  24. Phpdoc –h  
  25.   
  26. 会得到一个phpDocumentor的详细参数列表。  
  27.   
  28. 我们从其中选出几个常用的来看看:  
  29.   
  30. 〈? 命令解释 ?〉  
  31.   
  32. -f  
  33. 要进行分析的文件名,多个文件用逗号分割  
  34.   
  35. -d  
  36. 要分析的目录,多个目录用逗号分割  
  37.   
  38. -t  
  39. 生成的文档的存放路径  
  40.   
  41. -o  
  42. 输出的文档格式,结构为输出格式:转换器名:模版目录,例如:HTML:frames:phpedit   
  43.    
  44. 我们会用到的就这几个了,其他的命令请大家阅读help的提示信息。  
  45.   
  46. 试用phpDocumentor  
  47.   
  48. 下面我们就以pear中的phpUnit2为例,演示一下如何使用phpDocumentor来生成文档。  
  49.   
  50. 首先,把我们需要的参数确定下来:  
  51.   
  52. 〈? 命令参数 ?〉  
  53.   
  54. -d  
  55. C:Program FilesEasyPHP5phpPEARPHPUnit2  
  56.   
  57. -t  
  58. C:Program FilesEasyPHP5phpphpunit2doc  
  59.   
  60. -o  
  61. HTML:frames:phpedit   
  62.   
  63.   
  64. 根据上边的参数,我们组合出下边的命令:  
  65.   
  66. Phpdoc -d “C:\Program Files\EasyPHP5\php\PEAR\PHPUnit2” -t “C:\Program Files\EasyPHP5\php\phpunit2doc” -o “HTML:frames:phpedit”  
  67. 运行上边的命令后,phpDocumentor开始解析源文件并输出工作信息。  
  68.   
  69. 命令运行完成后,我们的文档就已经生成好了。 进入我们指定的目标目录,用浏览器打开index.html就可以看见生成的文档了。 文档界面由frame分成了三个部分,左上是包信息,左下是导航信息,右边则是详细的信息呈现页。  
  70.   
  71. 上边的图很清楚地描述出了文档的内容: (膘叔:原文就没有图。)
  72.   
  73. 索引、函数列表、类列表、文件列表和子包。  
  74.   
  75. 点击上边的class(es)链接,我们可以清晰的看见整个包的class tree。  
  76.   
  77.    
  78.   
  79.   
  80. 我们点击其中一个class,就进入了class的描述页面。  
  81.   
  82. Class描述页面主要包含以下几方面内容:  
  83.   
  84.    
  85.   
  86. l 描述:版权、作者、类层次等  
  87.   
  88. l 类变量  
  89.   
  90. l 类常量  
  91.   
  92. l 方法  
  93.   
  94. l 继承的变量  
  95.   
  96. l 继承的方法:非常有用的一个功能  
  97.   
  98. 怎么样,是不是很详细呢?如果要生成chm,可以把前边的-o参数改为”CHM:default: default”,这样phpDocumentor会为你生成好chm项目文件,只要用微软的chm工具进行编译就可以得到可用的chm文件了。  
  99.   
  100.   
  101. 用phpDocumentor为自己的代码生成文档  
  102.   
  103. 虽然phpDocumentor可以自动从代码中分析出一些信息,但是,要形成一份详尽的文档还是需要我们在编码中进行配合的。为了让phpDocumentor读懂我们的代码,我们需要注意一些编码规范和在注释中增加一些tag:  
  104.   
  105. 〈? Tags ?〉  
  106.   
  107. @author  
  108. 作者信息  
  109.   
  110. @const  
  111. 由define定义的常量  
  112.   
  113. @deprecate  
  114. 不建议使用的API  
  115.   
  116. @global  
  117. 全局变量  
  118.   
  119. @package  
  120. 包信息  
  121.   
  122. @param  
  123. 函数参数  
  124.   
  125. @return  
  126. 返回值  
  127.   
  128. @see  
  129. 参考函数  
  130.   
  131. @since  
  132. 引入时间  
  133.   
  134. @static  
  135. 静态变量  
  136.   
  137. @var  
  138. 类成员变量   
  139.   
  140. 这里只是简单的列出了常用的一些Tag,大家可以阅读phpDocumentor的文档,里边有非常详细的编码规范。关于phpDocumento就介绍到这里,希望大家都能好好利用这个工具来规范自己的文档。  
  141.   
  142. PS:phpDocumentor也有Web界面的,你可以访问http://phpdoc.org获取Web版本。Web版本的安装很简单,直接放到web可以访问的目录就可以运行了。  
  143.   
  144.   
  145. 〈? 环境要求 ?〉  
  146.   
  147. PHP:5.0.0  
  148.   
  149. OS: 平台独立,本文演示OS为windows   

这里还有一篇操作步骤的:

http://xieye.iteye.com/blog/229131
  1. phpDocumentor有两种正式的安装方法。  
  2. (以下都翻译自pear.php.net的文档, -- xieye --)  
  3.   
  4. 第一种方式是从pear.php.net 或 sourceforge.net下载压缩包并解压。另一种方式是通过pear安装  
  5.   
  6. 注意:以下假定用户使用PHP5,window系统!  
  7.   
  8. 第一种方法:  
  9. 下载后,如果希望使用命令行接口,解压到任意路径(假设在C:\Program Files\),  
  10. 修改C:\Program Files\PhpDocumentor-1.4.2\phpdoc.bat  
  11. 把第一行修改SET phpCli=C:\usr\local\php\cli\php.exe  
  12. 令等号右边的值为php.exe的路径  
  13. 我的机器是SET phpCli=D:\php5\php.exe  
  14.   
  15. 在命令行输入C:\Program Files\PhpDocumentor-1.4.2\phpdoc,其实是一个批处理文件  
  16. 会出现一个dos界面,给你选择ini文件。  
  17. 后面就不知道了。  
  18.   
  19.   
  20. 如果想使用web接口,你必须先把apache和php装好,把PhpDocumentor-1.4.2这个文件夹  
  21. 拷贝到文档根目录下,然后在浏览器url栏输入:  
  22. http://localhost/PhpDocumentor-1.4.2/phpdoc.php  
  23. 然后浏览器会自动跳转,选择index.html,后面的操作就很简单了。  
  24.   
  25.   
  26.   
  27.   
  28.   
  29. 第二种方法:通过pear安装  
  30. 进入dos的php目录  
  31. 输入pear install -a PhpDocumentor  
  32.   
  33. 如果想使用web接口,则必须首先改变一个配置,  
  34. pear config-set data_dir /path/to/document_root/pear  
  35. 最后的路径应该是/php文档根路径/pear  
  36. (也可以在web接口中改变这个值)  
  37.   
  38. 我没在第二种方法的web接口试验成功。  
  39.   
  40.   
  41. 如果使用web接口的话,还有选择,  
  42. 一种是每次都选择输入文件,输出文件之类。  
  43. 另一种是使用一个配置文件,里面把什么都定义好,  
  44. 进入页面后,先选择这个配置文件,然后点击“创建”按钮,  

Tags: netbeans, phpdoc

闲下来的学习

最近,明显是空了很多,于是我看了一下以前的代码,再看看网上那些开源的代码,拿来与我自己曾经写的代码进行验证这样可以了解别人的优点。知道自己的缺点在哪里。

1、xweibo,这个玩意目前很流行,腾讯也出了个iweibo,反正说白了,如果你是用接口,那无非就那么点东西。根据接口拉拉数据,你也不用关系他们的数据结构和其他的代码等。当然如果你要整合到你自己的系统里就不是这么简单啦。所以,我在看xweibo是怎么个折腾法。。。。所幸,你看xweibo的index.php文件里,被注释了很多代码那就是xweibo的一些常用方法,看看就差不多了。。。

2、sablog for Yii前台基本完成,目前已经完成:文章列表、回复列表、标签云、标签云对应文章列表,首页,侧边栏也基本完成。待完成的有:友情链接页,文章内容页,高级搜索页,搜索结果页等(文章内容页里的东西最多,有考虑象以前想过的,本博客历史上的今天,关联文章,回复,等等,太多了。。当然还要考虑预留点广告位,方便自己塞广告。文章内容,也还得考虑那些程序的语法标签,附件,缩略图。。。。唉)

通过设置,现在的Url规则也尽量与原来一致,这样我如果切换的话,几乎就可以平移了。。

大小: 57.3 K
尺寸: 458 x 376
浏览: 1853 次
点击打开新窗口浏览全图

把官方这段贴上来,http://www.yiiframework.com/doc/guide/1.1/zh_cn/topics.url。。。不是照抄就能用的,得看清楚一些符号。。黑黑

我们使用一些例子来解释网址工作规则。我们假设我们的规则包括如下三个:

array(
'posts'=>'post/list',
'post/<id:\d+>'=>'post/read',
'post/<year:\d{4}>/<title>'=>'post/read',
)
  • 调用$this->createUrl('post/list')生成/index.php/posts。第一个规则适用。

  • 调用$this->createUrl('post/read',array('id'=>100))生成/index.php/post/100。第二个规则适用。

  • 调用$this->createUrl('post/read',array('year'=>2008,'title'=>'a sample post'))生成/index.php/post/2008/a%20sample%20post。第三个规则适用。

  • 调用$this->createUrl('post/read')产生/index.php/post/read。请注意,没有规则适用。

总之,当使用createUrl生成网址,路线和传递给该方法的GET参数被用来决定哪些网址规则适用。如果关联规则中的每个参数可以在GET参数找到的,将被传递给createUrl ,如果路线的规则也匹配路线参数,规则将用来生成网址。

Tags: xweibo, iweibo, yii, sablog