2017-04-04 77 views
0

即时通讯使用CakePHP做插件,所以我也apiController返回从数据库数据(更新).. 我打电话是函数为:的CakePHP不能在URL中读取令牌传递

$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);

,并在该函数的getData在apiController我这样做:

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

感谢帮助...

回答

0

我而假设下,你使用CakePHP 2.0编写这个答案。

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

例子:

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

在这个例子中$post将包含1 该文档还指出:

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

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

这意味着,如果你想获取不存在查询,你会在error message代替获得一个零如果没有正确捕获。

所以让你的令牌,你必须做的线沿线的东西:

<?php 

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

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

感谢的回答,但问题还是一样的! – Fredj

+0

问题可能存在于其他地方吗?也许运行CakePHP的Web服务器会剥离查询字符串,或者将代码放在错误的控制器中?可能是生成请求的代码部分中的URL不正确。 – Sevvlor

+0

现在它的工作,我的意思是令牌存在,而不是nul,但内容不像其他时,我称之为功能! – Fredj