在开发应用的过程中,调试也是非常重要的一个环节,除了IDE支持的即时调试(如VS.PHP或IDE支持的调试功能),给Web应 用添加适当的调试信息也是非常有用的一个方法,开发过Java或.Net 应用的对log4XX都不陌生,Yii Framework中也提供了类似 的Log功能, Yii::log,它是作为CWebApplication一个内置的组件出现的。可以通过配置文件来配置(Yii中配置通常为 protected/config/main.php)。
上篇文章Yii Framework 开发简明教程(2) Yii Web应用基础简述了应用组件。
除Log组件外,Yii 预定义了一系列核心应用组件,提供常见 Web 应用中所用的功能。例如, request 组件用于解析用户请求 并提供例如 URL,cookie 等信息。 通过配置这些核心组件的属性,我们可以在几乎所有的方面修改Yii 的默认行为。
下面我们列出了由 CWebApplication 预定义的核心组件。
assetManager: CAssetManager - 管理私有资源文件的发布。
authManager: CAuthManager - 管理基于角色的访问控制 (RBAC)。
cache: CCache - 提供数据缓存功能。注意, 你必须指定实际的类(例如CMemCache, CDbCache)。 否则,当你访问此组件时将返回 NULL。
clientScript: CClientScript - 管理客户端脚本 (javascripts 和 CSS).
coreMessages: CPhpMessageSource - 提供 Yii 框架用到的 核心信息的翻译。
db: CDbConnection - 提供数据库连接。注意,使用此组件你必须配置其 connectionString 属性。
errorHandler: CErrorHandler - 处理未捕获的 PHP 错误和异常。
format: CFormatter - 格式化数值显示。此 功能从版本 1.1.0 起开始提供。
messages: CPhpMessageSource - 提供Yii应用中使用的信息翻译。
request: CHttpRequest - 提供关于用户请求的信息。
securityManager: CSecurityManager - 提供安全相关的服务,例如散列, 加密。
session: CHttpSession - 提供session相关的功能。
statePersister: CStatePersister - 提供全局状 态持久方法。
urlManager: CUrlManager - 提供 URL 解析和创建相关功能
user: CWebUser - 提供当前用户的识 别信息。
themeManager: CThemeManager - 管理主题。这些组件在后面的教程中将逐步介绍。下面给出Log功能使用的基 本方法:这里我们修改Yii Framework 开发简明教程(1) 第一个应用Hello World。为其添加日志。1. 创建配置文件 protected/config/main.php希望将日志写到一个文件中,可以使用如下配置:
// This is the main Web application configuration. Any writable// CWebApplication properties can be configured here.return array( // preloading 'log' component'preload'=>array('log'), // application components'components'=>array( 'log'=>array('class'=>'CLogRouter','routes'=>array(array('class'=>'CFileLogRoute','levels'=>'info,error, warning',), ),),), );
CLogRouter 信息路由 通过 Yii::log 或 Yii::trace 记录的信息是保存在内存中的。 我们通常需要将它们显示到 浏览器窗口中,或者将他们保存到一些 持久存储例如文件、Email中。这个就叫作 信息路由。
一般使用Log功能时,需要预 先载入Log组件,这是通过preload来配置的,preload 允许应用事先载入一些模块.提示: 默认情况下,应用元件是根据需要而 创建的。这意味着一个元件只有在被访问的情况下才会创建。 因此,系统的整体性能不会因为配置了很多元件而下降。有些应 用元件,(比如CLogRouter) 是不管用不用都要创建的。在这种情况下, 我们在应用的配置文件里将这些元件的ID列上: preload。
2. 修改入口脚本index.php ,配置主应用实例使用新创建的配置文件。
$yii='C:/yiiframework/yii.php'; // remove the following line when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true); $config=dirname(__FILE__).'/protected/config/main.php'; require_once($yii); Yii::createWebApplication($config)->run();3. 创建protected/runtime
因为日志文件写入的缺省目录为 protected/runtime 所以事先要创建好runtime 目录,否则Yii 将日志直接显示在网页上。
4. 这样就可以使用 Yii::log 或 Yii::trace 为应用添加日志。
其 区别是后者只在当应用程序运行在 调试模式(debug mode) 中时才会记 录信息。
Yii::log($message, $level, $category); Yii::trace($message, $category);
当记录信息时,我 们需要指定它的分类和级别 分类是一段格式类似于 路径别名 的字符串。 例如,如果一条信息是在 CController 中记录的, 我们可以使用 system.web.CController 作为分类。信息级别应该是下列值中的一种:
trace: 这是在 Yii::trace 中使用的 级别。它用于在开发中 跟踪程序的执行流程。
info: 这个用于记录普通的信息。
profile: 这个是性能概述(profile) 。下面马上会有更详细的说明。
warning: 这个用于警告(warning)信息。
error: 这个用于致命错误(fatal error)信 息。
Yii 的日志通过Level和Category进行分类和过滤,正如我们所提到的, 多个级别或分类应使用逗号连接。
由于 信息分类是类似 xxx.yyy.zzz 格式的,我们可以将其视为一个分类层级。 具体地,我们说 xxx 是 xxx.yyy 的父级,而 xxx.yyy 又是 xxx.yyy.zzz 的父级。 这样我们就可以使用 xxx.* 表示分类 xxx 及其所有的子级和孙级分类。
有了以 上知识,我们修改SiteController的actionIndex,添加一行日志。
public function actionIndex() { Yii::log("action","info","site.action"); $this->render("index"); }
5. 运行应用,可以看到Yii在protected/runtime 创建了一个application.log
其内容如下:
2012/12/11 21:23:38 [info] [site.action] action
注: 日志存放的位置和文件名都可以通过配置来修改,一般情 况使用缺省值就可以了,和log4X 类似,应用的日志可以通过路由同时写到多个目的地(文件,Email等)这些多可以通过配置 来实现,具体可以参见日志记录。
以上就是PHP开发框架Yii Framework教程(3) 为应用添加日志的内容,更多相关内容请关注PHP中文网(www.php.cn)!

phpientifiesauser'ssessionusessessionSessionCookiesAndSessionIds.1)whiwSession_start()被称为,phpgeneratesainiquesesesessionIdStoredInacookInAcookInamedInAcienamedphpsessidontheuser'sbrowser'sbrowser.2)thisIdAllowSphptptpptpptpptpptortoreTessessionDataAfromtheserverMtheserver。

PHP会话的安全可以通过以下措施实现:1.使用session_regenerate_id()在用户登录或重要操作时重新生成会话ID。2.通过HTTPS协议加密传输会话ID。3.使用session_save_path()指定安全目录存储会话数据,并正确设置权限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用会话构建高效购物车系统的步骤包括:1)理解会话的定义与作用,会话是服务器端的存储机制,用于跨请求维护用户状态;2)实现基本的会话管理,如添加商品到购物车;3)扩展到高级用法,支持商品数量管理和删除;4)优化性能和安全性,通过持久化会话数据和使用安全的会话标识符。

本文讨论了PHP中的crypt()和password_hash()之间的差异,以进行密码哈希,重点介绍其实施,安全性和对现代Web应用程序的适用性。

文章讨论了通过输入验证,输出编码以及使用OWASP ESAPI和HTML净化器之类的工具来防止PHP中的跨站点脚本(XSS)。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载
最流行的的开源编辑器

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3 英文版
推荐:为Win版本,支持代码提示!