Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我如何才能获得访问确切页面的客户信息?_Php_Api - Fatal编程技术网

Php 我如何才能获得访问确切页面的客户信息?

Php 我如何才能获得访问确切页面的客户信息?,php,api,Php,Api,我有一段代码,它来自我想创建的插件: <?php declare(strict_types = 1); use Ubnt\UcrmPluginSdk\Service\UcrmApi; use Ubnt\UcrmPluginSdk\Service\UcrmSecurity; use Ubnt\UcrmPluginSdk\Security\PermissionNames; chdir(__DIR__); require_once __DIR__ . '/vendor/autoload.

我有一段代码,它来自我想创建的插件:

<?php

declare(strict_types = 1);

use Ubnt\UcrmPluginSdk\Service\UcrmApi;
use Ubnt\UcrmPluginSdk\Service\UcrmSecurity;
use Ubnt\UcrmPluginSdk\Security\PermissionNames;

chdir(__DIR__);

require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/main.php';

$fullAddress = isset($_GET['fullAddress']) ? $_GET['fullAddress'] : '';
$firstName = isset($_GET['firstName']) ? $_GET['firstName'] : '';
$lastName = isset($_GET['lastName']) ? $_GET['lastName'] : '';

// GET collection of clients
$clients = UCRMAPIAccess::doRequest('clients') ?: [];
//echo sprintf('Found %d clients.', count($clients)) . PHP_EOL;

// GET the client data that access the 'Contract' page
foreach($clients as $client) {
    $response = UCRMAPIAccess::doRequest(
        sprintf('clients/%d', $client['id']),
        'GET',
        [
            'fullAddress' => $fullAddress,
            'firstName' => $firstName,
            'lastName' => $lastName,
        ]
    );

    if($response !== null) {
        echo sprintf('The following details are for client number: <b>%d</b>', $client['id']);
        echo '<ul>';
                echo sprintf('<li>%d</li>', $client['id']);
                echo sprintf('<li>%s</li>', $client['fullAddress']);
                echo sprintf('<li>%s</li>', $client['firstName'] . ' ' . $client['lastName']);
        echo '</ul>';
    } else {
        echo sprintf('There was an error retrieving data from client: %d.', $client['id']) . PHP_EOL;
    }
}

echo 'Done.' . PHP_EOL;

由于
$clients
变量是一个数组,其中包含访问该页面的所有客户端的列表,因此您可以在此处获取集合:

$clients=UCRMAPIAccess::doRequest('clients')?:[];
我相信你是想得到一个刚刚访问页面的客户,因为你说:

单击“合同”页时,我想获取我的客户信息,而不是所有客户的信息

然后,我相信您可以过滤
$clients
数组以查找与id匹配的单个客户机,前提是您知道要查找的客户机的id

例如:

$clients=UCRMAPIAccess::doRequest('clients')?:[];
$you=(对象)数组('firstName'=>'foo','lastName'=>'bar','id'=>1);
$meInClients=array\u filter($clients,function($k){
//按键筛选
},数组\过滤器\使用\键)
$clients[meInClients]
但在这种情况下,您的程序似乎不知道用户要查找什么,所以这里的过滤器或搜索可能不起作用。您要做的是获取刚刚访问该页面的最后一个用户,自然该用户将是数组中的最后一个用户

因此:

$clients=UCRMAPIAccess::doRequest('clients')?:[];
$whoJustVisitedPage=$clients[计数($clients)-1]
所以这可能有用

更新:

当您以John Doe的身份访问该页面并转到该页面时,$clientsWhoVisitedPage数组现在变成$clientsWhoVisitedPage+you(当前经过身份验证的用户a.k.a是最后一个查看该页面的人)在这种情况下,您可以首先过滤$client数组,使其不包含当前经过身份验证的用户,然后获取新数组中的最后一个用户

像这样:

$me=$security->getUser();
$clientsExceptMe=array_filter($clients,function($client,$x){
返回$client->id!=$me->id;
},数组_过滤器_使用_两者));
$lastPageVisitor=$clientsExceptMe[计数($clientsExceptMe)-1]
lastPageVisitor
现在应该为您提供访问该页面的最后一位不是当前已验证用户的人。

我不知道UCrPageAccess::doRequest的代码,因此我无法帮助您解决此问题,尽管这是第三个问题。(关于该类/方法的搜索文档)

作为一个非常糟糕的解决方案,你可以这样做

$fullAddress=isset($\u GET['fullAddress'])$_获取['fullAddress']:'';
$firstName=isset($\u GET['firstName'])$_获取['firstName']:'';
$lastName=isset($\u GET['lastName'])$_获取['lastName']:'';
//获取客户端的集合
$clients=UCRMAPIAccess::doRequest('clients')?:[];
//echo sprintf('找到%d个客户端'),计数($clients))。PHP_EOL;
//获取访问“合同”页面的客户端数据
foreach($clients作为$client){
$response=UCRMAPIAccess::doRequest(
sprintf('clients/%d',$client['id']),
“得到”,
[
“fullAddress”=>$fullAddress,
“firstName”=>$firstName,
“lastName”=>$lastName,
]
);
如果($response!==null
&&$firstName==$client['firstName']
&&$lastName==$client['lastName']
&&$fullAddress==$client['fullAddress']
) {
echo sprintf('以下详细信息用于客户端编号:%d',$client['id']);
回声“
    ”; echo sprintf(“
  • %d
  • ”,$client['id'); echo sprintf(“
  • %s
  • ”,$client['fullAddress'); echo sprintf(“
  • %s
  • ”,$client['firstName'..”.$client['lastName']); 回声“
”; } } echo“完成”。PHP_EOL;
进入此页面需要登录吗?如果是,则会话中通常有登录用户的用户id,然后您可以只回显属于该客户端的数据。现在你只是在回应所有的客户。在库的自述中,有一个关于获取已登录用户的说明。($user=$security->getUser();)您说过“我作为客户机登录”。你是怎么做到的?@alexandernig,我使用了自述文件中解释的技术,但是如果我使用
$user=$security->getUser()然后我不能作为客户端访问该页面,因为它不是管理员。我想创建的插件只针对客户端@icalvete,我可以切换到客户端区域(我转到客户机,然后选择一个客户机,在客户机页面上我以客户机的身份查看。有关于类/方法UCRMAPIAccess::doRequest的公开信息?你在说什么自述?@icalvete,我发布了UCRMAPIAccess类作为答案。它起作用了,它从一个客户机接收信息,但是,例如,当我以John Doe我访问了该页面,我获得了John Doe的信息,但在我以Jane Doe的身份登录之后,我访问了该页面,我仍然获得了John Doe的信息。嗯,我不确定我是否理解你的意思,但这似乎是你现在面临的另一个问题。是否希望
$whoJustVisitedPage
变量保存当前经过身份验证的用户?或者您希望它保存上次访问合同页面的用户的值?如果答案有帮助,您也可以将其标记为第一个问题的解决方案,以帮助其他人。是的,
$whoJustVisitedPage
保存当前经过身份验证的用户的变量,这就是我试图解释的是的,但是我很抱歉如果你第一次没有得到它,那是我的错,哈哈。哦,我现在理解你了,所以发生了这样的事情,我将使用抽象术语,让你在一个高层次上理解:-当你以John Doe的身份访问页面并进入该页面时,(
$clientsWhoVisitedPage
数组现在变成
$clientsWhoVisitedPage+你(当前经过身份验证的用户a.k.a是最后一个查看页面的人)
在这种情况下,您可以做的是首先筛选
$client
数组