crx349 发表于 2022-12-10 20:39:03

Discuz!x3.3 头像上传关闭Flash 支持H5上传

Discuz!x3.4默认就支持H5头像上传,但是很多老站还在用x3.3,特别是很多二次开发过的大型站点,头像上传还在用falsh模式或者用第三方插件,现提供一个通用解决方案,可以让x3.3支持h5头像上传方式:

1.备份模板目录,覆盖本头像h5上传补充包,解压到网站根目录。

链接:补充包下载地址
提取码:4tlD

2.修改source\language\home\lang_template.php

再最后面加入一行:
'setting_my_new_avatar_old' => '如无法正常上传头像,请点此处切换为 Flash 方式上传',

3.修改uc_server\control\user.php中的onrectavatar函数
@header("Pragma: no-cache");下面加入如下代码
if(getgpc('base64', 'G')){
   header("Content-type: text/html; charset=utf-8");
}else{
   header("Content-type: application/xml; charset=utf-8");
}

4.替换
if($success) {
   return '<?xml version="1.0" ?><root><face success="1"/></root>';
} else {
   return '<?xml version="1.0" ?><root><face success="0"/></root>';
}
为:
if(getgpc('base64', 'G')){
   if($success) {
      return "<script>window.parent.postMessage('success','*');</script>";
   } else {
      return "<script>window.parent.postMessage('failure','*');</script>";
   }
}else{
   if($success) {
      return '<?xml version="1.0" ?><root><face success="1"/></root>';
   } else {
      return '<?xml version="1.0" ?><root><face success="0"/></root>';
   }
}
5.flashdata_decode函数替换
$r = '';
if(getgpc('base64', 'G')){
   $r = base64_decode($s);
}else{
   $l = strlen($s);
   for($i=0; $i<$l; $i=$i+2) {
      $k1 = ord($s[$i]) - 48;
      $k1 -= $k1 > 9 ? 7 : 0;
      $k2 = ord($s[$i+1]) - 48;
      $k2 -= $k2 > 9 ? 7 : 0;
      $r .= chr($k1 << 4 | $k2);
   }
}
return $r;

同名文件替换下,更新缓存
页: [1]
查看完整版本: Discuz!x3.3 头像上传关闭Flash 支持H5上传