TP框架中关于if.else 分支结构逻辑错误 代码中没有任何错误 将注释往下一行就可以解决 造成问题的原因: TP框架中 想分配变量可以使用assign方法 在[模块]中: $this->assign('data',$name); ->data是一个标识 在[模板]中:使用定点符({$data} -- 花括号和$ + 标识)嵌入这个变量(data) ** 『模板』花括号 } 是定界符(ThinkPHP默认的) -- 不太建议使用这种默认的花括号定界符. @@ 如何修改左右定界符?? 解决方法…
TP框架中如何使用SESSION限制登录? 之前总是被问题今天才明白,最高效的来做页面访问限制问题. OOP思想中的继承特性,实现验证,是否已经登录,不必每个页面都进行判断. 实现如下: 继承Controller CommonController <?php /** * User:... */ namespace Home\Controller; use Think\Controller; /** * 通用控制器 * 主要用于验证是否登陆 以及 用户权限 * @package Home\Cont…
ajax post请求时提示404错误 TP框架中ajax post请求时提示404 找了半天是 控制器中方法有错误! 下次再遇到去控制器方法中找一步一步找,肯定能找到,我是单词拼错了!…
TP框架中field查询字段 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! field…
TP框架中模板赋值 $this->assign('name',$value); $this->name = $value; // 两种写法是等效的…
TP框架中模糊查询实现 $where['g.name'] = array('like','%'.$groupname.'%'); 表达式查询 上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,查询表达式的使用格式: $map['字段1'] = array('表达式','查询条件1'); $map['字段2'] = array('表达式','查询条件2'); $Model->where($map)->select(); // 也支持 表达式不分大小写,支持的查询…
rewrite就是伪静态, 伪静态就是 rewirte, 可以把入口地址隐藏掉. 兼容模式就是 普通模式 和 pathinfo模式的 结合, 前面是普通模式 ?s= , 后面的 模块/控制器/操作和参数是用 pathinfo方式给出的, 比如: http://localhost/index.php?s=/home/user/login/var/value 这个s叫做var_pathinfo, 是兼容模式下获取模块等变量的符号, 可以自己定义: 'VAR_PATHINFO' => 'path',…
tp中有三种常量: 预定义常量, 这个设置后不会随环境的改变而改变的,比如'URL_MODEL' => 1 注意是 model, 不是 url_mode 路径常量, 也不会随环境的改变而改变的, 比如define('THINK_PATH', './ThinkPHP/'), define('LIB_PATH', THINK_PHP.'Library/'); 系统常量, 这个会随着环境/文件的不同而不同的, 比如: 在模板中常用到的各种地址和名字等 : __ROOT__, __CONTROLLER_…
mysqli是用面向对象的,所以用箭头对象语法, 而mysql是用C语言面向过程写的, 所以用的都是php全局函数 式的写法. tinkle: 叮叮当当的响; (口语)一次电话, i will give you a tinkle tonight. cascade: ['k2skeid] 瀑布; 级联.. symbol: 符号代号: 一种用于打印或书写的符号. notation: 主要是口语中的符号, 记号. 所以 json: 就是js: js object notation: 是js的一种对象标…
关于vim中的缓存区的前后bp和bn的界定 通过命令ls可以看到 缓存区的 排序. 最开始打开的文件排在最上面, 序号最小. 那么它们就是 更 前 的缓冲区. 序号更前的用bp, 序号靠后的用bn. 但是 序号的数字不一定是挨着的 你自己也可以 根据打开文件的先后次序来判定 p和n, 如果打开当前文件后, 再打开第二个文件, 那么第二个文件就是 后next文件, 当前文件就是previous文件. 所以 , 在第二个文件编辑的时候, 要回到当前文件, 就要用 bp.. 关于路由? 首先要明确,…
mysql创建索引, 通常是在 创建表的 同时/时候, 就创建了 即使是在win下, 用命令行操作数据库 , 也要比 图形界面的鼠标操作快得多 索引的类型有: unique, fulltext索引, spatial空间索引, 和普通索引 index/key fulltext全文索引的使用? 使用索引的好处, 如同字典 的 索引一样, 如果你从头到尾不使用索引 一个字一个字地 查字典 找一个字的话, 是很老火的. 反之, 使用前面的偏旁部首索引 查字, 可以通过 字 和 页数 的 对应关系 一下子…
M方法 M实例化参数是数据库的表名 //使用M方法实例化$User = M('User');//和用法$User = new /Think/Model ('User');等效//执行其他的数据操作$User->select(); M 方法也支持垮库操作. //使用M方法实例化,操作db_name中的ot_user表$User = M('db_name.User','ot_');//执行其他的数据库操作$User->select(); M方法的参数和/Think/Model的参数是一样的,所以我…
vim自带一个目录浏览器,使用命令:E就可以调出来,实际上就是浏览器的名字就是"网络读写"netrw vim也自带了 补全功能, 启动键是 "ctrl_N" 或者用 ctrl_p也可以, 不管是第一个还是后面第几个,反正你可以补全就好了 . 如果有多个补全(开头的字符相同的多个), 则会显示^N^P 还有更多的补全在 ctrl_x中(6种): ctrl_x 和 ctrl_D 是宏定义补全 ctrl_x ctrl_f 是文件名补全(file) ctrl_x ctrl_…
NaN是Number对象的一个属性, 表示一个特殊值, 表示不是一个 数字, 引用/赋值时, 要使用: Number.NaN 判断 一个值是不是 NaN, 用 isNaN() 函数, 它是一个js的全局函数 , 所以前面不需要用 对象什么的来引用, 直接使用 isNaN() . 同时要注意, 判断一个数是否是NaN不能用 == NaN, 因为NaN, 不等于任何值, 即使是它自身也不相等, 即: NaN != N阿N 注意这个函数不要 想反了. 是判断一个变量(不是一个数字). 当在一个 (任意…
$_SERVER的几个元素: script_name脚本名称, 是指这个脚本文件本身的文件名, 通常只是 : /index.php path_info: 是从控制器/操作方法开始到最后的内容,包括路径参数但是不包括动态参数 php_self则是所有的url地址内容中除了主机后的部分, 但不包括动态查询参数 request_uri 则是所有的url地址内容中除了主机后的部分, 包括动态查询参数 query_string就是动态查询参数, 即 问号后面? 的内容(不包括问号) 比如: 对于这个url…
tp默认的编码是utf-8 Runtime中的Cache和Logs都是分模块的,因为在应用app下可以有多个模块,但是 公共模块和Runtime模块只有一个, 所以, Runtime要包含各个模块的内容. 包括home和admin的内容: 比如:Cache/Home/....php, Cache/Admin/...php, Logs/Admin/...log , Logs/Home/....log 不管是任何一种语言, 都要养成相同的, 严格严禁的编程习惯, 比如变量在使用前, 要事先声明并初始…
TP中session操作 查看代码,OMG! 不应该是这样的…
D()和M()方法的区别: D和M的区别主要在于 M方法不需要创建模型类文件,M方法不会读取模型类,所以默认情况下自动验证是无效的,但是可以通过动态赋值的方式实现 而D方法必须有创建模型类. 我们可以用下面两种方法去创建一个数据表的映射对象 第一种:$Test = D(‘Test’) 第二种:$Test = new Model(‘Test’) 虽然这两种都可以对数据进行select,insert,delete,udpate操作,在 数据验证上有很大的不同, 用第一种方式实例一个模型就会有数据检查…
    /ThinkPHP/Library/Think/Storage/Driver/File.class.php LINE: 48错误 这是一个将windows下运行正常的ThinkPHP框架移到Linux下会出现的一个问题:  :(  STORAGE_WRITE_ERROR:./Runtime/Cache/Install/c6bbce5b1f1dcf027c8ceb5cf5141b65.PHP  错误位置  FILE: /home/wwwroot/testisale/ThinkPHP/Lib…
今天在tp中遇到一个问题,可能这并不算难的问题,但是我还是分享一下 以下是tp手册里面查询or的方式 $User = M("User"); // 实例化User对象 $where['uid'] = $login_uid; $where['to_uid'] = $login_uid; $where['_logic'] = 'OR'; // 把查询条件传入查询方法 $User->where($where)->select(); 这个方式可以很顺利的将自己所需要的条件查出来 现在…
不同的浏览器采用不同的方式保存Cookie. IE浏览器会在"C:\Documents and Settings\你的用户名\Cookies"文件夹下以文本文件形式保存,一个文本文件保存一个Cookie. 1.1.2 记录用户访问次数 Java中把Cookie封装成了javax.servlet.http.Cookie类.每个Cookie都是该Cookie类的对象.服务器通过操作Cookie类对象对客户端Cookie进行操作.通过request.getCookie()获取客户端提交的所有…
'APP_SUB_DOMAIN_DEPLOY' => false, // 是否开启子域名部署 thinkphp开启域名部署/子域名部署/泛域名部署/IP访问部署            ThinkPHP支持模块(甚至可以包含控制器)的完整域名.子域名和IP部署功能,让你的模块变得更加灵活,模块绑定到域名或者IP后,URL地址中的模块名称就可以省略了,所以还可以起到简化URL的作用.         无论是子域名还是IP部署,首先要在应用配置文件中开启APP_SUB_DOMAIN_DEPLOY,这是…
ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内置了 A 方法与 R 方法这两个特殊的大写字母方法来处理跨模块调用的问题. 目前 Index 模块内有 index 操作,User 模块有 showName 操作,User 模块及 showName 操作具体代码如下: <?php class UserAction extends Action{ p…
$where['add_time'] = array(array('egt',$starttime),array('elt',$endtime),'AND');…
//制定命名空间在Home 模块下Model文件夹下 如:namespace Home\Model; //引用父类 如:use Think\Model; //实例化表 如:class ZhuCeModel extends Model{ protected $tablePrefix="";//表示表名没有加前缀 protected $trueTableName="zhuce";//表示真实表名} //验证非空('列名','require','输出的错误信息',0可写可…
系统内置了get_client_ip方法用于获取客户端的IP地址,使用示例: $ip = get_client_ip(); 如果要支持IP定位功能,需要使用扩展类库Org\Net\IpLocation,并且要配合IP地址库文件一起使用,例如: $Ip = new Org\Net\IpLocation('UTFWry.dat'); // 实例化类 参数表示IP地址库文件 $area = $Ip->getlocation('203.34.5.66'); // 获取某个IP地址所在的位置 如果传入的参…
public function test(){ $m=M('Message'); import('ORG.Util.Page');// 导入分页类 $count = $m->count();// 查询满足要求的总记录数 $page = new page($count,3);// 实例化分页类 传入总记录数和每页显示的记录数 $page->setConfig('header','条信息'); $show = $page->show();// 分页显示输出 $this->assign(…
        $pid =I('pid');         $year = I('year');         $productType = I('productType');         //搜索条件 where         $_where = "cinfo.uid=$uid and cg.type=1 and cg.status=1";         if($pid){             $_where .= " and c.pid=$pid&quo…
C方法 function C($name=null, $value=null,$default=null) { static $_config = array(); // 无参数时获取所有 if (empty($name)) { return $_config; } // 优先执行设置获取或赋值 if (is_string($name)) { if (!strpos($name, '.')) { $name = strtolower($name); if (is_null($value)) re…