繁体   English   中英

从file_get_contents清除奇怪的参数

[英]Clear strange parameters from file_get_contents

我的客户通过服务与数据库联系。 当我执行一些操作时,我使用file_get_contents调用服务URL,然后处理响应。

我认为,当用户从Google搜索结果进入该网站时,我认为Google会将一些参数添加到属于file_get_contents我的服务URL中。

例如,应该如此

file_get_contents(service.domain/service_name?param1=0) 

但是google在url的末尾添加了一些奇怪的参数。 像这样:

file_get_contents(service.domain/service_name?param1=0&force=1)

我看到了两个或三个奇怪的参数,

force = 1
gclid=CNC-jvTapbcCFaaj

我不知道如何处理和删除这些参数。

在使用file_get_contents调用URL之前,如何删除这些奇怪的参数?

这是我的功能:

public function getWhere($keyword)
{
    $locale = session('locale');
    if($locale != "en" && $locale != "")
    {
        $locale = "_".session('locale');
    }else{
        $locale = "";
    }

    $page = file_get_contents(getenv('API_URL')."station_info?search.url=".$keyword);
    $page = json_decode($page);
    $page = (array) $page->rows;
    $station = $page[0];

    if($station->search->status == 1)
    {
        return redirect('/');
    }
    return view('station', compact('station', 'locale'));
}

奇怪的参数会将其自身添加到URL的末尾。

编辑

我认为有人正在尝试某事。 $ keyword必须使用一个字符串,该字符串是站点名称,例如London。 但是有人试图发送London&force = 1,所以我必须检查$ keyword变量。

您可以通过parse_url函数解析网址,删除不需要的参数或仅保留所需的参数并生成网址

使用parse_url函数后,您可能需要通过parse_str函数来解析query ,因此代码如下所示:

$urlParsed = parse_url("service.domain/service_name?param1=0&force=1");
$params = parse_str ($urlParsed['query']);
$newParams = [];
$neededParams = ['param1', 'param2'];
foreach ($neededParams as $p) {
    if (isset($params[$p])) {
        $newParams[$p] = $params[$p];
    }
}

$newUrl = $urlParsed['scheme'] . '://' . $urlParsed['host'] . $urlParsed['path'] . '?' . http_build_query($newParams);

file_get_contents($newUrl);

我没有测试该代码,但是我希望这个想法很明确,您可以根据需要进行修改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM