aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrub <rub@piwigo.org>2007-07-24 19:16:02 +0000
committerrub <rub@piwigo.org>2007-07-24 19:16:02 +0000
commitd958a19ed57a3300bc90df42e3351255352a7d45 (patch)
treedd7d74ab7da23d3314276e57ab559f188bd108d7
parente78758a25cb0cd34350ae5aa681323f20fce600a (diff)
Resolved 0000726: script_basename returns bad result
With specific server configuration, script_basename returns bad result. Merge BSF 2070:2071 into branch-1_7 git-svn-id: http://piwigo.org/svn/branches/branch-1_7@2072 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--include/functions.inc.php51
1 files changed, 25 insertions, 26 deletions
diff --git a/include/functions.inc.php b/include/functions.inc.php
index becace1a4..1ced5e435 100644
--- a/include/functions.inc.php
+++ b/include/functions.inc.php
@@ -1284,20 +1284,6 @@ function hash_from_query($query, $keyname)
}
/**
- * Return is "file_name" argument is candidate to
- * compute script_basename value
- *
- * @param string file_name
- *
- * @return boolean is candidate or not?
- */
-function is_script_basename($file_name)
-{
- $file_name = basename($file_name);
- return !empty($file_name);
-}
-
-/**
* Return basename of the current script
* Lower case convertion is applied on return value
* Return value is without file extention ".php"
@@ -1308,21 +1294,34 @@ function is_script_basename($file_name)
*/
function script_basename()
{
- if (is_script_basename($_SERVER['SCRIPT_NAME']))
- {
- $file_name = $_SERVER['SCRIPT_NAME'];
- }
- else if (is_script_basename($_SERVER['SCRIPT_FILENAME']))
- {
- $file_name = $_SERVER['SCRIPT_FILENAME'];
- }
- else
+ global $conf;
+
+ foreach (array('SCRIPT_NAME', 'SCRIPT_FILENAME', 'PHP_SELF') as $value)
{
- $file_name = '';
+ $continue = !empty($_SERVER[$value]);
+ if ($continue)
+ {
+ $filename = strtolower($_SERVER[$value]);
+
+ if ($conf['php_extension_in_urls'])
+ {
+ $continue = get_extension($filename) === 'php';
+ }
+
+ if ($continue)
+ {
+ $basename = basename($filename, '.php');
+ $continue = !empty($basename);
+ }
+
+ if ($continue)
+ {
+ return $basename;
+ }
+ }
}
- // $_SERVER return lower string following var and systems
- return basename(strtolower($file_name), '.php');
+ return '';
}
/**