我有这个简单的方法来检查一个网址是否属于我的管理区域。
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插件的一部分。网站网址未知。
答案 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。