phpbb3 安裝之後, 上傳附件的功能 再上傳中文檔名會出現問題
"測試.jpg" -> 上傳後 會變成 ".jpg"
請問要如何修改?
Moderator: 技术组








Loki wrote:phpBB在截取附件名时使用的basename()函数一直对中文支持存在问题,在PHP4的若干版本里这个问题被修复了,在PHP5里又出现了
解决办法,要么换用PHP4,要么自己写一个函数替代basename。据官方说在PHP6中才会考虑修复该问题。
希望对你有帮助

/*#ifndef HAVE_MBLEN
# define php_mblen(ptr, len) 1
#else
# if defined(_REENTRANT) && defined(HAVE_MBRLEN) && defined(HAVE_MBSTATE_T)
# define php_mblen(ptr, len) ((ptr) == NULL ? mbsinit(&BG(mblen_state)): (int)mbrlen(ptr, len, &BG(mblen_state)))
# else
# define php_mblen(ptr, len) mblen(ptr, len)
# endif
#endif
*/# define php_mblen(ptr, len) 1'DOWNLOAD_NAME' => basename($attachment['real_filename']),'DOWNLOAD_NAME' => mybasename($attachment['real_filename']),/**
* Check if extension is allowed to be posted.function mybasename($path)
{
$paths = explode('/', $path);
$temps = explode('\\', $paths[count($paths)-1]);
$basename = $temps[count($temps)-1];
return $basename;
}/**
* File Class
* @access private function mybasename($path)
{
$paths = explode('/', $path);
$temps = explode('\\', $paths[count($paths)-1]);
$basename = $temps[count($temps)-1];
return $basename;
}$name = trim(htmlspecialchars($this->basename($upload_ary['name'])));$name = trim(htmlspecialchars($this->mybasename($upload_ary['name'])));$attach_row['real_filename'] = basename($attach_row['real_filename']);$attach_row['real_filename'] = mybasename($attach_row['real_filename']);'FILENAME' => basename($attach_row['real_filename']),'FILENAME' => mybasename($attach_row['real_filename']),
夜了,没仔细看,不过不放到类里,直接丢到函数库里,不就简单了么???


slb wrote:IOsetting,这个bug提交到phpbb官方了么?他们修复了么?

IOsetting wrote:slb wrote:IOsetting,这个bug提交到phpbb官方了么?他们修复了么?
这不是他们的bug, 是PHP的bug

Users browsing this forum: Google [Bot] and 3 guests