文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>php manual(11)

php manual(11)

时间:2007-07-19  来源:skilldream


第十二章 数据安全
1,使用Sanitize
Cake使用Sanitize来避免用户提交的恶意请求或者其他不希望的结果。Sanitize是一个核心库,所以你可以在代码的任何地方使用,但是最好还是在controllers或者models中使用


// 实现包含这个库文件

uses('sanitize');

// 接下来,创建一个Sanitize对象

$mrClean = new Sanitize();

//下面你可以使用Sanitize来检测数据,具体方法下一节介绍

2.在SQL和HTML中使数据安全
本节主要介绍如何用Sanitize提供的方法
●paranoid($string, $allowed = array())

$badString = ";:@@#";

echo $mrClean->paranoid($badString);

// output: scripthtml

echo $mrClean->paranoid($badString, array(' ', '@'));

// output: scripthtml    @@

●html($string, $remove = false)   

$badString = 'HEY

';

echo $mrClean->html($badString);

// output: HEY

/font><script>

</script>

echo $mrClean->html($badString, true);

// output: font size=99 color=#FF0000 HEY fontscript

script
●sql($string)
       添加/号使得SQL语句是小,/号取决于用户系统当前的magic_quotes_gpc设定
●cleanArray(&$toClean)


第十三章 cake的session组件
       cake存数session有三种方法:临时文件,php机制,数据库实现。默认情况下,cake使用php机制。如果使用临时文件或者是数据库,请在/app/config/core.php文件中修改CAKE_SESSION_SAVE成为cake,php,database三种之一。


/**

* CakePHP includes 3 types of session saves database or file. Set this to your preferred method.

* If you want to use your own save handler place it in app/config/name.php

*DO NOT USE file or database as the name. and use just the name portion below. *

* Setting this to cake will save files to /cakedistro/tmp directory

* Setting it to php will use the php default save path Setting it to database will use the database

*/

define('CAKE_SESSION_SAVE', 'php');
如果要使用数据库来存储session,可以在数据库中创建一个新的表,表的结构可以在/app/config/sql/sessions.sql找到

2. 使用cake的session组件
       Cake seesion组件用来和session信息交互,包括基本的session的读写操作,同时也包括一些利用session表示信息的一些特性。如果你想使用session组件,确定有如下代码


class SomeController extends AppController

{

    var $components = array('Session');

}
下面是一些你可能使用的方法
●check($name)
○检查一下当前$name确定的key是否设置到session中
●del($name) and delete($name)
○删除$name确定的session
●error()
       ○返回最近的错误
●flash($key = 'flash')
       ○返回最新的使用setFlash()的信息,如果$key设置了,那么返回的是$key存储的信息●read($name = null)
       ○读$name确定的session
●renew()
       ○重新创建当前活跃的session,删除旧的id,并创建新的id,并将就的session值传递给新的session中
●setFlash($flashMessage, $layout = 'default', $params = array(), $key = 'flash')
       ○将$flashMessage中的message写入到session(或者待会儿被flash()取走),如果$layout设置成default,消息将会存储为''.$flashMessage.''.如果设置为空, 消息将按照传递过来的样子存储。传递过来的信息将在Cake View中按照$layout存储起来。●valid()
       ○如果session可得,则返回true
●write($name, $value)
       ○将$name和$value确定的变量写入到当前活跃的session中
第十四章 处理请求组件(the request handler component)
1. 介绍
       Request Handler组件用来监测HTTP请求的信息。你可以使用它在controller中更好的了解ajax请求,得到远程客户端的ip以及请求的类型,或者过滤掉不想要的信息,使用这个组件,你需要确定它在controller的$componets数组中,如下

class ThingsController extends AppController

{

    var $components = array('RequestHandler');

//


}
2. 得到客户端或者请求信息
●getAjaxVersion()
       ○返回version
●getClientIP ()
       ○返回客户端ip
●getReferrer ()
       ○返回服务器名称
●isAjax()
       ○返回当前请求是否是XMLHttpRequest
●isGet()
       ○返回是否通过GET方法
●isMobile()
       ○返回是否移动浏览器
●isPost()
       ○返回是否是Post方法
●isPut()
       ○返回是否是Put方法

3. 过滤掉数据
有些情况下,你想要将请求或者输出中删除掉一些数据。
●stripAll($str)
       ○过滤掉空格,图像,脚本
●stripImages($str)
       ○过滤掉图像
●stripScripts($str)
       ○过滤掉脚本
●stripTags($str, $tag1, $tag2, $tag3...)
       ○过滤掉标签

$someString = 'Foo Bar';

echo $this->RequestHandler->stripTags($someString, 'font', 'bold');

// output: Foo BarstripWhitespace($str)

●stripWhitespace($str)
    ○过滤掉空格
4. 其他有用的方法
       当用户请求中含有ajax请求,Request Handler组件就十分有用。setAjax()方法用来自动检测Ajax求情,并且设置controller的layout到请求的ajax layout。


// list.thtml

ul>

foreach ($things as $thing):?>

li>php echo $thing;?>li>

endforeach;?>

ul>


//-------------------------------------------------------------


//The list action of my ThingsController:

function list()

{

    $this->RequestHandler->setAjax();

    $this->set('things', $this->Thing->findAll());



相关阅读 更多 +
排行榜 更多 +
战地奇兵先锋队2 v2.0 安卓版

战地奇兵先锋队2 v2.0 安卓版

飞行射击 下载
战地奇兵先锋队2 v2.0 安卓版

战地奇兵先锋队2 v2.0 安卓版

飞行射击 下载
战地奇兵先锋队2 v2.0 安卓版

战地奇兵先锋队2 v2.0 安卓版

飞行射击 下载