随着PHP开发框架的普及,越来越多的开发者开始使用ORM进行数据库的操作。 在使用ORM时,数据表间关系的设置往往被很多开发者忽略。 数据表间关系,主要有四种: 一对一关系(has one) 一对多关系(has many) 多对多关系(many to many) 从属关系(belongs to) 本文主要讨论一对一关系与从属关系的区别。 一对一关系(has one) 用于主表的定义中,指主表(primary table)每行记录,在从表(foreign table)中只有一行记录对应。 从属关系(belongs to) 用于从表的定义中,指从表(foreign table)中的每行记录,在主表(primary table)中都有一行记录对应。 一……阅读全文
技术
ORM中,belongs to与has one的区别
2010年2月18日万能密码
2010年2月15日作者:Hackfan 什么是万能密码? 一个特定的字符串,用它能通过特定系统的验证程序,这个字符串被称为万能密码。 万能密码设置的原因 有意设置 (公开)设置万能密码以防密码丢失或遗忘 (公开)系统的默认密码 (保密)开发者有意留下后门,在必要且合法的情况下使用,以解决实际问题 (保密)开发者有意留下后门,以达到某种非法目的 无心设置 因系统、协议或编程出错等原因,无意留下的漏洞 万能密码的种类 默认密码 默认密码是系统出厂或者复位时,自动设置的固定字符串。大多数系统自带默认帐号、密码,如TP-LINK路由器的默认帐号、密码均……阅读全文
【译】最佳安全实践——来自雅虎开发者网络
2010年2月9日【原文】http://developer.yahoo.com/security/ 【译文】http://jiy.hu/security-best-practices 【译者】Hujiy ( Hackfan ) Yahoo在处理用户个人资料安全性的问题上,十分谨慎,我们希望我们的开发者也同样如此。以下是一些指导,帮助你保护你的应用程序用户的信任。 保护你的服务器 保护你的网络 保护你的应用 防止伪造请求 防止跨站脚本 保护你的服务器 首先,确保你给系统打上了最新的安全补丁。如果你无法操作自己专用的服务器,请询问你的主机商,他们是否保持系统处于最新版。 确保你已安装了操作系统的最新安全补丁。 FreeBSD 安全 RedHa……阅读全文
代码优化之我见
2010年2月8日适当的代码优化应该或可以 减少程序行数 减少复杂逻辑 增加可读性 加快运行速度 优化程序结构 加速排错过程 方便代码复用 但是适当的代码优化需要 经验 责任心 动脑子 思考时间 某些程序员甚至是项目经理,经常以“项目时间紧”、“先实现功能为主”为由,无视代码优化,甚至把代码优化当做项目实施的绊脚石、眼中钉。我认为可能的原因: 没意识 没能力 懒惰 代码优化注重程序员的架构能力,而非实现能力。有些程序员在数据结构、数据库上的设计,就决定了其代码结构的混乱以及相应实现的糟糕。因此,项目的设计和架构必须由……阅读全文
代码优化之分页输出
2010年2月8日分页代码是PHPer接触的最多的代码之一。很多PHPer都自行实现过分页程序,或者用过相关的分页函数。 分页函数 首先回顾一下分页函数的输入与输出。我们拿一个较简单的模型来做说明。 函数输入: 记录总数 每页记录数 当前页数 函数输出 偏移量$offset、记录数$limit(在MySQL中执行LIMIT $limit OFFSET $offset) 总页数$total_pages 上一页$previous_page 当前页$current_page 下一页$next_page 分页导航栏 今天,我让一同事根据以上效果,开发一个分页导航,满足以下要求: 显示离当前页最近的5页,包括当前页 不……阅读全文
为Linode VPS添加多个IP指南
2010年2月7日够买额外IP 1、在Linode后台选中所要添加IP的VPS,在Extras中的Additional IPs下拉框中,选择增加1个IP的付费方式(月付、年付)。 2、生成订单、确定订单 3、支付,一般是信用卡直接划账。Linode的账单金额的计算方式: 自购买日起算(如2010年2月6日23点够买,则服务开通按照2010年2月26日算) 到自然月为一个结算周期(够买日起到2010年2月28日为一个结算周期) 账单金额=(月总金额÷自然月天数×服务天数),不足0.01元按0.01元算。 如上图,1÷28×(28-5)=0.821428≈0.83 收货 在Networks中,查看当前VPS的IP信息: 多出来的IP地址就……阅读全文
【译】Lazy Load(网页图片缓载)
2010年2月5日【原文】http://www.appelsiini.net/projects/lazyload 【译者】Hujiy ( Hackfan ) Lazy load是一个jQuery插件。他能够延迟加载网页(特别是很长的网页)中的图片。在用户可视区域外的图片,直到用户看到它们时,才会被加载。这一点与图片预加载的做法是截然相反的。 在一张很长且包含很多大图片的网页上,采用Lazy Load,会使得网页加载速度变快。浏览器在加载可视的图片后,停留在“完成”状态。Lazy Load对降低服务器负载也有帮助。 (译者注:译者认为Lazy Loader旨在降低服务器负载、带宽与并发数,也可以加快单张图片的加载速度……阅读全文
漫谈引号及转义-与正则表达式、SQL结合
2010年1月31日高级语言已能灵活、优雅地处理字符串操作了,在PHP中,对变量赋以字符串十分简单: $str = "Hello, World!"; $str = 'I am very happy.'; 单引号与双引号的区别,是许多PHPer晶晶乐道的话题。除了功能区别外,运行速度也是大家讨论的焦点。先说两者在功能上的区别。 单引号是标注字符串最简单的方法,单引号的转义规则极其简单:只需对’和\进行转义: $str = 'My document\'s path is D:\\documents\\'; //$str的内容为:My document's path is D:\documents\ 与单引号不同,双引号不仅支持更多的转义符号,还支持引用变量内容: $path = "D:……阅读全文
也谈WordPress在Nginx下的Rewrite规则
2010年1月29日作为新兴的Webserver软件,Nginx越来越多的被部署在各种的环境下,起着不同但高效的作用。不少朋友都在自己的VPS上部署Nginx来作为Webserver。张宴的文章介绍了Nginx的高性能,LNMP则帮助我快速在CentOS下建立Nginx+MySQL+PHP环境。 目前在Google上搜索“WordPress Nginx Rewrite”,比较流行的一则Nginx Rewrite配置如下: if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } 这……阅读全文