网站建设丿金手指15制作网站的技术
网站建设丿金手指15,制作网站的技术,可以把网站生成软件,泰安建设工程信息网一.调试模式 define(APP_DEBUG, true); 调试模式的优势在于#xff1a; 开启日志记录#xff0c;任何错误信息和调试信息都会详细记录#xff0c;便于调试#xff1b; 关闭模板缓存#xff0c;模板修改可以即时生效#xff1b; 记录SQL日志#xff0c;方便分析SQL…一.调试模式 define(APP_DEBUG, true); 调试模式的优势在于 开启日志记录任何错误信息和调试信息都会详细记录便于调试 关闭模板缓存模板修改可以即时生效 记录SQL日志方便分析SQL 关闭字段缓存数据表字段修改不受缓存影响 严格检查文件大小写即使是Windows平台帮助你提前发现Linux部署可能导致的隐患问题 通过页面Trace功能更好的调试和发现错误 SHOW_ERROR_MSG true, // 显示错误信息 SHOW_ERROR_MSG false, ERROR_MESSAGE 发生错误 ERROR_PAGE /Public/error.html LOG_RECORD true, // 开启日志记录 LOG_LEVEL EMERG,ALERT,CRIT,ERR, // 只记录EMERG ALERT CRIT ERR 错误 // 显示页面Trace信息 SHOW_PAGE_TRACE true,断点调试可用trace()方法 变量调试 dump()方法 性能调试 G()方法 错误调试 E()方法 模型调试 getLastSql()方法 getDbError()方法 二.数据缓存 缓存类型包括Apachenote、Apc、Db、Eaccelerator、File、Memcache、Redis、Shmop、Sqlite、Wincache和Xcache S(array( typememcache, host192.168.1.10, port11211, prefixthink, expire60) ); 快速缓存Data数据保存到指定的目录 F(data,$Data,TEMP_PATH); 查询缓存 $Model-cache(cache_name)-select(); $value S(cache_name); SQL解析缓存 DB_SQL_BUILD_CACHE true, 静态缓存 HTML_CACHE_ON true, // 开启静态缓存 HTML_CACHE_TIME 60, // 全局静态缓存有效期秒 HTML_FILE_SUFFIX .shtml, // 设置静态缓存文件后缀 HTML_CACHE_RULES array( // 定义静态缓存规则 // 定义格式1 数组方式 静态地址 array(静态规则, 有效期, 附加规则), // 定义格式2 字符串方式 静态地址 静态规则, ) 三.安全 输入过滤 使用系统内置的I函数是避免输入数据出现安全隐患的重要手段I函数默认的过滤方法是htmlspecialchars I(get.title,,strip_tags); // 用strip_tags过滤$_GET[title] $this-data($data)-filter(strip_tags)-add(); 表单合法性检测 namespace Home\Model; class UserModel extends \Think\Model{ protected $insertFields array(account,password,nickname,email); protected $updateFields array(nickname,email); } 在使用的时候我们调用create方法的时候会根据提交类型自动识别insertFields和updateFields属性 M(User)-field(account,password,nickname,email)-create(); 表单令牌 在应用或者模块的配置目录下面的行为定义文件tags.php中 return array( // 添加下面一行定义即可 view_filter array(Behavior\TokenBuild), // 如果是3.2.1版本 需要改成 // view_filter array(Behavior\TokenBuildBehavior), ); TOKEN_ON true, // 是否开启令牌验证 默认关闭 TOKEN_NAME __hash__, // 令牌验证的表单隐藏字段名称默认为__hash__ TOKEN_TYPE md5, //令牌哈希验证规则 默认为MD5 TOKEN_RESET true, //令牌验证出错后是否重置令牌 默认为true 模型类在创建数据对象的同时会自动进行表单令牌验证操作如果你没有使用create方法创建数据对象的话则需要手动调用模型的autoCheckToken方法进行表单令牌验证。如果返回false则表示表单令牌验证错误 防止SQL注入 系统会对数据进行强制的数据类型检测并且对数据来源进行数据格式转换 escape_string $Model-where(id%d and username%s and xx%f,array($id,$username,$xx))-select(); 对所有公共的操作方法做必要的安全检查防止用户通过URL直接调用不要缓存需要用户认证的页面对用户的上传文件做必要的安全检查例如上传路径和非法格式如非必要不要开启服务器的目录浏览权限对于项目进行充分的测试不要生成业务逻辑的安全隐患这可能是最大的安全问题最后一点做好服务器的安全防护 四.类库扩展 公共类库 指ThinkPHP/Library目录下面的类库 如果你的类库没有采用命名空间的话需要使用import方法先加载类库文件然后再进行实例化例如我们定义了一个Counter类位于Com/Sina/Util/Counter.class.php 应用类库 在应用或者模块目录下面的类库 驱动扩展 缓存驱动默认位于Think\Cache\Driver命名空间下面 提供了包括APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache缓存方式的驱动扩展缓存驱动必须继承Think\Cache类并实现下面的驱动接口 五.专题 session(array(namesession_id,expire3600)); session(name,null); // 删除name session(null); // 清空当前的session session([pause]); // 暂停session写入 session([start]); // 启动session session([destroy]); // 销毁session session([regenerate]); // 重新生成session id $User M(User); // 实例化User对象 $count $User-where(status1)-count();// 查询满足要求的总记录数 $Page new \Think\Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数(25) $show $Page-show();// 分页显示输出 // 进行分页数据查询 注意limit方法的参数要使用Page类的属性 $list $User-where(status1)-order(create_time)-limit($Page-firstRow.,.$Page-listRows)-select(); $this-assign(list,$list);// 赋值数据集 $this-assign(page,$show);// 赋值分页输出 $this-display(); // 输出模板 public function upload(){ $upload new \Think\Upload();// 实例化上传类 $upload-maxSize 3145728 ;// 设置附件上传大小 $upload-exts array(jpg, gif, png, jpeg);// 设置附件上传类型 $upload-savePath ./Public/Uploads/; // 设置附件上传目录 // 上传文件 $info $upload-upload(); if(!$info) {// 上传错误提示错误信息 $this-error($upload-getError()); }else{// 上传成功 $this-success(上传成功); } } $Verify new \Think\Verify(); $Verify-entry(); $image new \Think\Image(); $image-open(./1.jpg); $width $image-width(); // 返回图片的宽度 $height $image-height(); // 返回图片的高度 $image-crop(400, 400)-save(./crop.jpg); $image-thumb(150, 150)-save(./thumb.jpg); REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式可以降低开发的复杂性提高系统的可伸缩性。REST提出了一些设计概念和准则 1、网络上的所有事物都被抽象为资源resource 2、每个资源对应一个唯一的资源标识resource identifier 3、通过通用的连接器接口generic connector interface对资源进行操作 4、对资源的各种操作不会改变资源标识 5、所有的操作都是无状态的stateless。需要注意的是REST是设计风格而不是标准。 RESTFul支持更为灵活你不需要使用REST模式只需要把控制器继承Think\Controller\RestController即可。继承RestController控制器后你的访问控制器就可以支持下面的一些功能 支持资源类型自动检测 支持请求类型自动检测 RESTFul方法支持 可以设置允许的请求类型列表 可以设置允许请求和输出的资源类型 可以设置默认请求类型和默认资源类型 namespace Home\Controller; use Think\Controller\RpcController; class ServerController extends RpcController{ protected $allowMethodList array(test1,test2); public function test1(){ return test1; } public function test2(){ return test2; } public function test3(){ return test3; } } 转载于:https://www.cnblogs.com/netRob/p/5113058.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/90285.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!