//创建一个控制器接口  返回的是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. Apache ab并发负载压力测试(python+django+mysql+apache)

    如标题,大家都知道秒杀中存在高并发使库存骤然为0,但在我们个人PC或小区域内是模拟不出这样的情景 现在利用 Apache ab并发负载压力测试 1,数据库建入库存字段并映射模型 2,view编写脚本 ...

  2. 洛谷P3455 ZAP-Queries [POI2007] 莫比乌斯反演+数论分块

    正解:莫比乌斯反演 解题报告: 传送门! 首先这题刚看到就很,莫比乌斯反演嘛,和我前面写了题解的那个一模一样的,所以这儿就不讲这前边的做法辣QAQ 但是这样儿还有个问题,就现在已知我每次都是要O(n) ...

  3. openshift 容器云从入门到崩溃之十《容器监控-数据展示》

    POD资源历史曲线(CPU.内存.网络) 监控方案heapster+hawkular-metrics+hawkular-cassandra heapster负责收集数据 hawkular-cassan ...

  4. Centos不能上外网解决

    检查路由 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0 ...

  5. 下载工具axel 和 mwget

    axel, yum安装或者apt-get安装 但有时axel不行,需要上wget,但单线程的太慢,需要安装mwget.apt-get -y install intltoolwget http://ja ...

  6. js中变量名加“-” new Vue()不执行

    如var app-1 = new Vue(): 不执行的 var app1 = new Vue(): 才能执行

  7. js跨域交互之jsonp - 看完就能让你了解jsonp原理 (原)

    跨域? 跨域的安全限制都是对浏览器端来说的,服务器端是不存在跨域安全限制的. 同源策略? 一般来说 a.com 的网页无法直接与 b.com的服务器沟通, 浏览器的同源策略限制从一个源加载的文档或脚本 ...

  8. WxWidgets笔记

    关于环境变量的配置:解压wxwidgets的压缩包之后要新建名为 WXWIN 的环境变量,变量的值为 解压得到的目录,不知为何要使用此环境变量 编译时使用的命令:mingw32-make -j1 -f ...

  9. Python记录11:叠加多个装饰器+有参装饰器

    # import time## def timmer(func): #func=最原始的index的内存地址# def wrapper(*args,**kwargs):# start=time.tim ...

  10. hdu5517 二维树状数组

    题意是给了 n个二元组 m个三元组, 二元组可以和三元组 合并生成3元组,合并条件是<a,b> 与<c,d,e>合并成 <a,c,d> 前提是 b==e, 如果存在 ...