function _get_script_url() {
if($this->var['PHP_SELF'] === null){
$scriptName = basename($_SERVER['SCRIPT_FILENAME']); 
if(basename($_SERVER['SCRIPT_NAME']) === $scriptName) { 
$this->var['PHP_SELF'] = $_SERVER['SCRIPT_NAME'];
} else if(basename($_SERVER['PHP_SELF']) === $scriptName) {
$this->var['PHP_SELF'] = $_SERVER['PHP_SELF'];
} else if(isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === $scriptName) {
$this->var['PHP_SELF'] = $_SERVER['ORIG_SCRIPT_NAME'];
} else if(($pos = strpos($_SERVER['PHP_SELF'],'/'.$scriptName)) !== false) {
$this->var['PHP_SELF'] = substr($_SERVER['SCRIPT_NAME'],0,$pos).'/'.$scriptName;
} else if(isset($_SERVER['DOCUMENT_ROOT']) && strpos($_SERVER['SCRIPT_FILENAME'],$_SERVER['DOCUMENT_ROOT']) === 0) {
$this->var['PHP_SELF'] = str_replace('\\','/',str_replace($_SERVER['DOCUMENT_ROOT'],'',$_SERVER['SCRIPT_FILENAME']));
} else {
system_error('request_tainting');
}
}
return $this->var['PHP_SELF'];
}说实话,这个方法我看着挺悲伤的,因为我不知道为什么一个简单的获取当前文件执行时的url会有这么复杂,所以相问各大侠这些添加else分支的原因