php discuz chhome 图片上传swfupload功能
php discuz chhome 图片上传swfupload功能
这上传与discuz来比, 还相差太远. 功能也欠缺.
除了部分内置的url引向,我们改不了之外, 其它的数据都是可以修改的.
<?php
/*
[UCenter Home] (C) 2007-2008 Comsenz Inc.
$Id: do_swfupload.php 12830 2009-07-22 06:42:32Z zhengqingpeng $
*/
if(!defined('IN_UCHOME')) { //入门牌.
exit('Access Denied');
}
include_once(S_ROOT.'./source/function_cp.php');
$op = empty($_GET['op'])?'':$_GET['op']; // uchome比较喜欢用的方法变量.
$isupload = empty($_GET['cam']) && empty($_GET['doodle']) ? true : false; //是否上传.还有种可能是头像上传.
$iscamera = isset($_GET['cam']) ? true : false; //判断一下是头像上传.
$isdoodle = isset($_GET['doodle']) ? true : false; //判断一下是大头贴背景是否随机.
$fileurl = ''; // 默认赋值.
if(!empty($_POST['uid'])) { //如果有uid传过来, 表示在上传头像, 就取得uid值.
$_SGLOBAL['supe_uid'] = intval($_POST['uid']); //强制转化.
if(empty($_SGLOBAL['supe_uid']) || $_POST['hash'] != md5($_SGLOBAL['supe_uid'].UC_KEY)) { // 既然传递了uid值是过来, 假如用户没有登录,及hash码不对应,就中断.
exit();
}
} elseif (empty($_SGLOBAL['supe_uid'])) { //否则再判断, 如果没有登录, 禁止使用上传功能.
showmessage('to_login', 'do.php?ac='.$_SCONFIG['login_action']);
}
if($op == "finish") { //上传结束时.
/* 它会传入如下GET
array (
'ac' => 'swfupload',
'op' => 'finish',
'albumid' => '2',
)*/
$albumid = intval($_GET['albumid']); //取得分类id.
$space = getspace($_SGLOBAL['supe_uid']); //更新用户部分记录, 比较图片总数, 容量计算.
if(ckprivacy('upload', 1)) { //判断一下是否已经写了推送.
include_once(S_ROOT.'./source/function_feed.php');
feed_publish($albumid, 'albumid'); //否则就再写一次.
}
//强行中断.
exit();
} elseif($op == 'config') { //swf上传的配置.
/* 根据抓取所得 GET传过来:
array (
'ac' => 'swfupload',
'op' => 'config',
)
*/
$hash = md5($_SGLOBAL['supe_uid'].UC_KEY); //生成一个hash码.
if($isupload && !checkperm('allowupload')) { //是上传图片,并且权限足够.对于配置来说, $isupload永远为假.
$hash = '';
} else {
$filearr = $dirstr = array(); //初始化数组. 文件数组/及目录数据.
if($iscamera) { //进入头像上传工作.
/*
根据抓取, GET数据如下:
array (
'ac' => 'swfupload',
'op' => 'config',
'cam' => '1',
)
*/
$directory = sreaddir(S_ROOT.'./image/foreground'); //大头贴背景的目录. sreaddir读取里面的目录数据.
foreach($directory as $key => $value) { //每一个背景都是独立的一个目录, 所以循环一下.
$dirstr = S_ROOT.'./image/foreground/'.$value; //合成新的路径.
if(is_dir($dirstr)) { //判断一下是否是目录.
$filearr = sreaddir($dirstr, array('jpg','jpeg','gif','png')); //读取目录里面的图片文件.
if(!empty($filearr)) { // 如果图片数组不为空.
if(is_file($dirstr.'/categories.txt')) { // 如果categories.txt文件存在.
$catfile = @file($dirstr.'/categories.txt'); //打开此文件.
$dirarr[$key][0] = trim($catfile[0]); //就将里面的文件读取来. 当然, 很无谓的方法, 里面的内容与目录名是一样的.
} else { //如果txt文件不存在, 就取得目录名.
$dirarr[$key][0] = trim($value); //准确取得值, trim多用.
}
$dirarr[$key][1] = trim('image/foreground/'.$value.'/'); //将指针1设置为当前大头贴背景目录.
$dirarr[$key][2] = $filearr; // //将指针2设置为当前大头贴背景目录里面的图片.
}
}
}
} elseif($isdoodle) { //如果是头像随机背景, 就读取./image/doodle/big里面的图片文件.
$filearr = sreaddir(S_ROOT.'./image/doodle/big', array('jpg','jpeg','gif','png'));
}
}
//接着就到了图片上传配置工作.
$max = @ini_get(upload_max_filesize); //取得php.ini最大上传值.
$unit = strtolower(substr($max, -1, 1)); //$max结尾有kb字样吧, 要截取一下,并且转成小写.
//下面是针对不同的计算单元作换算.
if($unit == 'k') {
$max = intval($max)*1024; //看样子是全部转成byt字节单位. KB X 1024 = 多少字节.
} elseif($unit == 'm') {
$max = intval($max)*1024*1024; // MB X 1024 X 1024 = 多少字节.
} elseif($unit == 'g') {
$max = intval($max)*1024*1024*1024; // GB X 1024 X 1024 X 1024 = 多少字节.
}
//取得用户所建立的分类数组.
$albums = getalbums($_SGLOBAL['supe_uid']);
} elseif($op == "screen" || $op == "doodle") { // screen 不理解什么时候出来 || 随机大头贴背景,由于没有摄像头, 这里面略过.
if(empty($GLOBALS['HTTP_RAW_POST_DATA'])) {
$GLOBALS['HTTP_RAW_POST_DATA'] = file_get_contents("php://input");
}
$status = "failure";
$dosave = true;
if($op == "doodle") {
$query = $_SGLOBAL['db']->query('SELECT * FROM '.tname('usermagic')." WHERE uid = '$_SGLOBAL[supe_uid]' AND mid = 'doodle'");
$value = $_SGLOBAL['db']->fetch_array($query);
if(empty($value) || $value['count'] < 1) {//û��Ϳѻ��
$uploadfiles = -8;
$dosave = false;
}
}
if($dosave && !empty($GLOBALS['HTTP_RAW_POST_DATA'])) {
$_SERVER['HTTP_ALBUMID'] = addslashes(siconv(urldecode($_SERVER['HTTP_ALBUMID']), $_SC['charset'], "UTF-8"));
$from = false;
if($op == 'screen') {
$from = 'camera';
} elseif($_GET['from'] == 'album') {
$from = 'uploadimage';
}
$_SCONFIG['allowwatermark'] = 0;
$uploadfiles = stream_save($GLOBALS['HTTP_RAW_POST_DATA'], $_SERVER['HTTP_ALBUMID'], 'jpg', '', '', 0, $from);
}
$uploadResponse = true;
$picid = $proid = $albumid = 0;
if($uploadfiles && is_array($uploadfiles)) {
$status = "success";
$albumid = $uploadfiles['albumid'];
$picid = $uploadfiles['picid'];
if($op == "doodle") {
$fileurl = pic_get($uploadfiles['filepath'], $uploadfiles['thumb'], $uploadfiles['remote'], 0);
include_once(S_ROOT.'./source/function_magic.php');
magic_use('doodle', array(), 1);
}
} else {
switch ($uploadfiles) {
case -1:
$uploadfiles = cplang('inadequate_capacity_space');
break;
case -2:
$uploadfiles = cplang('only_allows_upload_file_types');
break;
case -4:
$uploadfiles = cplang('ftp_upload_file_size');
break;
case -8:
$uploadfiles = cplang('has_not_more_doodle');
break;
default:
$uploadfiles = cplang('mobile_picture_temporary_failure');
break;
}
}
} elseif($_FILES && $_POST) { // 图片上传时,
/* 根据抓取, POST GET数据值为:
POST = array (
'Filename' => 'MJP45+R3001.jpg',
'proid' => '1',
'albumid' => '2',
'uid' => '1',
'title' => 'MJP45+R3001',
'hash' => '11ed07fe235ca5b9e509043e85419785',
'Upload' => 'Submit Query',
)
GET = array (
'ac' => 'swfupload',
)
*/
if($_FILES["Filedata"]['error']) { //如果有上传错误
$uploadfiles = cplang('file_is_too_big'); // 就提示文件过大.
} else {
//考虑到编码及大小写问题, 还有转义. 取得上传文件名.
$_FILES["Filedata"]['name'] = addslashes(siconv(urldecode($_FILES["Filedata"]['name']), $_SC['charset'], "UTF-8"));
//考虑到编码及大小写问题, 还有转义. 取得上传分类id.
$_POST['albumid'] = addslashes(siconv(urldecode($_POST['albumid']), $_SC['charset'], "UTF-8"));
//考虑到编码及大小写问题, 还有转义. 取得上传文件后的一个详解路径.
$uploadfiles = pic_save($_FILES["Filedata"], $_POST['albumid'], addslashes(siconv(urldecode($_POST['title']), $_SC['charset'], "UTF-8")));
}
//根据我的分析, 以下内容在图片上传时没用, 不知头像上传会否用到.
$proid = $_POST['proid'];
$uploadResponse = true;
$albumid = 0;
//判断一下上传文件, 及上传文件数组.
if($uploadfiles && is_array($uploadfiles)) {
$status = "success"; //上传完成
$albumid = $uploadfiles['albumid']; // 上传的分类id
} else {
$status = "failure"; //这就是上传失败了.
}
//这是我自己加上去的, 估计uchome也会感激我.
exit();
}
// 时间
$newalbumname = sgmdate('Ymd');
//引入模板
include template("do_swfupload");
//输出xml, swf配置需要.
$outxml = "<?xml version="1.0" encoding="UTF-8"?>n";
$outxml .= siconv(ob_get_contents(), 'UTF-8');
obclean();
@header("Expires: -1");
@header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);
@header("Pragma: no-cache");
@header("Content-type: application/xml; charset=utf-8");
echo $outxml;
// 配置文件具体导出什么内容呢? 请访问这个网址.
//http://u.discuz.net/home/do.php?ac=swfupload&op=config
?>
php 生成随机函数
function genRandomString($len)
{
$chars = array(
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R",
"S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2",
"3", "4", "5", "6", "7", "8", "9"
);
$charsLen = count($chars) - 1;
shuffle($chars);
$output = "";
for ($i=0; $i<$len; $i++)
{
$output .= $chars[mt_rand(0, $charsLen)];
}
return $output;
}
还有一种是php 自带的mt_rand 与rand 哦,不过建意最好用mt_rand这个事速度上优与rand
<?php
// literally from the ABNF in rfc3986 (thanks to 'WCP')
function validateIPv6($IP)
{
return preg_match('/A
(?:
(?:
(?:[a-f0-9]{1,4}:){6}
|
::(?:[a-f0-9]{1,4}:){5}
|
(?:[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){4}
|
(?:(?:[a-f0-9]{1,4}:){0,1}[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){3}
|
(?:(?:[a-f0-9]{1,4}:){0,2}[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){2}
|
(?:(?:[a-f0-9]{1,4}:){0,3}[a-f0-9]{1,4})?::[a-f0-9]{1,4}:
|
(?:(?:[a-f0-9]{1,4}:){0,4}[a-f0-9]{1,4})?::
)
(?:
[a-f0-9]{1,4}:[a-f0-9]{1,4}
|
(?:(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}
(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
)
|
(?:
(?:(?:[a-f0-9]{1,4}:){0,5}[a-f0-9]{1,4})?::[a-f0-9]{1,4}
|
(?:(?:[a-f0-9]{1,4}:){0,6}[a-f0-9]{1,4})?::
)
)Z/ix',
$IP
);
}
?>
本站推荐出百度、谷歌关键词排名在线查询哦,
查询地址:
http://zz.111cn.net/keyword/
本网站提供站长工具,alexa信息查询,alexa详细查询,alexa信息查询工具,alexa详细查询工具等信息,
查询地址:http://alexa.111cn.net/
查询效果
站点名称 | zhong guo W E B di yi zhan | 收录日期 | 网站语言 | zh-CN | |
网站域名 | 111cn.net | 编码方式 | gb2312 | 网站站长 | dengxianhong |
综合排名 | 19,413 | 访问速度 | 817毫秒,比88%的网站快! | 电子信箱 | mailangel123@163.com |
排名变化 | -19,468 | 反向链接 | 87个 | 联系电话 | |
详细地址 | China Chang Sha shi, Hunan 410001 Hu Nan chang sha , Chang Sha shi, Hunan 410001 | ||||
网站简介 | |||||
DMOZ目录 |
当日排名 | 排名变化趋势 | 一周平均排名 | 排名变化趋势 | 一月平均排名 | 排名变化趋势 | 三月平均排名 | 排名变化趋势 |
83,889 | +72,872 | 13,155 | -2,023 | 14,974 | -2,618 | 19,413 | -19,468 |
日均 IP 访问量 | ≈90,000 | 日均 PV 浏览量 | ≈144,000 |
Reach 到访量 |
Pageviews 页面浏览量 |
Pageviews/User 每位访客浏览页数 |
Bounce % 跳出率 |
Time on Site 平均停留时间 |
Search % 流量源自搜索 引擎所占比例 |
|||||||
昨天 | 0.003 | -80% | 0.00003 | -90% | 1 | -50% | - | - | - | - | - | - |
一周 | 0.015 | +7% | 0.00025 | +16% | 1.6 | +8% | 74.6 | +13% | 100.3 | -2% | 48.6 | -6% |
一月 | 0.0135 | +20% | 0.000196 | +20% | 1.43 | -0.7% | 72.2 | 0% | 94.7 | 0% | 49.7 | +4% |
三月 | 0.0099 | +149% | 0.000154 | +118% | 1.43 | -12% | 73.2 | +22% | 93.4 | -26% | 48.4 | +21% |
其他国家/地区排名 | 访问国家/地区比 | |
|
|
下属站点被访问比例 | 该站本月热门关键词 | 该站热门关键词 | ||
111cn.net:
|
|
|
两 年数据 | 六个月数据 | 三个月数据 | 一个月数据 | 一星期数据 |
相关文章
使用PHP+JavaScript将HTML页面转换为图片的实例分享
这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19- 这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
- php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13- 本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
- 又码了一个周末的代码,这次在做一些关于文件上传的东西。(PHP UPLOAD)小有收获项目是一个BT种子列表,用户有权限上传自己的种子,然后配合BT TRACK服务器把种子的信息写出来...2016-11-25
- 本文实例讲述了jQuery实现文件上传进度条效果的代码。分享给大家供大家参考。具体如下: 运行效果截图如下:具体代码如下:<!DOCTYPE html><html><head><meta charset="utf-8"><title>upload</title><link rel="stylesheet...2015-11-24
- 下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
- 本篇文章主要说明的是与php文件上传的相关配置的知识点。PHP文件上传功能配置主要涉及php.ini配置文件中的upload_tmp_dir、upload_max_filesize、post_max_size等选项,下面一一说明。打开php.ini配置文件找到File Upl...2015-10-21
- Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
- EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if...2013-09-23
- 图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
- 共享一段使用PHP下载CSS文件中的图片的代码 复制代码 代码如下: <?php //note 设置PHP超时时间 set_time_limit(0); //note 取得样式文件内容 $styleFileContent = file_get_contents('images/style.css'); //not...2013-10-04
- DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞...2016-11-25
- PHP代码如下:复制代码 代码如下:if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { $upload_file = $_FILES['Filedata']; $fil...2013-10-04
C#中图片旋转和翻转(RotateFlipType)用法分析
这篇文章主要介绍了C#中图片旋转和翻转(RotateFlipType)用法,实例分析了C#图片旋转及翻转Image.RotateFlip方法属性的常用设置技巧,需要的朋友可以参考下...2020-06-25- 这篇文章主要介绍了OpenCV如何去除图片中的阴影的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
- 这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09