Skip to content
Snippets Groups Projects
Commit 06368e4d authored by Michael Hamann's avatar Michael Hamann
Browse files

Fixed testcase and getID - FS#1908 FS#1831 FS#1838

$_SERVER['PATH_INFO'] is used now to determine the page id when using
internal rewriting, in all testcases I've seen so far this variable
was set correctly. There are also a couple of fallbacks if the variable
doesn't exist, $_SERVER['SCRIPT_NAME'] is now preferred instead of
custom path extraction which fails when doku.php is outside the document
root.
parent 7caaf84c
No related branches found
No related tags found
No related merge requests found
......@@ -76,7 +76,7 @@ class init_getID_test extends UnitTestCase {
$_SERVER['SCRIPT_FILENAME'] = '/var/www/vhosts/example.com/htdocs/doku.php';
$_SERVER['SCRIPT_NAME'] = '/doku.php';
$_SERVER['REQUEST_URI'] = '/doku.php/wiki/dokuwiki';
$_SERVER['PATH_INFO'] = '/test/dokuwiki';
$_SERVER['PATH_INFO'] = '/wiki/dokuwiki';
$_SERVER['PATH_TRANSLATED'] = '/var/www/vhosts/example.com/htdocs/doku.php';
$_SERVER['PHP_SELF'] = '/doku.php/wiki/dokuwiki';
......
......@@ -23,10 +23,11 @@ function getID($param='id',$clean=true){
$id = isset($_REQUEST[$param]) ? $_REQUEST[$param] : null;
$request = $_SERVER['REQUEST_URI'];
//construct page id from request URI
if(empty($id) && $conf['userewrite'] == 2){
$request = $_SERVER['REQUEST_URI'];
$script = '';
//get the script URL
if($conf['basedir']){
$relpath = '';
......@@ -35,15 +36,14 @@ function getID($param='id',$clean=true){
}
$script = $conf['basedir'].$relpath.basename($_SERVER['SCRIPT_FILENAME']);
}elseif($_SERVER['DOCUMENT_ROOT'] && $_SERVER['PATH_TRANSLATED']){
$request = preg_replace ('/^'.preg_quote($_SERVER['DOCUMENT_ROOT'],'/').'/','',
$_SERVER['PATH_TRANSLATED']);
}elseif($_SERVER['PATH_INFO']){
$request = $_SERVER['PATH_INFO'];
}elseif($_SERVER['SCRIPT_NAME']){
$script = $_SERVER['SCRIPT_NAME'];
}elseif($_SERVER['DOCUMENT_ROOT'] && $_SERVER['SCRIPT_FILENAME']){
$script = preg_replace ('/^'.preg_quote($_SERVER['DOCUMENT_ROOT'],'/').'/','',
$_SERVER['SCRIPT_FILENAME']);
$script = '/'.$script;
}else{
$script = $_SERVER['SCRIPT_NAME'];
}
//clean script and request (fixes a windows problem)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment