文档标签: thinkphp
在做Thinkphp项目的时候,登录login超时是我们必须想到的问题。
最近做的项目也有这个要求,也不算要求,但是做为有登录功能的就应该有这个!
以下是我的思路:
首先设置一个登录正确的开始时:$_SESSION['logtime'] = time();
然后判断现在的时间: $times = time();
最后比较两个时间,比如我们将登录超时设置成30分钟,即1800秒, if (($times - $_SESSION['logtime'] ) > 1800)
如果大于半小时就清空登录缓存,
如果小于则将登录时间设置成现在时间。这样就避免在操作过程中出现超时的情况了,以下是我在Thinkphp用到的代码:
[php]
public function checklogin(){
if (!isset($_SESSION['User'])){
$this->get_msg('你还未登录,请先登录!', false, /index.php.'/Pub/');
}
...
客户要求要用smarty模板引擎来做,本来我们电子商务组这边一直都是使用的thinkphp的模板引擎,而且大家结这块都很了解了。
却不曾想到客户有这种要求,于是乎大家开始在thinkphp上引用smarty,但是过程确实复杂啊!
走了不少弯路。
分隔不需要编译的代码{literal}{/literal}
{:U("")} 不能用,要用{U("")}
<include file="" />不能用,要改成{include file=""}.
thinkphp框架自带的模板跟smarty模板很像,但是也有很多差别。
说说他们的对应关系:
1、
<present name="nodeName">[{$nodeName}] </present>
smarty模板为:
{if !empty($nodeName)}[{$nodeName}]{/if}
2、
<eq name="level" value="1">应用</eq>...
做ThinkPHP应该经常用到getField\field\find\select这种查询
可是有时我们想用getField查询出相关的字段,但是只能查出一条,而我们想要的是很多条,或是所有数据放到一个数组里面,
在“ThinkPHP3.0_完全开发手册.pdf”中没有相关的记录,
后来查看在线文档发现getField可以获取一个字段,并且是数组形式返回的!
用法:getField('id', true);
如果要读取某个字段的值,可以使用getField方法
getField 查询某个字段的值
用法 getField($field,$sepa=null)
参数
field(必须):要获取的字段字符串(多个用逗号分隔)
sepa(可选):字段数据间隔符号,如果是 NULL返回数组为数组。默认为null。
回调接口 查询后 _after_find(&$result,$options)
返回值
如果查询结果为空返回null
如果field是一个字段则返回该字段的值
如果field是多个字段,返回数...
首先, 在配置文件(config.php)里设置 URL_HTML_SUFFIX 设置静态后缀
[php]
<?php
return array(
'URL_HTML_SUFFIX'=>'.html', //随意, 可设置其它的。
....
//其它配置信息
);
?>
[/php]
然后使用U方法
U方法的定义规则如下(方括号内参数根据实际应用决定):
U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]')
或者用数组的方式传入参数
U('[项目://][路由@][分组名-模块/]操作',array('参数1'=>'值1' [,'参数N'=>'值N']))
如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子:
U('Myapp://...
今天有一同事在做ThinkPHP项目权限管理的时候,想多了,于是我就写了一个删除权限的方法:
[php]
function test(){
$this->delAll(2, 1, 1);
}
public function delAll($role_id,$node_id,$level){
$a = M('Access');
$map['pid'] = array('eq', $node_id);
$find = $a->where($map)->field('role_id,node_id,level')->select();
if ($find){
foreach ($find as $k=>$v){
$this->delAll($find[$k]['role_id'], $find[$k]['node_...
近几个月都在用thinkphp做项目,
其中不乏用到编码的问题,
根据官方的一些例子来写了一个导航,用id和title
其中title就是用base64_encode编码的,但是你会发现在用一些中文词是会出现错误。
例:专业设置,编码出来:5LiT5Lia6K6+572u
看看吧中间有一个“+”号,这就会造成页面无法显示,
所以在使用过程中我们项目组都避开设置这两字!
不知道有解决的方法,这应该是thinkphp才有的问题,
应该在使用base64_encode都会出现这种情况,只是在tp中的url模式下会出现错误而已。
望有知道的同学给予解答!...
最近在用tp做项目,做到上传这块发现有问题.
哦,环境用的是windows+php+nginx
在上传中写了最大上传文件大小,
import("ORG.NET.UploadFile");
$upload = new UploadFile();//实例化上传类
$upload->maxSize = 1024*100;//设置附件上传大小
但是一上传大一点的文件就会出现"413 Request Entity Too Large" 这样的错误提示信息;
最后只得google一下,更改
解决方法:打开nginx主配置文件nginx.conf,找到http{}段,添加
client_max_body_size 20m;
Centos下 vi /usr/local/nginx/conf/nginx.conf
重启NGINX
kill -HUP `cat /usr/local/nginx/nginx.pid `
恢复正常...
ThinkPHP使用的参数在这里就不多说了,如果你还不是很清楚可以到ThinkPHP官网去下载ThinkPHP使用手册.
今天在这里要说的ThinkPHP日常使用所要注意的一些细节问题.
这些都是我从实际的项目开发中发现的问题
1 要注意M的使用方法,例:
表: think_role_user
那么用M该如何运用呢?
M("Role_user") M("RoleUser")
目前发现两个都可以用,linux下也试过了
2 getField field
在linux下getField('id,name,status');
不能写成getField('id, name, status');//两种方式在windows下都可以用
今天就先说到这里了....
项目配置
打开项目配置目录 Conf ,里面有个 config.php 文件,该文件就是 ThinkPHP 系统配置文件。我们将一些项目配置信息如数据库账号密码等写入配置文件以供系统调用。
一个配置样例如下:
配置信息补充说明
如果表没有前缀,则表前缀 DB_PREFIX 配置为空即可:
'DB_PREFIX'=>'',
APP_DEBUG 调试开关配置项中,配置为 true 表示开启调试开关,那么在有模板输出的页面中,可以看到系统运行信息。如下图:
ThinkPHP调试信息
TOKEN_ON 令牌验证配置为 true ,在表单提交时系统会自动生成一个 MD5 验证令牌用于防止非法表单提交。
URL_MODEL URL访问模式,根据需要配置,如果环境不支持 PATHINFO 则设置为 3 以适应。
APP_GROUP_LIST 及 DEFAULT_GROUP 用于项目分组,具体可参见《ThinkPHP 项目分组》。
提示
如...
今天在做那个ThinkPHP后台登录验证的时候遇到这个问题,在多个后台项目和前台项目共同在根目录下如何来判断是否有权限。
看如果代码,作者是将后台和前台放到不同的目录下的,后台所有操作在一个项目下,前台也是在一个目录下,作者用的是调用公共方法,代码如下:
[php]
class GlobalAction extends Action{
private $groupId;
private $userId;
private $userName;
function _initialize()
{
//初始化时获取用户ID和用户组ID
$this->groupId=intval(Session::get('groupid'));
$this->userId=intval(Session::get(C('USER_AUTH_KEY')));
$this->userName=Session::get('username');
//dump($this->groupId...
今天在做节点的时候出现了ThinkException: Model:relation您所请求的方法不存在!这个错误,查看一下Model,
没发现那里有错,只知道relation应该像add()这样的属性一样,不用额外添加什么继承吧!
最后查了一下百度这个流氓,看一下这条信息:
在用ThinkPHP的关联查询时,遇到了一个这样的提示:“Model:relation您所请求的方法不存在”。到ThinkPHP论坛搜索了一下,发现有6个相关的帖子,不过最新的5个都不沾边。只有最早的一个,是管理员回复的,有点参考价值,呵呵。
我要做的是新闻表关联新闻分类表,模型代码如下:
class NewsModel extends RelationModel{
//关联分类表
public $_link = array(
’profile’ => array(
’mapping_type’ => BELONGS_TO,
’class_name’ => ‘Ncat’,
’foreign_key’ => ‘cid...
昨天弄了好久没弄起这个伪静态,今天在公司看了一下公司的这个配置信息,终于也配置好了这个环境。
windows下ThinkPHP伪静态配置
nginx环境配置ThinkPHP伪静态
[html]
server {
listen 80;
server_name localhost;
root E:/DEMO;
index index.php index.html index.htm;
autoindex on;
location / {
if (!-e $request_filename) {
#rewrite ^/(.*)$ /index.php/$1 last;
rewrite ^/Home/(.*)$ /Home/index.php/$1 last;
break;
}
}
location ...
现在ThinkPHP使用的人越来越多,许多公司都有这个要求,要会使用框架,而ThinkPHP是目前国内使用得最多的一款了。
可能cms你会使用,而且很容易上手,但是框架必须自己来配置调周,它也不像模板引擎那样,直接引用一样!
开始我们今天的教程,ThinkPHP初级班。
一、去ThinkPHP官网下载最新版本的ThinkPHP;
二、假设我们的PHP环境已经配置好了,将下载来的源码包解压到相关的网站目录下,将ThinkPHP拷进去,在网站根目录下新建一个index.php文件,并插入如下代码:
[php]
<?php
//定义项目名称
define('APP_NAME', 'Home');
//定义项目路径
define('APP_PATH', './Home/');
//调试
define('APP_DEBUG', true);
//框架入口文件
require './ThinkPHP/ThinkPHP.php';
[/php]
这里带说一下php文件,如果全...