//创建一个控制器接口  返回的是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. Python爬虫实例(四)网站模拟登陆

    一.获取一个有登录信息的Cookie模拟登陆 下面以人人网为例,首先使用自己的账号和密码在浏览器登录,然后通过抓包拿到cookie,再将cookie放到请求之中发送请求即可,具体代码如下: # -*- ...

  2. SVProgressHUD提示框IOS

    SVProgressHUD--比MBProgressHUD更好用的 iOS进度提示组件 项目里用到SVProgressHud,感觉背景颜色太丑,因为很久很久以前改过,就想在这个项目里也改下,但是时间过 ...

  3. SharePoint 命令行

    网站集备份: Backup-SPSite http://sp2013 -Path C:\sp.bak 网站集还原: Restore-SPSite http://sp2013/sites/dyzx -P ...

  4. python框架之Django(6)-查询优化之select_related&prefetch_related

    准备 定义如下模型 from django.db import models # 省份 class Province(models.Model): name = models.CharField(ma ...

  5. unity 安装破解提示partern not found和tutorials学习

    1.破解安装问题:unity 安装破解提示partern not found 可能和安装了多个版本有关,删除了c下的unity目录也没有解决,试着重新安装也不能破解, 破解的软件的方式是生成lisen ...

  6. Oracle 11.2.0.4 RAC重建EM案例

    环境:Oracle 11.2.0.4 RAC 重建EM 背景:客户之前的EM已经被损坏,需要重建EM 重建EM的方案有很多,其中最简单的方法是:直接使用emca重建,oracle用户下,只需一条命令搞 ...

  7. git基本操作及上传代码到gitHub

    1.基本配置: 配置用户名:git config --global user.name" "; 配置邮箱:git config --global user.email " ...

  8. 微信内置安卓x5浏览器请求超时自动重发问题处理小记

    X5内核  请求超时后会自动阻止请求返回并由代理服务器将原参数重新发送请求到服务层代码.但由于第一次请求已经请求到服务器,会导致出现重复下单.支付等重大问题. 该问题由于腾讯x5浏览器会自动阻止第一次 ...

  9. C++对象赋值问题

  10. pypi上传问题

    pypi上传过程中报错403 windows 解决办法: 1.建一个新的记事本编辑内容 [distutils]index-servers = pypi [pypi]repository:https:/ ...