//创建一个控制器接口  返回的是restful方式
<?php
namespace frontend\controllers;
use frontend\models\Fenlei;
use frontend\models\Goods;
use frontend\models\Power;
use frontend\models\User;
use yii;
use yii\web\Controller;
use yii\rest\ActiveController;
class RestfulController extends ActiveController
{
protected $result=[
'code'=>0,
'data'=>'',
'error'=>''
];
public $modelClass=''; public function actions()
{
$actions=parent::actions();
unset($actions['view'],$actions['index'],$actions['create'],$actions['delete'],$actions['update']);
return $actions;
} //登录页面
public function actionLogin()
{
$data['name']=Yii::$app->request->post('name');
$data['pwd']=Yii::$app->request->post('pwd');
if(empty( $data['name']) || empty($data['pwd']))
{
$this->result['error']="用户名密码不能为空";
$this->result['code']="1001";
return $this->result;
}
$aa=User::user($data);
if($aa)
{
Yii::$app->cache->set('name',1,7200);
$token=md5($data['name'].$data['pwd']);
$this->result['data']=$token;
$this->result['error']="登录成功";
}else{
$this->result['error']="登录失败";
}
return $this->result;
}
}
//然后通过另一个控制器来调用接口
<?php
namespace frontend\controllers;
use frontend\models\Curl;
use yii;
use yii\web\Controller;
use yii\rest\ActiveController;
class LoginController extends Controller
{
//登录页面
public function actionLogin()
{
$name=Yii::$app->request->get('name');
$pwd=Yii::$app->request->get('pwd');
$curl = new Curl();
$url='http://weixin.api.com/index.php/restful/login';
$data=[
'name'=>$name,
'pwd'=>$pwd
];
$aa=$curl->getCurl($url,'post',$data);
//返回的是json数据
$a=json_decode($aa,true);
$token=$a['data'];
file_put_contents('login.txt',$token);
var_dump($token);
}
}
//这是curl的方式调用
<?php
namespace frontend\models;
class Curl
{
public function getCurl($url,$type='get',$data,$https='true')
{
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
if($type=='post')
{
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
if($https=='false')
{
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
}
$data=curl_exec($ch);
curl_close($ch);
return $data;
}
}
//判断用户是否登录的状态
<?php
namespace frontend\controllers;
use frontend\models\Curl;
use yii;
use yii\web\Controller;
class CatController extends Controller
{
//判断用户是否存在
public function init()
{
$name=Yii::$app->cache->get('name');
if($name !=1)
{
Yii::$app->cache->set('name',2);
return "请登录";
}
} //水果的添加
public function actionAdd()
{
$data['g_goods']=Yii::$app->request->get('g_goods');
$data['g_kc']=Yii::$app->request->get('g_kc');
$data['id']=Yii::$app->request->get('id');
$url='http://weixin.api.com/index.php/restful/add';
$curl = new Curl();
$aa=$curl->getCurl($url,'post',$data);
var_dump($aa);
}
}

yii中的restful方式输出并调用接口和判断用户是否登录状态的更多相关文章

  1. ecshop的模板文件中如何判断用户是否登录

    ecshop中对于smarty的运用和改造有很大的值得借鉴的地方,在dwt模板文件中可以直接判断用户是否登录,现在有规定,凡是只展示不销售的电商平台,一律不得展示商品价格,但可以在用户登录后显示. & ...

  2. antd pro中如何使用mock数据以及调用接口

    antd pro的底层基础框架使用的是dva,dva采用effect的方式来管理同步化异步 在dva中主要分为3层 services  models  components models层用于存放数据 ...

  3. Confluence 6 Windows 中以服务方式自动重启修改运行服务的用户

    基于安全的考虑,如果你希望你的 Confluence 不是在系统中以管理员的身份运行或者你使用网络驱动器来存储备份,附件和索引的话,你可以以其他用户来运行 Confluence. 希望修改用户,打开 ...

  4. laravel 中 同个主域名下,多个项目共享session登录状态

    共享session的前提是session在一个公共的地方,比如database,redis等,laravel框架提供了很大驱动选择: 这里只需要在配置文件里配置三个地方即可 'driver' => ...

  5. Yii中利用filters来控制访问

    filters()方法定义在CController里,用Gii生成Controller时里面就有filters方法,代码如下: public function filters() { // retur ...

  6. RESTful (俗称:api接口文档)

    整体规范建议采用RESTful 方式来实施. 协议 API与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安全. 域名 应该尽量将API部署在专用域名之下.https://api.exam ...

  7. 利用express-session插件实现nodejs中登录状态的保存

    什么是session? session就是会话,客户端和服务器直接的会话.他的粒度比http链接更粗,一次会话包含了多次连接.即一个session是多次http连接的集合.从我的客户端连接到服务器到关 ...

  8. YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法

    上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...

  9. 【Rest】在Dubbo中开发REST风格的远程调用(RESTful Remoting)

    目录 概述 REST的优点 应用场景 快速入门 标准Java REST API:JAX-RS简介 REST服务提供端详解 HTTP POST/GET的实现 Annotation放在接口类还是实现类 J ...

随机推荐

  1. [本体论][UML][统一建模语言][软件建模][OWL]从本体论到UML到OWL

    以下内容,是关于软件建模的方法与思路. UML与OWL都是基于本体论的建模语言. 本体论(哲学) 本体论(信息科学) UML(统一建模语言) more info 参考:[设计语言][统一建模语言][软 ...

  2. py三个面试小问题

    1.是否遇到过Python的模块间循环引用的问题,如何避免它? 这是代码结构设计的问题,模块依赖和类依赖,如果老是觉得碰到循环引用可能的原因有几点: a.可能是模块的分界线划错地方了 b.可能是把应该 ...

  3. DjangoMTV模型之model层——ORM操作数据库(基本增删改查)

    Django的数据库相关操作 对象关系映射(英语:(Object Relational Mapping,简称ORM),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说 ...

  4. Python3学习之路~5.11 configparser模块

    用于生成和修改常见配置文档,当前模块的名称在 python 2.x 版本中为 ConfigParser, python 3.x 版本中变更为 configparser. 来看一个好多软件的常见文档格式 ...

  5. [iOS] 测试设备解决自签名证书问题

    不多说,解决过程都是泪. 用了最简单粗暴的方式. 1. 将你的自签名证书,放到测试设备可以访问的站点上 2. 用safari访问上面的地址,直接将证书安装到本设备上 搞掂! Have fun with ...

  6. css td hover 选择器无效

    最近在写一个日历控件,控件中使用了table 来显示日期.在css 文件中利用 td:hover 设置td 背景色时 一直没起作用.上百度google 了一下,网上大部分人遇到的都是在td:hover ...

  7. python 定义带默认参数的函数

  8. Linux基础命令---lp打印文件

    lp lp指令用来打印文件,也可以修改存在的打印任务.使用该指令可以指定打印的页码.副本等. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.openSUSE.SU ...

  9. 新手如何学习python(python学习路线图)

    现在互联网巨头,都已经转投到人工智能领域,而人工智能最好的编程语言就是python,未来前景显而易见.这是小编给大家整理的python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻 ...

  10. win10忘记开机密码无法进入桌面

    第一种: 电脑用微软账户登录,但密码始终不正确. 登陆这个网址    https://account.live.com/password/reset 按照提示的操作利用之前注册信息一步步重设密码 最后 ...