摘抄笔记

我正在学李老师的第二季,第一季看了一点点,直接就看第二季了,因为第二季是oop嘛,要是先看第一集又需要用很长时间,为了省时间我迫不及待的直接从项目看的,前面粗略的看了看,在之前我通过其他书籍和视频学的php,但是看到李老师的项目确实好.

学到验证码那个地方出错了,怎么也弄不好,最后发现,可能是由于李老师讲课时的php版本与现在的版本相差比较大,现在我的是wamp里带的5.5.12,导致有些代码需要改一下才能用,在解决问题时花了很多时间,不知道早看了李老师视频的有没有早就解决了问题,我才看到项目的第38节,所以请早学了李老师第二季视频的同学们给我分享下后面有没有需要修改的,我先分享之前我发现的.
下面是我遇到问题时自己网上搜索解决的,不一定是好答案或者不一定正确,但是可以顺利执行下去的,修改后执行的与老师的是一样的.
1_______ 在验证码的地方,如果按老师的是不行的现在,需要修改,1 是在ValidateCode.class.php 的outPut()方面第一行加入ob_end_clean(), 2 是在code.php 的$_vc=new ValidateCode()上面也加上这句话ob_end_clean(),我的就成功了.
ValidateCode.class.php需要修改的地方
private function outPut(){
ob_end_clean(); //需要增加
header(‘Content-type:image/png‘);
imagepng($this->img);
imagedestroy($this->img);
}
code.php 需要修改的地方
<?php
require dirname(__FILE__).‘/init.inc.php‘;
ob_end_clean(); //需要增加
$_vc=new ValidateCode();
$_vc->doimg();
$_SESSION[‘code‘] = $_vc->getCode();
?>
2________再一个就是今天在学的项目的38节,现在的php版本已经不自动转义了,用那个判断是否已开启自动转换函数PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除,我想php开发者觉得有点画蛇添足了,所以又改回来了,还有就是老师用的转换函数是mysql_real_escape_string(),但点击增加时,会因为此函数出现警告错误,错误提示是建议用mysqli或pdo,以后可能会移除mysql,所以需要把此函数改成mysqli_real_escape_string(),不用Tool里的方法了
ManageModel.calss.php和LevelModel.calss.php需要修改的地方是一样的,需要改的代码是这样的:
public function __set($_key,$_value){
$this->$_key= mysqli_real_escape_string( DB::getDB(),$_value);
}
这个是我蒙的,不知道对不,运行是可以的.
3._________安装老师的写法会出现一些通知类错误,错误提示未定义某些变量或数组索引,是因为老师当时的php版本低才没有提示错误还是因为老师修改了php.ini配置文件里的错误提示等级呢,php本来就不需要先定义类型,网上说是为了规范,通知类错误可以忽略么,如果可以就改错误提示等级,在php.ini改或者是在:
第一种方法只要在init.inc.php 的session_start();下面加上这句error_reporting(E_ALL & ~E_NOTICE);这句是忽略通知错误提示.
第二种方法是,也可以不修改错误等级,就是把错误提示的未定义变量或数组索引给初始化,我遇到的有page..class.php 里的$_pagelist和$_page这个变量的问题,只要在此变量所在方法的第一行加上$_pagelist=null 或 $_page = null就可以了,我想的是给他初始化为空字符串,果然行了,不知道是否规范.
还一处是,这里不好描述啊,纠结,估计描述麻烦,简单说是manage.tpl生成的编译文件里的if语句里面的tpl对象的成员变量_vars数组需要判断是否存在,否则就会出现我遇到的通知错误提示,提示未定义的数组索引,
需要修改parser.class.php里的parIf()方法里的一条代码
$this->_tpl = preg_replace($_pattenIf,"<?php if (isset(\$this->_vars[‘$1‘])) {?>",$this->_tpl);
这是改好的,只是在里面加了判断数组索引是否存在isset()方法.
想到的就这么多了,这是截止项目第38节我所遇到的问题.php版本5.5.12

4____________第二季项目第40节,如果数据库cms_nav或cms_manage或cms_level里面没有数据就会出错,因为foreach里面的值为空,老师是在tpl里面判断是否为空,三个页面都要改比较麻烦,我就发现了一个比较简单的解决这个问题的方法,不用在tpl里判断,需要修改Tool.class.php里的htmlString()方法
Tool.class.php需要修改的内容:
static function htmlString($_date) {
if (is_array($_date)) {
$_string = array(); //添加这句
foreach ($_date as $_key => $_value) {
$_string[$_key] = Tool::htmlString($_value); //递归
}
} elseif (is_object($_date)) {
$_string = new stdClass(); //添加这句
foreach ($_date as $_key => $_value) {
$_string->$_key = Tool::htmlString($_value); //递归
}
} else {
$_string = htmlspecialchars($_date);
}
return $_string;
}
我的电脑中了arp病毒了,打开网页有百分之八十的网页在右下角弹框,百度贴吧知道百科都弹,杀毒软件都不好用啊,怎么弄

我的验证码又出问题了,又修改了个地方
code.php 需要修改的地方
<?php
require dirname(__FILE__).‘/init.inc.php‘;
if(!IS_CACHE) ob_start();//添加
ob_end_clean(); //需要增加
$_vc=new ValidateCode();
$_vc->doimg();
$_SESSION[‘code‘] = $_vc->getCode();
?>

5________项目第47节,我遇到了错误,修改如下
NavModel.class.php里面修改
public function __set($_key, $_value) {
if (is_array($_value)) {
$_Zvalue = array();
foreach ($_value as $_Vkey =>$_Vvalue) {
$_Zvalue[$_Vkey] = mysqli_real_escape_string(DB::getDB(), $_Vvalue);
}
$this->$_key = $_Zvalue;
} else {
$this->$_key = mysqli_real_escape_string(DB::getDB(), $_value);
}
}
为什么我的需要改成判断数组才正确呢

还有遇到很多未声明错误,就不写了,大同小异,不行就修改错误等级.

 

时间: 2024-10-09 05:27:28

摘抄笔记的相关文章

一些关于three.js的摘抄笔记

加载多个geometry的方式: (可以利用three.js自带convert_obj_three.py文件将obj文件转换成json文件) function loadModel() { loader = new THREE.JSONLoader(); loader.load("js/your_model.js", function( geometry ) { box = []; group = new THREE.Object3D(); scene.add(group); // he

Jenkins配置有用摘抄笔记

转自:http://www.cnblogs.com/baiyunchen/p/4724350.html 持续集成是个简单重复劳动,人来操作费时费力,使用自动化构建工具完成是最好不过的了.最终可以实现的一个效果是,svn提交代码,服务器端自动编译并发布. 所使用的版本:windows server 2008 r2,并使用它自带的iis服务器. 1.机器上安装好.net framework 4.5及.net framework 4.5 sdk(下载地址:https://msdn.microsoft.

GCC 编译使用动态链接库 LD

可以把当前路径加入 /etc/ld.so.conf中然后运行ldconfig,或者以当前路径为参数运行ldconfig 2.把当前路径加入环境变量LD_LIBRARY_PATH中3. 如果你觉得不会引起混乱的话,可以直接把该库拷入/lib,/usr/lib/等位置(需要权限),这样链接器和加载器就都可以准确的找到该库了. 简单方法是当前目录加入到LD_LIBRARY_PATH:export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH 再执行 hello 就能执行了,gc

linux 笔试题

一.填空题: 1. 在Linux系统中,以 文件 方式访问设备 . 2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. 3. Linux文件系统中每个文件用 i节点 来标识. 4. 全部磁盘块由四个部分组成,分别为引导块 .专用块 . i节点表块 和数据存储块. 5. 链接分为: 硬链接 和 符号链接 . 6. 超级块包含了i节点表 和 空闲块表 等重要的文件系统信息. 7. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为: 644 ,

dll return a string

char g_szText[1024]; __declspec(dllexport) const char * __stdcall FuncName(const unsigned char *p) { sprintf(g_szText, "this is %u !", (unsigned int) p[2]); return g_szText; } __declspec(dllexport)表示该函数要被输出,__stdcall表示参数传递方式,一般动态库都用这个,这个函数就是返回动态

friend class

友元函数与友元类. C++中以关键字friend声明友元关系.友元可以访问与其有friend关系的类中的私有成员.友元包括友元函数和友元类. 编辑本段1.友元函数 如果在本类以外的其它地方定义了一个函数(这个函数可以是不属于任何类的非成员函数,也可以是其它类的成员函数),在类体中用friend对该函数进行声明,此函数就称为本类的友元函数.一个类的友元函数可以访问这个类中的private成员. 1.1将全局函数声明为友元函数 如果要将一个全局函数(call)声明为本类(Time)的友元函数,则只需

C#数据结构和算法-字符串、String 类和StringBuilder类

*本文为摘抄笔记* Preface当程序需要对String对象进行许多改变时会用到StringBuilder类.因为字符串和String对象都是不可改变的,而StringBuilder对象则是易变的.String类不可变,就意味着每次对象进行改变时都需要创建一个新的对象副本.如果在创建长的字符串,或者是对相同对象进行许多改变,那么就应该用StringBuilder类来代替.StringBuilder对象是可变的,性能会更好. 字符串是字符的序列,可以包含字母.数字和其他符号.C#语言中,用双引号

【周计划】2015年Q2六月第二周预定计划(2015年6月8日-2015年6月14日)

本周计划侧重点: 工作方面: 1.尽快的处理好游戏业务速度上线的批量处理工作 2.尽快的把python的技能再度加强,便于下周用python写各种自定义脚本来完成zabbix自定义监控的工作 3.把总结要做好,以便后面招进来的新人可以很快的根据这些笔记成长起来,能更快的进入到工作状态中. 学习方面: 1.英语要按部就班的进行 2.linux的一些东西要捡起来 3.史记要继续看下去,并做好摘抄笔记 4.要多看一些跟专业无关的书籍,比如健身.保养.营养搭配.烹饪类书籍 锻炼方面: 再没有研究出适合自

Java泛型通配符以及限定

摘抄笔记 A:泛型的限定 /* * 将的酒店员工,厨师,服务员,经理,分别存储到3个集合中 * 定义方法,可以同时遍历3集合,遍历三个集合的同时,可以调用工作方法 */ import java.util.ArrayList; import java.util.Iterator; public class GenericTest { public static void main(String[] args) { //创建3个集合对象 ArrayList<ChuShi> cs = new Arr