yii中的restful方式输出并调用接口和判断用户是否登录状态
//创建一个控制器接口 返回的是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方式输出并调用接口和判断用户是否登录状态的更多相关文章
- ecshop的模板文件中如何判断用户是否登录
ecshop中对于smarty的运用和改造有很大的值得借鉴的地方,在dwt模板文件中可以直接判断用户是否登录,现在有规定,凡是只展示不销售的电商平台,一律不得展示商品价格,但可以在用户登录后显示. & ...
- antd pro中如何使用mock数据以及调用接口
antd pro的底层基础框架使用的是dva,dva采用effect的方式来管理同步化异步 在dva中主要分为3层 services models components models层用于存放数据 ...
- Confluence 6 Windows 中以服务方式自动重启修改运行服务的用户
基于安全的考虑,如果你希望你的 Confluence 不是在系统中以管理员的身份运行或者你使用网络驱动器来存储备份,附件和索引的话,你可以以其他用户来运行 Confluence. 希望修改用户,打开 ...
- laravel 中 同个主域名下,多个项目共享session登录状态
共享session的前提是session在一个公共的地方,比如database,redis等,laravel框架提供了很大驱动选择: 这里只需要在配置文件里配置三个地方即可 'driver' => ...
- Yii中利用filters来控制访问
filters()方法定义在CController里,用Gii生成Controller时里面就有filters方法,代码如下: public function filters() { // retur ...
- RESTful (俗称:api接口文档)
整体规范建议采用RESTful 方式来实施. 协议 API与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安全. 域名 应该尽量将API部署在专用域名之下.https://api.exam ...
- 利用express-session插件实现nodejs中登录状态的保存
什么是session? session就是会话,客户端和服务器直接的会话.他的粒度比http链接更粗,一次会话包含了多次连接.即一个session是多次http连接的集合.从我的客户端连接到服务器到关 ...
- YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法
上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把 ...
- 【Rest】在Dubbo中开发REST风格的远程调用(RESTful Remoting)
目录 概述 REST的优点 应用场景 快速入门 标准Java REST API:JAX-RS简介 REST服务提供端详解 HTTP POST/GET的实现 Annotation放在接口类还是实现类 J ...
随机推荐
- Ubuntu上Qt之简单图片浏览器
>>主要功能: (1)图片切换浏览,上一张/下一张. (2)图片放大.缩小.包括两种机制:鼠标滚轮和按钮放大/缩小. (3)图片自动循环播放,间隔2s.点击播放后,其他操作均无效,直至点 ...
- Rosserial实现Windows-ROS交互操作
安装 sudo apt-get install ros-indigo-rosserial-windows sudo apt-get install ros-indigo-rosserial-serve ...
- Python时间、日期、时间戳之间的转换
一.字符串与为时间字符串之间的互相转换 方法:time模块下的strptime方法 a = "2012-11-11 23:40:00" # 字符串转换为时间字符串 import t ...
- Spring Security 安全验证
摘自:https://www.cnblogs.com/shiyu404/p/6530894.html 这篇文章是对Spring Security的Authentication模块进行一个初步的概念了解 ...
- 69A
#include <stdio.h> int main() { int n; int sum1=0, sum2=0, sum3=0; int x, y, z; scanf("%d ...
- 安装和使用ZFS
一.安装和使用ZFS Centos7上安装和使用ZFS:https://blog.csdn.net/linuxnews/article/details/51286358
- zabbix-agent 在SElinux Enforcing 状态的文件权限问题及解决办法
因为某种原因必须要开启SElinux,用yum装了一个zabbix-agent 替换了一下配置文件结果悲剧了 # systemctl restart zabbix-agent ● zabbix-age ...
- 十、无事勿扰,有事通知(1)——NSNotification
概述 很久很久以前,有一只菜鸟正在美滋滋的撸着他的嵌入式C代码.然而有一天,老板对菜鸟说:“别撸C了,从现在开始你就写swift开发ios了.”菜鸟一脸懵逼,但还是照做了. 又有一天,菜蛋谄媚的对菜鸟 ...
- 《linux就该这么学》第十节课:第8章iptables和firewalld
网卡配置: 物理机:192.168.10.1/24 服务器:192.168.10.10/24 客户端:192.168.10.20/24 1.vim /etc/sysc ...
- keepalived 工作原理
keepalived主要通过vrrp协议为基础进行通信 所以先从VRRP协议说起: VRRP: 英文全称 Virtual Router Redundancy Protocol, .中文:虚拟路由冗余协 ...