Fix getBaseURL for literal IPv6 addresses in URLs (RFC 2732) + test case
This commit is contained in:
parent
1b052f5cb7
commit
204b27c8e0
|
@ -275,6 +275,31 @@ class init_getBaseURL_test extends UnitTestCase {
|
|||
$this->assertEqual(getBaseURL(true),$correct_result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Absolute URL with IPv6 domain name.
|
||||
* lighttpd, fastcgi
|
||||
*
|
||||
* data provided by Michael Hamann <michael@content-space.de>
|
||||
*/
|
||||
function test12() {
|
||||
global $conf;
|
||||
$conf['basedir'] = '';
|
||||
$conf['baseurl'] = '';
|
||||
$conf['canonical'] = 0;
|
||||
|
||||
$_SERVER['DOCUMENT_ROOT'] = '/srv/http/';
|
||||
$_SERVER['HTTP_HOST'] = '[fd00::6592:39ed:a2ed:2c78]';
|
||||
$_SERVER['SCRIPT_FILENAME'] = '/srv/http/~michitux/dokuwiki/doku.php';
|
||||
$_SERVER['REQUEST_URI'] = '/~michitux/dokuwiki/doku.php?do=debug';
|
||||
$_SERVER['SCRIPT_NAME'] = '/~michitux/dokuwiki/doku.php';
|
||||
$_SERVER['PATH_INFO'] = null;
|
||||
$_SERVER['PATH_TRANSLATED'] = null;
|
||||
$_SERVER['PHP_SELF'] = '/~michitux/dokuwiki/doku.php';
|
||||
$_SERVER['SERVER_PORT'] = '80';
|
||||
$_SERVER['SERVER_NAME'] = '[fd00';
|
||||
$this->assertEqual(getBaseURL(true), 'http://[fd00::6592:39ed:a2ed:2c78]/~michitux/dokuwiki/');
|
||||
}
|
||||
}
|
||||
|
||||
//Setup VIM: ex: et ts=2 :
|
||||
|
|
13
inc/init.php
13
inc/init.php
|
@ -420,9 +420,13 @@ function getBaseURL($abs=null){
|
|||
|
||||
//split hostheader into host and port
|
||||
if(isset($_SERVER['HTTP_HOST'])){
|
||||
list($host,$port) = explode(':',$_SERVER['HTTP_HOST']);
|
||||
$parsed_host = parse_url('http://'.$_SERVER['HTTP_HOST']);
|
||||
$host = $parsed_host['host'];
|
||||
$port = $parsed_host['port'];
|
||||
}elseif(isset($_SERVER['SERVER_NAME'])){
|
||||
list($host,$port) = explode(':',$_SERVER['SERVER_NAME']);
|
||||
$parsed_host = parse_url('http://'.$_SERVER['SERVER_NAME']);
|
||||
$host = $parsed_host['host'];
|
||||
$port = $parsed_host['port'];
|
||||
}else{
|
||||
$host = php_uname('n');
|
||||
$port = '';
|
||||
|
@ -431,6 +435,11 @@ function getBaseURL($abs=null){
|
|||
if(!$port && isset($_SERVER['SERVER_PORT'])) {
|
||||
$port = $_SERVER['SERVER_PORT'];
|
||||
}
|
||||
|
||||
if(is_null($port)){
|
||||
$port = '';
|
||||
}
|
||||
|
||||
if(!is_ssl()){
|
||||
$proto = 'http://';
|
||||
if ($port == '80') {
|
||||
|
|
Loading…
Reference in New Issue