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;
复制代码
同名文件替换下,更新缓存 |