2017-08-25 49 views
1

我有一个管理员部分,可以限制用户只搜索选定的国家/地区。因此,如果我选择用户只能搜索美国和法国,这些国家的ID将作为字符串存储在表中。所以它会是1,2;如何限制用户更改URL中的参数

但是让我们说,用户只能在美国进行搜索,所以ID为1

当用户开始搜索我得到这个值,并将其存储在变量:

$searchableCountry = explode(",", Input::get('searchableCountry')); 

这是搜索条件:

if ($searchableCountry != null) { 
      $results = $cl->Filter('country', $searchableCountry); 
     } 

而且我得到的URL是这样的: http://myapp.com/search?q=Adidas&searchableCountry=1

但用户可以编辑URL并更改searchableCountry值并搜索其他国家。我怎样才能避免这种情况?这可以通过Session完成吗?如果是,请给我一个例子?

BTW搜索我用这个包https://github.com/sngrl/sphinxsearch

PS我不得不使用GET方法!

回答

0

如果你想限制你的用户只能做点什么,你不应该让他们选择他们想要的,你必须修改你的规则。

$results = $cl->Filter('country', $config['country']['us']); 

如果你想向他们发放许可,更多的国家根据它们是一级搜索,你必须添加一些更多的权限设置,如用户级别,因此,如果他们访问http://myapp.com/search?q=Adidas&searchableCountry=3,因为他们可以返回一个错误没有许可。

例如我的想法,尚未测试,但应该工作。

<?php 

//your user data 
$user = json_decode('{ 
    "user_id" : NumberLong(1004109307), 
    "fullname" : "Johnny", 
    "email" : "[email protected]", 
    "phone" : "123456789", 
    "role" : "basic", //wich user can search US,FRANCE for country id is [1,2] 
    "create_time" : NumberLong(1503537866) 
}', true); //retun an array 

//Your country id config somewhere 
$country_list = array(
    'US' => 1, 
    'FR' => 2, 
    'JP' => 3, 
    'CN' => 4, 
); 
//Your config somewhere 
$searchable_country_config = array(
    'basic' => array(
     $country_list['US'], //1 
     $country_list['FR'], //2 
    ), 
    'premium' => array(
     $country_list['JP'], 
     $country_list['CN'], 
    ), 
); 

$searchable_request = (Input::get('searchableCountry')) ? Input::get('searchableCountry') : 1; // 2 for example 
$searchable_permission = $searchable_country_config[$user['role']]; 

//lets check that does this user have permission on their request 
if(in_array($searchable_request,$searchable_permission)) 
{ 
    $results = $cl->Filter('country', $searchable_request); 
} else { 
    return response()->json(array(
     'status' => 'error', 
     'message' => 'You have not access for this country' 
    )); 
} 
+0

我有用户角色(基本,高级,管理等...)。但我不知道如何将它与URL限制连接起来? – harunB10

+0

@ harunB10查看我的更新 – vietnguyen09