解析url localhost vs online

时间:2013-11-26 08:52:43

标签: php url localhost

我有这个简单的方法来检查一个网址是否属于我的管理区域。

protected function is_admin_url ( $url ) {
    $parts = parse_url( $url );
    if ( !empty($parts['path']) ) {
        $steps = explode('/', $parts['path']);
        if ( $steps[1] == $this->slug ) // $steps[0] will always be empty
            return true;
    }
    return false;
}

它应该返回true格式http://example.com/slug/foo?bar=baz中的任何网址 我遇到的问题是,在我的本地计算机上进行开发(使用WAMP)时,所有网址都采用http://localhost/example.com/slug/foo?bar=baz形式。这当然会破坏方法,因为域现在是路径的一部分。

对数组索引进行硬编码势必会导致错误。我可以添加任何条件语句来处理这个问题吗?

我还应该注意,这是WordPress插件的一部分。网站网址未知。

3 个答案:

答案 0 :(得分:1)

您可以检查$steps[1]中是否有点或只是检查您是否在本地环境中工作:

protected function is_admin_url ( $url ) {
    $parts = parse_url( $url );
    if ( !empty($parts['path']) ) {
        $steps = explode('/', $parts['path']);
        $slug = $steps[1];
        if (strpos($steps[1], '.')) $slug = $steps[2];
        if ( $slug == $this->slug )
            return true;
    }
    return false;
}

protected function is_admin_url ( $url ) {
    $parts = parse_url( $url );
    if ( !empty($parts['path']) ) {
        $steps = explode('/', $parts['path']);
        $slug = $steps[1];
        if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') $slug = $steps[2];
        if ( $slug == $this->slug )
            return true;
    }
    return false;
}

答案 1 :(得分:0)

只需查看最近/ s之间的部分

protected function is_admin_url ( $url ) {
    $pFile = strrpos($url, '/');
    $pFolder = strrpos($url, '/', $pFile-1);
    if (($pFile === false) or ($pFolder === false)) {
        return false;
    }
    $folder = substr($url, $pFolder+1, $pFile-$pFolder-1);
    return ($folder == $this->slug);
}

BurninLeo

答案 2 :(得分:0)

也许您可以使用$ _SERVER检查['REMOTE_ADDR'] =='127.0.0.1'来检测是否是开发环境,或者将全局配置放入变量$ local = true并使用内部函数is_admin_url。