GVKun编程网logo

ThinkPHP3.2.2的插件控制器功能(thinkphp插件机制)

13

对于ThinkPHP3.2.2的插件控制器功能感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍thinkphp插件机制,并为您提供关于thinkphp-Thinkphp3.2中添加phpfetc

对于ThinkPHP3.2.2的插件控制器功能感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍thinkphp插件机制,并为您提供关于thinkphp-Thinkphp3.2中添加phpfetcher(php爬虫插件)的问题、thinkPHP3.2.2 控制器内跳转的三种方式、ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2、ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2_PHP教程的有用信息。

本文目录一览:

ThinkPHP3.2.2的插件控制器功能(thinkphp插件机制)

ThinkPHP3.2.2的插件控制器功能(thinkphp插件机制)

3.2.2版本开始支持插件控制器的调用,可以通过更加方便的URL地址访问到模块中某个插件定义的控制器。

当URL中传入插件控制器变量的时候,会自动定位到插件控制器中的操作方法。

插件控制器的变量由参数 VAR_ADDON 进行设置,默认为addon,例如我们在URL中传入:

代码如下:
由于传入了addon参数,因此这里的User控制器并非原来的

代码如下:
PHP

而是调用SystemInfo插件(位于Home/Addon目录下面)的InfoController控制器了,文件位于

代码如下:PHP

插件控制器本身的定义和普通的访问控制器一样,例如:

代码如下:stemInfo\Controller; class InfoController extends \Think\Controller{ public function index(){ echo 'Addon SystemInfo'; } }

这样,我们在访问

代码如下:

的时候 就会输出 Addon SystemInfo 如果我们的插件目录不是Addon,而是Plugin,那么需要在配置文件中定义:

代码如下: 'plugin'

然后访问URL地址就变成了

代码如下:stemInfo

注意:目前插件控制器仅支持模块的插件控制器访问,尚不支持全局的公共插件。

注意:该用法仅针对官网下载的3.2.2版本。后续将会做出一些细节的调整,包括定义插件位置等等。 更多的用法,请参考后续的详细手册内容。

thinkphp-Thinkphp3.2中添加phpfetcher(php爬虫插件)的问题

thinkphp-Thinkphp3.2中添加phpfetcher(php爬虫插件)的问题

thinkphp插件php爬虫phpfetcher

我想把phpfetcher插件添加到自己的项目当中,但是phpfetcher文件有点复杂,不知道用什么方式才能添加到自己的项目中,请大神们帮忙指点下吧,谢谢了。
截图:图片说明

thinkPHP3.2.2 控制器内跳转的三种方式

thinkPHP3.2.2 控制器内跳转的三种方式

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代
    public function jump() {
        $obj = new TestController();
        $obj->logged();
    }

    public function jump1() {
        $obj = A(''Test'');
        $obj->logged();
    }

    public function jump2() {
        R(''Test/logged'');
    }

 

ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2

ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2

thinkphp3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2

本文实例讲述了thinkphp3.2.2实现持久登录功能的方法。分享给大家供大家参考,具体如下:

实现持久登录,即用户在登录时,勾选了"记住我"之后,无论是否关闭浏览器,只要不退出登录,在指定的时间内始终保持登录状态(缺点是在另一台电脑上登录过后,之前那台电脑就不能继续保持登录状态)。

首先,持久登陆使用 cookie 实现,但是 cookie 中不能保存用户密码这样重要的信息,即使加密过。解决方案是在用户登录表中新建3个字段identifier:第二身份标识,token:永久登录标识,timeout:永久登录超时时间。

+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| uid | int(11) | NO | PRI | NULL | auto_increment |
| uname | varchar(20) | YES | | NULL | |
| upwd | varchar(20) | YES | | NULL | |
| uflag | int(11) | YES | | NULL | |
| identifier | varchar(32) | YES | | NULL | |
| token | varchar(32) | YES | | NULL | |
| timeout | int(11) | YES | | NULL | |
+------------+-------------+------+-----+---------+----------------+

登录后复制

在用户勾选了"记住我"登录时,应该生成一个唯一的 identifier,一个唯一的 token,并且设置一个过期时间 timeout,把两个代表身份的值写入cookie,设置 cookie 过期时间为 timeout,例如:setcookie(''auth'',"$identifier:$token",$timeout); 同时把三个值插入数据表;当用户再一次访问网站时,首先判断 cookie 中是否含有 auth,如果含有,则去数据库中进行身份比对(identifier 和 token),比对成功时,把用户信息写入 session,同时用户保持登录状态。

代码:

立即学习“PHP免费学习笔记(深入)”;

控制器 TestController.class.php

<&#63;php
namespace Test\Controller;
use Think\Controller;
class TestController extends Controller {
 public function login(){
  //判断是否永久登录
  $this->checkLong();
  //已经登录则跳转至个人中心
  if(isset($_SESSION[''username''])){
   $this->redirect(''Test/ucenter'');
  }else{
   //判断是否存在cookie
   if(isset($_COOKIE[''username''])){
    $this->assign(''username'',$_COOKIE[''username'']);
   }
   //显示注册页
   $this->display("test");
  }
 }
 //显示验证码
 public function verifyImg(){
  $verify = new \Think\Verify();
  //$verify->useZh = true; //使用中文验证码
  $verify->length = 4; 
  $verify->entry();
 }
 //验证登录
 public function check(){
  $verify = new \Think\Verify();
  if($verify->check(I("yzm"))){
   //判断用户名密码
   $user = new \Test\Model\TestModel();
   $res = $user->checkName(I("username"),I("pwd"));
   if($res === false){
    echo "用户名或密码错误";
   }else{
    //用户信息存入session
    session("username",$res[''uname'']);
    session("id",$res[''uid'']);
    //如果用户勾选了"记住我",则保持持久登陆
    if(I("remember")){
     $salt = $this->random_str(16);
     //第二分身标识
     $identifier = md5($salt . md5(I("username") . $salt));
     //永久登录标识
     $token = md5(uniqid(rand(), true));
     //永久登录超时时间(1周)
     $timeout = time()+3600*24*7;
     //存入cookie
     setcookie(''auth'',"$identifier:$token",$timeout);
     $user->saveRemember($res[''uid''],$identifier,$token,$timeout);
    }
    //把用户名存入cookie,退出登录后在表单保存用户名信息
    setcookie(''username'',I(''username''),time()+3600*24);
    //跳转至会员中心
    $this->redirect(''Test/ucenter'');
   }
  }else{
   echo "输入错误";
  }
 } 
 //测试strstr函数
 public function strstrtest(){
  $param = "Think\Verify";
  //第三个参数为true,返回''Think'';没有第三个参数,返回''\Verify''
  $name = strstr($param,''\\'',true);
  echo $name;
 }
 //用户中心
 public function ucenter(){
  //判断是否永久登录
  $this->checkLong();
  $this->assign("session",$_SESSION);
  $this->display("ucenter");
 }
 //退出登录
 public function loginout(){
  session(null);
  setcookie(''auth'', '''', time()-1);
  $this->redirect("Test/login");
 }
 //生成随机数,用于生成salt
 public function random_str($length){
  //生成一个包含 大写英文字母, 小写英文字母, 数字 的数组
  $arr = array_merge(range(0, 9), range(''a'', ''z''), range(''A'', ''Z''));
  $str = '''';
  $arr_len = count($arr);
  for ($i = 0; $i < $length; $i++){
   $rand = mt_rand(0, $arr_len-1);
   $str.=$arr[$rand];
  }
  return $str;
 }
 //判断是否持久登录
 public function checkLong(){
  $check = new \Test\Model\TestModel();
  $is_long = $check->checkRemember();
  if($is_long === false){
  }else{
   session("username",$is_long[''uname'']);
   session("id",$is_long[''uid'']);
  }
 }
}

登录后复制

模型 TestModel.class.php

<&#63;php
namespace Test\Model;
use Think\Model;
class TestModel extends Model{
 //验证登录信息
 public function checkName($name,$pwd){
  $admin = M("admin");
  $info = $admin->getByUname($name);
  if($info != null){
   //验证密码
   if($info[''upwd''] == $pwd){
    return $info;
   }else{
    return false;
   }
  }else{
   return false;
  }
 }
 //当用户勾选"记住我"
 public function saveRemember($uid,$identifier,$token,$timeout){
  $admin = M("admin");
  $data[''identifier''] = $identifier;
  $data[''token''] = $token;
  $data[''timeout''] = $timeout;
  $where = " uid = ".$uid;
  $res = $admin->data($data)->where($where)->save();
  return $res;
 }
 //验证用户是否永久登录(记住我)
 public function checkRemember(){
  $arr = array();
  $now = time();
  list($identifier,$token) = explode('':'',$_COOKIE[''auth'']);
  if (ctype_alnum($identifier) && ctype_alnum($token)){
   $arr[''identifier''] = $identifier;
   $arr[''token''] = $token;
  }else{
   return false;
  }
  $admin = M("admin");
  $info = $admin->getByidentifier($arr[''identifier'']);
  if($info != null){
   if($arr[''token''] != $info[''token'']){
    return false;
   }else if($now > $info[''timeout'']){
    return false;
   }else{
    return $info;
   }
  }else{
   return false;
  }
 }
}

登录后复制

视图 登录页 test.html

<DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
<form action="__CONTROLLER__/check" method="post">
<if condition="$username neq null">
 <input type="text" name="username" placeholder="用户名" value="{$username}"><br>
<else />
 <input type="text" name="username" placeholder="用户名"><br> 
</if>
<input type="password" name="pwd" placeholder="密码"><br>
<input type="text" name="yzm" placeholder="验证码"><img  src="__CONTROLLER__/verifyImg" onClick="this.src=this.src+''&#63;''+Math.random()" alt="ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2" ><br>
<input type="checkbox" name="remember" id="remember"><label for="remember">记住我</label>
<input type="submit" value="提交"> 
</form>
</body>
</html>

登录后复制

视图 个人中心 ucenter.html

<DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Documenttitle>
</head>
<body>
 <if condition="$session[''username''] neq null">
 <i>{$session.username},</i>
 <else />
 <i>游客,</i>
 </if>
 欢迎您<br>
 <a href="__CONTROLLER__/loginout">退出登录</a>
</body>
</html>

登录后复制

附:模块目录

补充:小编在这里推荐一款本站的php格式化美化的排版工具帮助大家在以后的PHP程序设计中进行代码排版:

php代码在线格式化美化工具:http://tools.jb51.net/code/phpformat

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2_PHP教程

ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2_PHP教程

thinkphp3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2

本文实例讲述了thinkphp3.2.2实现持久登录功能的方法。分享给大家供大家参考,具体如下:

实现持久登录,即用户在登录时,勾选了"记住我"之后,无论是否关闭浏览器,只要不退出登录,在指定的时间内始终保持登录状态(缺点是在另一台电脑上登录过后,之前那台电脑就不能继续保持登录状态)。

首先,持久登陆使用 cookie 实现,但是 cookie 中不能保存用户密码这样重要的信息,即使加密过。解决方案是在用户登录表中新建3个字段identifier:第二身份标识,token:永久登录标识,timeout:永久登录超时时间。

+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| uid | int(11) | NO | PRI | NULL | auto_increment |
| uname | varchar(20) | YES | | NULL | |
| upwd | varchar(20) | YES | | NULL | |
| uflag | int(11) | YES | | NULL | |
| identifier | varchar(32) | YES | | NULL | |
| token | varchar(32) | YES | | NULL | |
| timeout | int(11) | YES | | NULL | |
+------------+-------------+------+-----+---------+----------------+

登录后复制

在用户勾选了"记住我"登录时,应该生成一个唯一的 identifier,一个唯一的 token,并且设置一个过期时间 timeout,把两个代表身份的值写入cookie,设置 cookie 过期时间为 timeout,例如:setcookie(''auth'',"$identifier:$token",$timeout); 同时把三个值插入数据表;当用户再一次访问网站时,首先判断 cookie 中是否含有 auth,如果含有,则去数据库中进行身份比对(identifier 和 token),比对成功时,把用户信息写入 session,同时用户保持登录状态。

代码:

立即学习“PHP免费学习笔记(深入)”;

控制器 TestController.class.php

<&#63;php
namespace Test\Controller;
use Think\Controller;
class TestController extends Controller {
 public function login(){
  //判断是否永久登录
  $this->checkLong();
  //已经登录则跳转至个人中心
  if(isset($_SESSION[''username''])){
   $this->redirect(''Test/ucenter'');
  }else{
   //判断是否存在cookie
   if(isset($_COOKIE[''username''])){
    $this->assign(''username'',$_COOKIE[''username'']);
   }
   //显示注册页
   $this->display("test");
  }
 }
 //显示验证码
 public function verifyImg(){
  $verify = new \Think\Verify();
  //$verify->useZh = true; //使用中文验证码
  $verify->length = 4; 
  $verify->entry();
 }
 //验证登录
 public function check(){
  $verify = new \Think\Verify();
  if($verify->check(I("yzm"))){
   //判断用户名密码
   $user = new \Test\Model\TestModel();
   $res = $user->checkName(I("username"),I("pwd"));
   if($res === false){
    echo "用户名或密码错误";
   }else{
    //用户信息存入session
    session("username",$res[''uname'']);
    session("id",$res[''uid'']);
    //如果用户勾选了"记住我",则保持持久登陆
    if(I("remember")){
     $salt = $this->random_str(16);
     //第二分身标识
     $identifier = md5($salt . md5(I("username") . $salt));
     //永久登录标识
     $token = md5(uniqid(rand(), true));
     //永久登录超时时间(1周)
     $timeout = time()+3600*24*7;
     //存入cookie
     setcookie(''auth'',"$identifier:$token",$timeout);
     $user->saveRemember($res[''uid''],$identifier,$token,$timeout);
    }
    //把用户名存入cookie,退出登录后在表单保存用户名信息
    setcookie(''username'',I(''username''),time()+3600*24);
    //跳转至会员中心
    $this->redirect(''Test/ucenter'');
   }
  }else{
   echo "输入错误";
  }
 } 
 //测试strstr函数
 public function strstrtest(){
  $param = "Think\Verify";
  //第三个参数为true,返回''Think'';没有第三个参数,返回''\Verify''
  $name = strstr($param,''\\'',true);
  echo $name;
 }
 //用户中心
 public function ucenter(){
  //判断是否永久登录
  $this->checkLong();
  $this->assign("session",$_SESSION);
  $this->display("ucenter");
 }
 //退出登录
 public function loginout(){
  session(null);
  setcookie(''auth'', '''', time()-1);
  $this->redirect("Test/login");
 }
 //生成随机数,用于生成salt
 public function random_str($length){
  //生成一个包含 大写英文字母, 小写英文字母, 数字 的数组
  $arr = array_merge(range(0, 9), range(''a'', ''z''), range(''A'', ''Z''));
  $str = '''';
  $arr_len = count($arr);
  for ($i = 0; $i < $length; $i++){
   $rand = mt_rand(0, $arr_len-1);
   $str.=$arr[$rand];
  }
  return $str;
 }
 //判断是否持久登录
 public function checkLong(){
  $check = new \Test\Model\TestModel();
  $is_long = $check->checkRemember();
  if($is_long === false){
  }else{
   session("username",$is_long[''uname'']);
   session("id",$is_long[''uid'']);
  }
 }
}

登录后复制

模型 TestModel.class.php

<&#63;php
namespace Test\Model;
use Think\Model;
class TestModel extends Model{
 //验证登录信息
 public function checkName($name,$pwd){
  $admin = M("admin");
  $info = $admin->getByUname($name);
  if($info != null){
   //验证密码
   if($info[''upwd''] == $pwd){
    return $info;
   }else{
    return false;
   }
  }else{
   return false;
  }
 }
 //当用户勾选"记住我"
 public function saveRemember($uid,$identifier,$token,$timeout){
  $admin = M("admin");
  $data[''identifier''] = $identifier;
  $data[''token''] = $token;
  $data[''timeout''] = $timeout;
  $where = " uid = ".$uid;
  $res = $admin->data($data)->where($where)->save();
  return $res;
 }
 //验证用户是否永久登录(记住我)
 public function checkRemember(){
  $arr = array();
  $now = time();
  list($identifier,$token) = explode('':'',$_COOKIE[''auth'']);
  if (ctype_alnum($identifier) && ctype_alnum($token)){
   $arr[''identifier''] = $identifier;
   $arr[''token''] = $token;
  }else{
   return false;
  }
  $admin = M("admin");
  $info = $admin->getByidentifier($arr[''identifier'']);
  if($info != null){
   if($arr[''token''] != $info[''token'']){
    return false;
   }else if($now > $info[''timeout'']){
    return false;
   }else{
    return $info;
   }
  }else{
   return false;
  }
 }
}

登录后复制

视图 登录页 test.html

<DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
<form action="__CONTROLLER__/check" method="post">
<if condition="$username neq null">
 <input type="text" name="username" placeholder="用户名" value="{$username}"><br>
<else />
 <input type="text" name="username" placeholder="用户名"><br> 
</if>
<input type="password" name="pwd" placeholder="密码"><br>
<input type="text" name="yzm" placeholder="验证码"><img  src="__CONTROLLER__/verifyImg" onClick="this.src=this.src+''&#63;''+Math.random()" alt="ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2_PHP教程" ><br>
<input type="checkbox" name="remember" id="remember"><label for="remember">记住我</label>
<input type="submit" value="提交"> 
</form>
</body>
</html>

登录后复制

视图 个人中心 ucenter.html

<DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Documenttitle>
</head>
<body>
 <if condition="$session[''username''] neq null">
 <i>{$session.username},</i>
 <else />
 <i>游客,</i>
 </if>
 欢迎您<br>
 <a href="__CONTROLLER__/loginout">退出登录</a>
</body>
</html>

登录后复制

附:模块目录

补充:小编在这里推荐一款本站的php格式化美化的排版工具帮助大家在以后的PHP程序设计中进行代码排版:

php代码在线格式化美化工具:http://tools.jb51.net/code/phpformat

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1127892.htmlTechArticleThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2 本文实例讲述了ThinkPHP3.2.2实现持久登录功能的方法。分享给大家供大家参考,具体...

我们今天的关于ThinkPHP3.2.2的插件控制器功能thinkphp插件机制的分享已经告一段落,感谢您的关注,如果您想了解更多关于thinkphp-Thinkphp3.2中添加phpfetcher(php爬虫插件)的问题、thinkPHP3.2.2 控制器内跳转的三种方式、ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2、ThinkPHP3.2.2实现持久登录(记住我)功能的方法,thinkphp3.2.2_PHP教程的相关信息,请在本站查询。

本文标签: