当我不需要它时,php逃脱

时间:2010-02-03 23:15:17

标签: php escaping

我遇到了一个问题,PHP正在逃避我在这段代码中真正不想要的地方:

        $url_ = stripslashes(((substr(strtolower($url),0,7)!="http://")? "http://".$url:$url));
        $host = $this->googleDomains[mt_rand(0,count($this->googleDomains)-1)];
        $target = "/search?";
        $querystring = sprintf("client=navclient-auto&ch=%s&features=Rank&q=%s",
            $this->CheckHash($this->HashURL($url_)),urlencode("info:".$url_));
        $contents="";

        $this->debugRes("host", $host);
        $this->debugRes("query_string", $querystring);
        $this->debugRes("user_agent", $this->userAgent);

因此产生这样的URL,导致脚本失败:

{"urls":[{"url":"hostcule.com","converted_url":"http:\/\/toolbarqueries.google.com\/search??client=navclient-auto&ch=74451333464&features=Rank&q=info%3Ahttp%3A%2F%2Fhostcule.com"}]}

如何阻止它?

魔术行情已关闭。

以下是$ url来自:

foreach (preg_split('#[\r\n]+#', $_POST['urls']) as $url) {
        $url = trim($url);
        if ($url)
            $_SESSION['converted_urls'][] = array('url' => $url, 'converted_url' => $pr->GetPR($url, true, true));
    }

在这个阶段,$ _POST ['urls']看起来像:

{"urls":[{"url":"hostcule.com","converted_url":"http:\/\/www.google.com\/search??client=navclient-auto&ch=74451333464&features=Rank&q=info%3Ahttp%3A%2F%2Fhostcule.com"}]}

虽然$ url看起来像

 {"urls":[{"url":"hostcule.com","converted_url":"http:\/\/www.google.com\/search??client=navclient-auto&ch=74451333464&features=Rank&q=info%3Ahttp%3A%2F%2Fhostcule.com"}]}

3 个答案:

答案 0 :(得分:2)

该代码中没有任何内容可以生成您引用的代码。

我怀疑$url已经包含了乱码http\/\/,因此你的http://识别机制永远不会触发。

您需要退一步看看$url的来源。你的问题就在那里。

答案 1 :(得分:1)

你在那里的代码根本没有任何逃避。您需要在此行之后将您所做的内容发布到$ url_。

答案 2 :(得分:0)

使用'代替“