DoTranFile() 帝国CMS文件上传函数

27

一、简要描述

$filer=DoTranFile($file,$file_name,$file_type,$file_size,$classid,$ecms=0);
Ecms版本:6.0

参数:
$file
$file_name 文件名包括拓展名 例如:image.jpg
$file_type 文件类型描述 例如:image/pjpeg
$file_size 文件大小 单位KB
$classid 栏目ID
$ecms=0 可选 错误信息提示 遵循 e/class/connect.php function printerror()
函数定义位置:e/class/connect.php

返回值:成功返回数组 失败跳出程序又printerror()打印错误
——————————————————–
数组成员key 解释
filetype:文件类型 例如:.jpg
insertfile:文件名无拓展名 例如:img
filename:文件名包括拓展名 例如:img.jpg
filepath:文件目录 例如:2010-05-27
savepath:文件硬盘目录 例如:D:\php\***\d/file/classfile/2010-05-27/
url:文件网站绝对目录 例如:/d/file/classfile/2010-05-27/name.jpg
name: 缩略图(其实没有生成缩略图只是给了这个路径) D:\php\****\d/file/classfile/2010-05-27/small + name
yname:D:\php\***\d/file/classfile/2010-05-27/name.jpg
tran:1
filesize:文件大小 单位KB

二、函数源代码

//上传文件
function DoTranFile($file,$file_name,$file_type,$file_size,$classid,$ecms=0){
	global $public_r,$class_r,$doetran;

	//文件类型
	$r[filetype]=GetFiletype($file_name);

	//文件名
	$r[insertfile]=ReturnDoTranFilename($file_name,$classid);
	$r[filename]=$r[insertfile].$r[filetype];

	//日期目录
	$r[filepath]=FormatFilePath($classid,$mynewspath,0);
	$filepath=$r[filepath]?$r[filepath].'/':$r[filepath];

	//存放目录
	$fspath=ReturnFileSavePath($classid);
	$r[savepath]=ECMS_PATH.$fspath['filepath'].$filepath;

	//附件地址
	$r[url]=$fspath['fileurl'].$filepath.$r[filename];

	//缩图文件
	$r[name]=$r[savepath]."small".$r[insertfile];

	//附件文件
	$r[yname]=$r[savepath].$r[filename];
	$r[tran]=1;

	//验证类型
	if(CheckSaveTranFiletype($r[filetype]))
	{
		if($doetran)
		{
			$r[tran]=0;
			return $r;
		}
		else
		{
			printerror('TranFail','',$ecms);
		}
	}

	//上传文件
	$cp=@move_uploaded_file($file,$r[yname]);
	if(empty($cp))
	{
		if($doetran)
		{
			$r[tran]=0;
			return $r;
		}
		else
		{
			printerror('TranFail','',$ecms);
		}
	}
	DoChmodFile($r[yname]);
	$r[filesize]=(int)$file_size;
	return $r;
}

//远程保存忽略地址
function CheckNotSaveUrl($url){
	global $public_r;
	if(empty($public_r['notsaveurl']))
	{
		return 0;
    }
	$r=explode("\r\n",$public_r['notsaveurl']);
	$count=count($r);
	$re=0;
	for($i=0;$i<$count;$i++)
	{
		if(empty($r[$i]))
		{continue;}
		if(stristr($url,$r[$i]))
		{
			$re=1;
			break;
	    }
    }
	return $re;
}

三、函数注释

帝国CMS二次开发 商城服装批发 颜色尺码 手!

21

帝国CMS商城 颜色-尺码 手 :批量订单

帝国CMS商城 颜色-尺码 手 :批量订单

帝国CMS商城 颜色-尺码 手 :单个加入购物车

帝国CMS商城 颜色-尺码 手 :单个加入购物车


帝国CMS商城 颜色-尺码 手 :单个加入购物车

帝国CMS商城 颜色-尺码 手 :购物车
帝国CMS商城 颜色-尺码 手 :购物车

帝国CMS商城 颜色-尺码 手 :购物车
帝国CMS商城 颜色-尺码 手 :购物车

帝国CMS商城 颜色-尺码 手 :购物车
帝国CMS商城 颜色-尺码 手 :购物车

帝国CMS二次开发 – num() 与 num1()

23 14°

一、话前唠叨

今天trylife接上两篇继续说帝国CMS SQL类中的对象num()与num1();上边两篇查阅下面两个连接:

query()  与 query1() http://www.trylife.cn/ecms-repeatedly-development-with-db_sql-php/
fetch() 与 fetch1() http://www.trylife.cn/ecms-repeatedly-development-fetch/

简述: 对象num()和num1()都执行的mysql_num_rows(),只是前者参数是SQL语句,后者是SQL语句执行结果;用于获得行数;

二、num()示例

< ?php
include("../../class/connect.php");
include("../../class/db_sql.php");
$link=db_connect();
$empire=new mysqlquery();

$num=$empire->num("select id from {$dbtbpre}ecms_news");
echo $num;

db_close();
$empire=null;
?>

三、num1()示例

< ?php
include("../../class/connect.php");
include("../../class/db_sql.php");
$link=db_connect();
$empire=new mysqlquery();

$sql=$empire->query("select * from {$dbtbpre}ecms_news");
$num1=$empire->num1($sql);
echo $num1;

db_close();
$empire=null;
?>

帝国CMS二次开发 – fetch()和fetch1()

22

接上一篇:帝国CMS二次开发 – 使用程序本身的SQL类

上一篇看了帝国sql 类中的query()和query1();接下来再看fetch()和fetch1();
下面介绍正确的写法和一些用处

fetch()

一般情况下我们用来,循环出列表或者列出多条信息;例如下面的例子取得会员组ID为1的所有会员ID和用户名;fetch()的参数是SQL语句执行的结果也就是先执行query();再把query()的执行结果作为参数给fetch()使用;

< ?php
include("../../class/connect.php");
include("../../class/db_sql.php");
$link=db_connect();
$empire=new mysqlquery();

//列出GROUPID=1的所有会员用户ID和用户名
$sql=$empire->query("select userid,username from {$dbtbpre}enewsmember where groupid=1");
while($r=$empire->fetch($sql)){
	echo $r[userid].'---'.$r[username].'';
}

db_close();
$empire=null;
?>

fetch1()

简单的说我们查询一条信息的时候才用它,比如获取USERID为1的会员资料;和fetch()不同的是fetch1()的参数是SQL语句而不是执行结果,所以在SQL语句不第二次使用的情况下直接进去就好了;fetch1()只取一条数据;

< ?php
include("../../class/connect.php");
include("../../class/db_sql.php");
$link=db_connect();
$empire=new mysqlquery();

//会员会员ID为1的资料
$r=$empire->fetch1("select userid,username from {$dbtbpre}enewsmember where userid=1 limit 1");
echo $r[userid].'';
echo $r[username].'';

db_close();
$empire=null;
?>

帝国CMS二次开发 – 使用程序本身的SQL类

22

简述:帝国CMS封装了一个SQL,文件位置是e/class/db_sql.php;使用程序本身的类库可以给我们的开发带来便利和效率;同时可以减少增设文件数量等;今天就和trylife一起了解下帝国CMS的SQL类和使用方法;

首先:做下准备工作

  • 1.在e目录下建立测试目录,例如我建立的是e/trylife/td-test/
  • 2.在1中目录下建立个PHP文件,例如我建立的是e/trylife/td/test-db_sql.php
  • 3.文件中写入代码如下
  • < ?php
    /*引用文件*/
    include("../../class/connect.php");
    include("../../class/db_sql.php");
    
    /*建立数据库链接 与 实例化类*/
    $link=db_connect();
    $empire=new mysqlquery();
    
                       /*中间的这个位置用于我们测试代码*/
    
    /*关闭数据库连接 与 释放类*/
    db_close();
    $empire=null;
    ?>