cakephp无法读取url中传递的令牌

时间:2017-04-04 11:52:32

标签: cakephp

我使用cakephp制作插件,所以我做了apiController从数据库返回数据(更新)。 我把这个函数称为:



$token = hash("sha256","appliTest".strtotime(date('Y-m-d')));
 $date = strtotime(date('Y-m-d'));
     $api_data = file_get_contents("http://local.mywebsite.com/appliTest/
     api/getData?token=".$token);




在apiController中的函数getData中我做了这个:



if((isset($this->params["url"]["token"])) 
&&($this->params["url"]["token"]==hash("sha256","appliTest".strtotime(date('Y-m-d'))))){
die("ok");
}




感谢帮助...

1 个答案:

答案 0 :(得分:0)

我在假设你正在使用CakePHP 2.0时写这个答案。

Request and Response文档指出您可以通过调用$this->request->query['page'];从网址获取查询。

示例:

// URL is /posts/index?page=1&sort=title
$page = $this->request->query['page'];

在此示例中,$post将包含1。 该文件还指出:

  

您可以直接访问$ query属性,也可以使用CakeRequest :: query()以无错误的方式读取URL查询数组。任何不存在的键都将返回null:

$foo = $this->request->query('value_that_does_not_exist');
// $foo === null

这意味着如果您尝试获取的查询不存在,如果未正确捕获,您将获得null而不是error message

所以要获得你的令牌,你必须按照以下方式做一些事情:

<?php

$token = $this->request->data('token');

if($token != null && ($token == hash("sha256","appliTest".strtotime(date('Y-m-d'))))){
    die("ok");
}