07 2013 档案

摘要:Yii里获取当前controller和action的id 在控制器里$name = $this->getId(); // controller$name = $action->id; // action在视图里$name = $this->id = Yii::app()->controller->id; // controller$name = $this->action->id = $this->getAction()->getId(); // action 阅读全文
posted @ 2013-07-29 11:02 jami918 阅读(894) 评论(0) 推荐(0)
摘要:为了区分数据是否已转义,我还是建议定义一个命名机制。对于输出到客户机的转义数据,我使用$html数组进行存储,该数据首先初始化成一个空数组,对所有已过滤和已转义数据进行保存。1Welcome back, {$html['username']}.";67?>htmlspecialchars( )函数与htmlentities( )函数基本相同,它们的参数定义完全相同,只不过是htmlentities( )的转义更为彻底。通过$html['username']把username输出到客户端,你就可以确保其中的特殊字符不会被浏览器所错误解释。如果 us 阅读全文
posted @ 2013-07-19 18:13 jami918 阅读(330) 评论(0) 推荐(0)
摘要:如果你能正确可靠地识别和过滤输入,你的工作就基本完成了。最后一步是使用一个命名约定或其它可以帮助你正确和可靠地区分已过滤和被污染数据的方 法。我推荐一个比较简单的命名约定,因为它可以同时用在面向过程和面向对象的编程中。我用的命名约定是把所有经过滤的数据放入一个叫$clean的数据 中。你需要用两个重要的步骤来防止被污染数据的注入:经常初始化$clean为一个空数组。加入检查及阻止来自外部数据源的变量命名为clean.实际上,只有初始化是至关紧要的,但是养成这样一个习惯也是很好的:把所有命名为clean的变量认为是你的已过滤数据数组。这一步骤合理地保证了$clean中只包括你有意保存进去的数据, 阅读全文
posted @ 2013-07-19 17:26 jami918 阅读(460) 评论(0) 推荐(0)
摘要:没有不会犯错的开发者,PHP的错误报告功 能可以协助你确认和定位这些错误,可以提供的这些错误的详细描述,但如果被恶意攻击者看到,这就不妙了。不能让大众看到报错信息,这一点很重要。做到这一 点很容易,只要关闭display_errors,当然如果您希望得到出错信息,可以打开log_errors选项,并在error_log选项中设置出 错日志文件的保存路径。由于出错报告的级别设定可以导致有些错误无法发现,您至少需要把error_reporting设为E_ALL。E_ALL | E_STRICT 是最高的设置,提供向下兼容的建议,如不建议使用的提示。所有的出错报告级别可以在任意级别进行修改,所以您如 阅读全文
posted @ 2013-07-19 16:57 jami918 阅读(225) 评论(0) 推荐(0)
摘要:register_globals?本身并非安全风险。但是,它为跟踪用户输入和确保应用程序安全增加了难度。为什么会这样?因为如果打开 register_globals,在全局名称空间和 $_GET、$_POST 或 $_COOKIE 数组中,将创建 GET、POST 和 COOKIE 传递到 PHP 脚本的所有变量。下面是工作方式及其重要性的示例: 1 您应该注意几件事。第一,依靠 cookie 来判断用户是否已通过身份验证不是个好主意 —— 因为人们可以很容易地设置自己的 cookie 值。无论如何,此脚本的缺点在于,如果打开 register_globals,它就不具备安全性了。下面介绍名为 阅读全文
posted @ 2013-07-19 16:49 jami918 阅读(307) 评论(0) 推荐(0)
摘要:[Err] 1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause在有3个字段使用TIMESTAMP作为字段类型的时候,如果第二个字段为 default CURRENT_TIMESTAMP,第一个字段需要设置default,而且一个表中只能有一个default CURRENT_TIMESTAMP。。 阅读全文
posted @ 2013-07-17 10:37 jami918 阅读(461) 评论(0) 推荐(0)
摘要:相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问:1、我字段类型是not null,为什么我可以插入空值2、为毛not null的效率比null高3、判断字段不为空的时候,到底要 select * from table where column '' 还是要用select * from table where column is not null 呢。带着上面几个疑问,我们来深入研究一下null 和 not null 到底有什么不一样。首先,我们要搞清楚“空值” 和 “NULL” 的概念:1、空值是不占用空间的2、mysql中的NULL其实是 阅读全文
posted @ 2013-07-12 16:18 jami918 阅读(320) 评论(0) 推荐(0)
摘要:1 fopen() 函数打开文件或者 URL。如果打开失败,函数会返回 FALSE。语法:fopen(filename,mode,include_path,context)参数描述filename必需。规定要打开的文件或 URL。mode必需。规定要求到该文件/流的访问类型。可能的值见下表。include_path可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。context可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。mode 参数的可能的值:mode说明"r"只读方式打开,将文件指针指向文件头。 阅读全文
posted @ 2013-07-09 17:20 jami918 阅读(311) 评论(0) 推荐(0)