存档:2007年四月

好用的

四月 29, 2007 | js/web, php | RSS 2.0

在web编程中大家应该会经常用到一些常用js操作,例如 alert(),通常是遇到了再写,受公司的启发,我自己简单写了个类来自动生成这些js,目的就是为了方便,一个小玩意,新手们也许会喜欢^_^
[php]
<?php
/*
*页面:makeJs.class.php
*功能:封装常用的JS代码,直接调用,方便操作
*作者:辉老大
*创建时间:2007-01-27
*/
class makeJs
{
     private $jsStartChar = ‘<scrīpt type=”text/javascrīpt”>’;//定义js起始标记
     private $jsEndChar   = ‘</scrīpt>’;//定义js结束标记

/*
*函数名称:jsAlert
*函数功能:弹出JS提示框
*参数:$message 要在弹出提示框中显示的文字 $url 点击后跳转的路径,为空则不跳转
*使用方法:
*$js = new makeJs();//以下介绍使用方法省略此句
*$js->jsAlert(显示的文字,’跳转页面URL’);//弹出对话框,点击确定后跳转到php.php页面
*$js->jsAlert(显示的文字,”);//弹出对话框,点击确定后没有跳转
*/
     public function jsAlert($message,$url){
        echo $this->jsStartChar;
        if($url==”){
            echo ‘alert’ . ‘(”‘ . $message . ‘”);’;
            echo $this->jsEndChar;
        }
        else{
            echo ‘alert’ . ‘(”‘ . $message . ‘”);’;
            echo $this->jsEndChar;
            echo ‘<meta http-equiv=”refresh” c>’;
        }
    }

/*
*函数名称:jsConfirm
*函数功能:弹出JS提示框,带确定/取消
*参数:$message 要在弹出提示框中显示的文字
*使用方法:$js->jsConfirm(’显示的文字’);
*/
     public function jsConfirm($message){
        echo $this->jsStartChar;
        if($url==”){
            echo ‘confirm’ . ‘(”‘ . $message . ‘”);’;
            echo $this->jsEndChar;
        }
     }

/*
*函数名称:jsOpenWin
*函数功能:弹出新窗口
*参数:$url 路径 $name 窗口名 $height 窗口高度 $width 窗口宽度
*使用方法:
*$url = ‘页面的URL’;
*$js->jsOpenWin($url,窗口名,窗口高度,窗口宽度);
*/
     public function jsOpenWin($url,$name,$height,$width){
        echo $this->jsStartChar;
        echo ‘window.open’.'(”‘.$url.’”,”‘.$name.’”,”‘.$height.’”,”‘.$width.’”);’;
        echo $this->jsEndChar;
     }

/*
*函数名称:jsAddscrīpt
*函数功能:自定义JS
*参数:$scrīpt
*使用方法:
*$scrīpt = ‘定义的js语句’;
*例如:$scrīpt = ‘window.location=(’php.php’)';
*$js->jsAddscrīpt($scrīpt);
*/
     public function jsAddscrīpt($scrīpt){
        echo $this->jsStartChar;
        echo $scrīpt;
        echo $this->jsEndChar;
     }
}
?>
[/php]

没有评论 »

学友的

四月 27, 2007 | 心情杂记 | RSS 2.0

没有评论 »

music震撼心灵

四月 27, 2007 | 心情杂记 | RSS 2.0

 

Declan Galbraith是居住在英国肯特郡的爱尔兰男孩。在许多方面他是一个正常的10 岁男孩。他喜欢电脑游戏,游泳和足球。他和他的父母和六岁姊妹居住。他的堂兄弟姊妹Joe是他最好的朋友。但是 Declan 不只是一个普通的10岁男孩。
Declan Galbraith小的时候,是和他的祖父班度过。班是音乐家。他和爱尔兰的民谣乐团演奏传统的爱尔兰音乐。他们到处在酒吧和俱乐部等地方演唱。Declan 与他的祖父乐团搭配并学习演唱。在他的祖父死之后,他继承了祖父的演唱事业。
目前Declan Galbraith已是英国最畅销的童声歌手之一。他的歌声清彻迷人,高音清亮,极富感染力。如果天使会唱歌,那个天使一定是—Declan Galbraith.
Tell Me Why虽然是一个10岁孩子声音但是配合这首歌和MTV却使人极富感染。Tell Me Why是一个孩子的呼唤,对世界的呼唤,配上感人的旋律以及感人的MTV场景。让你的心也跟着音乐感动

 

 

 

 

没有评论 »

高手常用的css

四月 27, 2007 | js/web | RSS 2.0

[选择样式]………………………………….
<span ><select ><option>itfly.com</option></select></span>

[图片按钮]…………………………………..
<input type=”image” type=”text/javascript”></script>

<script src=”…..”></script>

document.wirte(”<table>….</table>”);

<SCRIPT LANGUAGE=”JavaScript” SRC=”…”></SCRIPT>

[图片样式]……………….
.img1 { filter: Gray; } /* onMouseOver图片样式 */
.img2{ } /* onMouseOut图片样式 */

<img src=”logo.jpg” img1′” img2′””,>

[限制输出字符]………………………………
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;

[限制输出字符]………………………..
style=”TABLE-LAYOUT: fixed”

[把所有链接都设成_blank]……………….
<head>
<base target=”_blank” />
</head>

[去除框架内横向滚动条]……………………….
在框架(iframe)内加入属性
scrolling=”yes”

style=”overflow:scroll;overflow-x:hidden;overflow-y:yes;”

[鼠标指针]……………………………….
cursor: hand

[文本开头自动空格,换行]……………………………….
<style>

.txt{
width:500px;
height:1px;
overflow-y:visible;

text-align:left;
font-size:12px;
line-height:18px;
border:3px solid gray;
border-width:0 3px;
padding:5px;
}
.txt p{
text-indent:24px;
word-wrap: break-word;
word-break: break-all;
}

</style>

<div ><p>从很小时开始,我就想当艺术家。艺术家穿着灯芯绒的外套,留着长头发,蹲在派出所的</p>
</div>

[ie私有]
条件注释(conditional comments)的方法
  一种方法比CSS Hacks更加经得起考验就是采用微软的私有属性条件注释(conditional comments)。用这个方法你可以给IE单独定义一些样式,而不影响主样式表的定义。
就象这样:
  <!–[if IE]>
  <link rel=”stylesheet” type=”text/css” href=”ie.css” />
  <![endif]–>

[页面嵌入广告代码]……………………..

<span ></span>

<span >
<script language=”JavaScript”>
document.write(”<script src=”/style/gs/index-center-01.js”></script>”);</script>
</span>
<script language=”JavaScript”>
document.getElementById(”cont_2″).innerHTML=document.getElementById(”cont_1″).innerHTML;
document.getElementById(”cont_1″).innerHTML=”";
</script>

[屏蔽js错误]

<SCRIPT LANGUAGE=”JavaScript”>
function killErrors() {
return true;
}
window.onerror = killErrors;
</SCRIPT>

没有评论 »

html转换wml

四月 27, 2007 | js/web, php | RSS 2.0

&lt;?php
 
/**
* @author 马秉尧
* @copyright 2005 CoolCode.CN
*/
 
function text2wml($content) {
// 将 WML 变量前缀"$"转义
$content = str_replace('$', '$$', $content);
// 转换特殊字符,并将 Windows/DOS 换行符()转化为 Unix 换行符()
$content = str_replace("", "", htmlspecialchars($content));
// 通过换行符来将各行分开进行处理(过滤空行)
$content = explode("", $content);
for ($i = 0; $i &lt; count($content); $i++) {
// 过滤首尾空格
$content[$i] = trim($content[$i]);
// 如果去掉全角空格为空行,则设为空行,否则不对全角空格过滤。
if (str_replace(" ", "", $content[$i]) == "" $content[$i] = "";
}
//合并各行,转化为 WML,并过滤掉空行
$content = str_replace("&lt;p&gt;&lt;br /&gt;&lt;/p&gt;", "", "&lt;p&gt;".implode("&lt;br /&gt;&lt;/p&gt;&lt;p&gt;", $content)."&lt;br /&gt;&lt;/p&gt;";
return $content;
}
 
function html2wml($content) {
// 过滤掉样式表和脚本
$content = preg_replace("/&lt;style .*?&lt;/style&gt;/is", "", $content);
$content = preg_replace("/&lt;script .*?&lt;/script&gt;/is", "", $content);
// 首先将各种可以引起换行的标签(如&lt;br /&gt;、&lt;p&gt; 之类)替换成换行符""
$content = preg_replace("/&lt;brs*/?&gt;/i", "", $content);
$content = preg_replace("/&lt;/?p&gt;/i", "", $content);
$content = preg_replace("/&lt;/?td&gt;/i", "", $content);
$content = preg_replace("/&lt;/?div&gt;/i", "", $content);
$content = preg_replace("/&lt;/?blockquote&gt;/i", "", $content);
$content = preg_replace("/&lt;/?li&gt;/i", "", $content);
// 将" "替换为空格
$content = preg_replace("/ ;/i", " ", $content);
// 某些不规范的网页中可能有" ",在普通网页中显示会按照" "显示,不会引起错误,但是在 WAP 中会原样显示,因此也要替换成空格。
$content = preg_replace("/ /i", " ", $content);
// 过滤掉剩下的 HTML 标签
$content = strip_tags($content);
// 将 HTML 中的实体(entity)转化为它所对应的字符(WML 仅支持很有现的几个 entity),这里我转化的是中文网页,因此我指定了"GB2312"编码。
$content = html_entity_decode($content, ENT_QUOTES, "GB2312";
// 过滤掉不能转化的实体(entity)
$content = preg_replace("/&amp;#.*?;/i", "", $content);
 
// 上面是将 HTML 网页内容转化为带换行的纯文本,下面是将这些纯文本转化为 WML。
return text2wml($content);
}
?&gt;

没有评论 »

wap+php

四月 27, 2007 | php | RSS 2.0

 1.文件格式

首先要遇到的问题肯定是文件格式,在作web开发时,大家都是用的html或xhtml,到了wap开发时,就得用wml了.什么是wml?大家可以去查更详细的资料,我这里只是略微的提到.在我看来wml类似于xml,有非常严格的格式,在作wap页面时,都得用wml来作为显示.

wml的语法非常简单,在用php作动态输出时,一定要发送一个头信息,标明本页面是wml,而不是别的什么*ml.

code:
header(”Content-type: text/vnd.wap.wml; charset=”gb2312″”);

这里用的字符集是gb2312,在移动的平台上是没有任何问题的,但在联通的平台上就不行了,一定得用utf-8,为了更通用,还是用utf-8更安全.即

code:
header(”Content-type: text/vnd.wap.wml; charset=”utf-8″”);
2.编码

上面说了字符集都应采用utf-8,这是一种容纳了多国语言的字符集,一个汉字是占双字节,utf-8占了4个字节,因此其容纳的信息量更大.在手机上编写的汉字,在将页面内码转成utf-8后,以后再打开就可能是一堆乱码.因此大家在作注释时,尽可能的用英文注释,省得以后看不懂.像editplus,ultraedit等工具都可以转文件内码.

3.适配

世界各大手机厂商真是有病,开发出的手机千奇百怪,可以支持的格式也是五花八门.比如铃声,有的可以支持,16,32,48和弦,支持mid,wmv,有的不完全支持;有的支持gif,png,bmp,有的也不完全支持.这虽然是把手机的档次和成本拉开了,但却苦了作手机开发的兄弟们了.因为不可避免的要对手机所能支持的图片,铃声等多媒体信息作出一个匹配,这个匹配的处理,我们一般叫做手机适配.
要作手机适配,我们一般得有如下资料.

1)一份详细的手机适配资料表,里面应详细的说明手机所能支持的铃声,图片格式,还得有手机型号等信息
2)要正确的获取手机的UA,什么是UA,就是(user agent),实际上就是用户的手机信息.

有了上面的东东我们才能做出适配.以下给出一个我写的在wap开发中用到的类,可以用来取手机号,手机UA.

code:
<?php
/**
* 类名: mobile
* 描述: 手机信息类
* 其他: 偶然 编写
*/
class mobile
{
/**
* 函数名称: getPhoneNumber
* 函数功能: 取手机号
* 输入参数: none
* 函数返回值: 成功返回号码,失败返回false
* 其它说明: 说明
*/
function getPhoneNumber()
{
if (isset($_SERVER['HTTP_X_NETWORK_INFO']))
{
$str1 = $_SERVER['HTTP_X_NETWORK_INFO'];
$getstr1 = preg_replace(’/(.*,)(11[d])(,.*)/i’,'2′,$str1);
Return $getstr1;
}
elseif (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID']))
{
$getstr2 = $_SERVER['HTTP_X_UP_CALLING_LINE_ID'];
Return $getstr2;
}
elseif (isset($_SERVER['HTTP_X_UP_SUBNO']))
{
$str3 = $_SERVER['HTTP_X_UP_SUBNO'];
$getstr3 = preg_replace(’/(.*)(11[d])(.*)/i’,'2′,$str3);
Return $getstr3;
}
elseif (isset($_SERVER['DEVICEID']))
{
Return $_SERVER['DEVICEID'];
}
else
{
Return false;
}
}

/**
* 函数名称: getHttpHeader
* 函数功能: 取头信息
* 输入参数: none
* 函数返回值: 成功返回号码,失败返回false
* 其它说明: 说明
*/
function getHttpHeader()
{
$str = ”;
foreach ($_SERVER as $key=>$val)
{
$gstr = str_replace(”&”,”&”,$val);
$str.= “$key -> “.$gstr.”";
}
Return $str;
}

/**
* 函数名称: getUA
* 函数功能: 取UA
* 输入参数: none
* 函数返回值: 成功返回号码,失败返回false
* 其它说明: 说明
*/
function getUA()
{
if (isset($_SERVER['HTTP_USER_AGENT']))
{
Return $_SERVER['HTTP_USER_AGENT'];
}
else
{
Return false;
}
}

/**
* 函数名称: getPhoneType
* 函数功能: 取得手机类型
* 输入参数: none
* 函数返回值: 成功返回string,失败返回false
* 其它说明: 说明
*/
function getPhoneType()
{
$ua = $this->getUA();
if($ua!=false)
{
$str = explode(’ ‘,$ua);
Return $str[0];
}
else
{
Return false;
}
}

/**
* 函数名称: isOpera
* 函数功能: 判断是否是opera
* 输入参数: none
* 函数返回值: 成功返回string,失败返回false
* 其它说明: 说明
*/
function isOpera()
{
$uainfo = $this->getUA();
if (preg_match(’/.*Opera.*/i’,$uainfo))
{
Return true;
}
else
{
Return false;
}
}

/**
* 函数名称: isM3gate
* 函数功能: 判断是否是m3gate
* 输入参数: none
* 函数返回值: 成功返回string,失败返回false
* 其它说明: 说明
*/
function isM3gate()
{
$uainfo = $this->getUA();
if (preg_match(’/M3Gate/i’,$uainfo))
{
Return true;
}
else
{
Return false;
}
}

/**
* 函数名称: getHttpAccept
* 函数功能: 取得HA
* 输入参数: none
* 函数返回值: 成功返回string,失败返回false
* 其它说明: 说明
*/
function getHttpAccept()
{
if (isset($_SERVER['HTTP_ACCEPT']))
{
Return $_SERVER['HTTP_ACCEPT'];
}
else
{
Return false;
}
}

/**
* 函数名称: getIP
* 函数功能: 取得手机IP
* 输入参数: none
* 函数返回值: 成功返回string
* 其它说明: 说明
*/
function getIP()
{
$ip=getenv(’REMOTE_ADDR’);
$ip_ = getenv(’HTTP_X_FORWARDED_FOR’);
if (($ip_ != “”) && ($ip_ != “unknown”))
{
$ip=$ip_;
}
return $ip;
}
}
?>

4.页面设计

作wap开发时,wap页面是非常简单的.比html来说是简单到不能再简单了.在wap1.0里是没有表格之类的乱七八糟的东西的.所有的标签都是写在一个叫card的标签之内.可以用<p></p>来分段.所以做页面的算是轻松了.

5.模拟器

作wap开发免不了要用各式各样的模拟器来测试,比较好的有m3gate,openwave,opera,还有一个叫winwap的,大家最好别用他来作测试,他的兼容性太好了,即使页面有错误都能给忽略掉.测试时跟用浏览器测试web页面一样,输入网址就可以了.没有比这更容易的事了.

6.注意事项

1)空格,特别是在定义DTD时,

code:
echo “<!DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN” “http://www. wapforum.org/DTD/wml_1.1.xml”>”;
里面如果哪个地方少个空格,就有你受的了.以前写的时候用了页面重排之后,把一些空格给干掉了,整整找了两天才找出错误来,大家千万别步我的后尘.

2)标签,如果标签不成对,会提示错误,大家注意就是了,很容易修正.

以上是我的一些经验,写出来供大家参考,时间有限,写的比较仓促,有时间写一份更详细的为大家服务.

没有评论 »

提交不同的类

四月 27, 2007 | php | RSS 2.0

<script>

function save(){

document.form1.action=”right.asp”;

document.form1.submit();

}

function send(){

document.form1.action=”sendtaskook.asp”;

document.form1.submit();

}

</script>

<form >

<input type=”button” value=”发送” >

<input type=”button” value=”保存” >

</form>

没有评论 »

单文件多文件上传类

四月 27, 2007 | php | RSS 2.0

提醒:

Form部分要注意,第一记得添加enctype=”multipart/form-data”,另外input的name=在上传多文件时要定义为数组,即:uploadinput[],如果只上传一个文件可以写为name=”uploadinput”。

Html 部分:

//__________________________________________________________________

<form enctype=”multipart/form-data” action=”upload_datei.php” method=”POST”>

Send this file: <br>

<input type=”file”><br>

<input type=”file”><br>

<input type=”file”><br>

<input type=”submit” value=”Send File”>

</form>

PHP 接受和处理文件信息部分

//__________________________________________________________________

<?php

include_once “includes/classes/class_upload.php”;

// 所允许上传的文件类型

$fileFormat = array(’gif’,'jpg’,'jpge’,'zip’,'rar’,'pdf’,'7z’,'html’,'doc’,'gz’,'tar’);

$savepath = “upload/”; // 文件上传目录

// 文件大小限制,0 表示无限制,但受php.ini中upload_max_filesize设置影响

$maxsize = 0;

$overwrite = 0; // 覆盖 0 不允许 1 允许

$f = new clsUpload( $savepath, $fileFormat, $maxsize, $overwrite);

//下面的uploadinput是Form中上传文件的input的名字

if (!$f->run(’uploadinput’)){

echo $f->errmsg(); //这里只能传递最后一个出错的信息,详细的信息在$f->getInfo()中可以得到。

}

print_r($f->returnArray);

/*输出错误和得到的结果数组如下

The uploaded file is Unallowable!

Array(

[0] => Array(

[name] => a.doc

[saveName] => 20051122014533_895.doc

[size] => 41

[type] => application/msword

)

[1] => Array(

[name] => aa.htm

[saveName] => 20051122014533_377.htm

[size] => 0

[type] => text/html

[error] => The uploaded file is Unallowable!

)

[2] => Array(

[name] => aaa.php

[saveName] => 20051122014533_840.php

[size] => 0

[type] => text/html

[error] => The uploaded file is Unallowable!

)

)

*/

?>

类文件

//__________________________________________________________________

<?php /*

○︿

√ ﹀ . 。o O . ~~

TITLE : CLASS clsUpload

FILE : class_upload.php

DESCRIPTION : To provide upload utility,

AUTHOR : Peng Zhang zpadmin AT gmail DOT com

http://blog.neten.de

BASED ON : whxbb(whxbb AT 21cn DOT com)

kingerq AT msn DOT com

WRITED : 2005 NOV 20

MODIFIED : 2005 NOV 22

REVISION : V1.0.0

*/

class clsUpload{

var $saveName; // 保存名

var $savePath; // 保存路径

var $fileFormat = array(’gif’,'jpg’,'jpge’,'zip’,'rar’,'pdf’,'7z’,'html’,'doc’,'gz’,'tar’);// 文件格式限定

var $overwrite = 0;// 覆盖模式

var $maxSize = 0;// 文件最大字节

var $ext;// 文件扩展名

var $errno;// 错误代号

var $returnArray= array();// 所有文件的返回信息

var $returninfo= array();// 每个文件返回信息

//构造函数

// @param savePath 文件保存路径

// @param fileFormat 文件格式限制数组

// @param maxSize 文件最大尺寸

// @param overwriet 是否覆盖 1 允许覆盖 0 禁止覆盖

function clsUpload($savePath, $fileFormat=”,$maxSize = 0, $overwrite = 0) {

$this->setSavepath($savePath);

$this->setFileformat($fileFormat);

$this->setMaxsize($maxSize);

$this->setOverwrite($overwrite);

$this->errno = 0;

}

// 上传

function run($fileInput,$changeName = 1){

if(isset($_FILES[$fileInput])){

$fileArr = $_FILES[$fileInput];

if(is_array($fileArr['name'])){//上传同文件域名称多个文件

for($i = 0; $i < count($fileArr['name']); $i++){

$ar['tmp_name'] = $fileArr['tmp_name'][$i];

$ar['name'] = $fileArr['name'][$i];

$ar['type'] = $fileArr['type'][$i];

$ar['size'] = $fileArr['size'][$i];

$ar['error'] = $fileArr['error'][$i];

$this->getExt($ar['name']);//取得扩展名,赋给$this->ext,下次循环会更新

$this->setSavename($changeName == 1 ? ” : $ar['name']);//设置保存文件名

if($this->copyfile($ar)){

$this->returnArray[] = $this->returninfo;

}else{

$this->returninfo['error'] = $this->errmsg();

$this->returnArray[] = $this->returninfo;

}

}

return $this->errno ? false : true;

}else{//上传单个文件

$this->getExt($fileArr['name']);//取得扩展名

$this->setSavename($changeName == 1 ? ” : $fileArr['name']);//设置保存文件名

if($this->copyfile($fileArr)){

$this->returnArray[] = $this->returninfo;

}else{

$this->returninfo['error'] = $this->errmsg();

$this->returnArray[] = $this->returninfo;

}

return $this->errno ? false : true;

}

return false;

}else{

$this->errno = 10;

return false;

}

}

// 单个文件上传

function copyfile($fileArray){

$this->returninfo = array();

// 返回信息

$this->returninfo['name'] = $fileArray['name'];

$this->returninfo['saveName'] = $this->saveName;

$this->returninfo['size'] = number_format( ($fileArray['size'])/1024 , 0, ‘.’, ‘ ‘);//以 B 为单位

$this->returninfo['type'] = $fileArray['type'];

// 检查文件格式

if (!$this->validateFormat()){

$this->errno = 11;

return false;

}

// 检查目录是否可写

if(!@is_writable($this->savePath)){

$this->errno = 12;

return false;

}

// 如果不允许覆盖,检查文件是否已经存在

if($this->overwrite == 0 && @file_exists($this->savePath.$fileArray['name'])){

$this->errno = 13;

return false;

}

// 如果有大小限制,检查文件是否超过限制

if ($this->maxSize != 0 ){

if ($fileArray["size"] > $this->maxSize){

$this->errno = 14;

return false;

}

}

// 文件上传

if(!@copy($fileArray["tmp_name"], $this->savePath.$this->saveName)){

$this->errno = $fileArray["error"];

return false;

}

// 删除临时文件

if(!@$this->del($fileArray["tmp_name"])){

return false;

}

return true;

}

// 文件格式检查

function validateFormat(){

if(!is_array($this->fileFormat) || in_array(strtolower($this->ext), $this->fileFormat) )

return true;

else

return false;

}

//获取文件扩展名

function getExt($fileName){

$ext = explode(”.”, $fileName);

$ext = $ext[count($ext) - 1];

$this->ext = $ext;

}

//设置上传文件的最大字节限制

// @param $maxSize 文件大小(bytes) 0:表示无限制

function setMaxsize($maxSize){

$this->maxSize = $maxSize;

}

//设置文件格式限定

// @param $fileFormat 文件格式数组

function setFileformat($fileFormat){

if(is_array($fileFormat)){$this->fileFormat = $fileFormat ;}

}

//设置覆盖模式

// @param overwrite 覆盖模式 1:允许覆盖 0:禁止覆盖

function setOverwrite($overwrite){

$this->overwrite = $overwrite;

}

//设置保存路径

// @param $savePath 文件保存路径:以 “/” 结尾,若没有 “/”,则补上

function setSavepath($savePath){

$this->savePath = substr( str_replace(”",”/”, $savePath) , -1) == “/” ? $savePath : $savePath.”/”;

}

//设置文件保存名

// @saveName 保存名,如果为空,则系统自动生成一个随机的文件名

function setSavename($saveName){

if ($saveName == ”){ // 如果未设置文件名,则生成一个随机文件名

$name = date(’YmdHis’).”_”.rand(100,999).’.’.$this->ext;

} else {

$name = $saveName;

}

$this->saveName = $name;

}

//删除文件

// @param $fileName 所要删除的文件名

function del($fileName){

if(!@unlink($fileName)){

$this->errno = 15;

return false;

}

return true;

}

// 返回上传文件的信息

function getInfo(){

return $this->returnArray;

}

// 得到错误信息

function errmsg(){

$uploadClassError = array(

0 =>’There is no error, the file uploaded with success. ‘,

1 =>’The uploaded file exceeds the upload_max_filesize directive in php.ini.’,

2 =>’The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form. ‘,

3 =>’The uploaded file was only partially uploaded. ‘,

4 =>’No file was uploaded. ‘,

6 =>’Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3. ‘,

7 =>’Failed to write file to disk. Introduced in PHP 5.1.0. ‘,

10 =>’Input name is not unavailable!’,

11 =>’The uploaded file is Unallowable!’,

12 =>’Directory unwritable!’,

13 =>’File exist already!’,

14 =>’File is too big!’,

15 =>’Delete file unsuccessfully!’,

);

if ($this->errno == 0)

return false;

else

return $uploadClassError[$this->errno];

}

}

?>

没有评论 »

文件上传类

四月 27, 2007 | c/c++, php | RSS 2.0


<?php
class upFile{
 public $url;//上传路径
 public $size;//上传大小
 public $format;//允许上传的格式
 public $name;//上传的来源地址
 private $my_url;//上传转移*类自身用*
 public $title; //上传文件的转换名称。*动态生成名称*

 function __construct($url,$size,$format,$name,$title){
 $this->url=$url;
 $this->size=$size;
 $this->format=$format;
 $this->name=$name;
 $this->title=$title;
 if($this->_right()==false){
 $this->_error(1);
 }
 if($this->_size()==false){
 $this->_error(2);
 }
 if($this->_format()==false){
 $this->_error(3);
 }
 if(is_uploaded_file($_FILES[$this->name]['tmp_name'])){
 if(!move_uploaded_file($_FILES[$this->name]['tmp_name'],$this->my_url)){
 echo ‘<script> alert(”上传没有成功!”)</script>’;
 }else{
 echo ‘<script> alert(”上传成功!”)</script>’;
 }
 }else{
 echo ‘<script>alert(”上传没有成功”)</script>’;
 }
 }
 //目录建立
 function _right(){
 if(is_dir($this->url)==false){
 if(mkdir($this->url,0777)===false){
 return false;
 }else{
 return true;
 }
 }else{
 return true;
 }
 }
 //大小限制
 function _size(){
 $path_top=$_SERVER['DOCUMENT_ROOT'];
 $size_free=disk_free_space($path_top);
 $size_free=$size_free/1024;
 if($size_free<=($_FILES[$this->name]['size']/(1024*1024))){
 return false;
 }else{
 return true;
 }
 if($this->size<=($_FILES[$this->name]['size']/(1024*1024))){
 return false;
 }else{
 return true;
 }
 }
 //格式检查
 function _format(){
 $format_need=”(”.$this->format.”)”;
 $format_true=pathinfo(basename($_FILES[$this->name]['name']));
 $format_true=strtolower($format_true["extension"]);
 if(!ereg($format_need,$format_true)){
 return false;
 }else{
 $this->my_url=$this->url.”/”.$this->title.”.”.$format_true.”";
 return true;
 }
 }
 //错误输出
 function _error($num){
 switch($num){
 case 1:
 echo ‘<script>alert(”上传路径没有成功建立”);</script>’;
 break;
 case 2:
 echo ‘<script>alert(”上传空间不足”);</script>’;
 break;
 case 3:
 echo ‘<script>alert(”上传格式不正确”);</script>’;
 break;
 default:
 break;
 }
 }
}
?>

没有评论 »

js实现

四月 27, 2007 | js/web | RSS 2.0

我希望别人在访问123.htm?id=3的时候,则执行的是<script src=”123.php?id=3″></script>我希望别人在访问123.htm?id=4的时候,则执行的是<script src=”123.php?id=4″></script>

应该什么做?
forget it bar(84561988) 13:39:40
//’—–得到GET地址栏的参数值
function Request(strName)
{
 var strHref = window.location.href;
 //’—–取得?所在的位置
 var intPos = strHref.indexOf(”?”);
 //’—–取得?后面的一串字符
 var strRight = strHref.substr(intPos + 1);

 //’—–以&为分隔符将得到的字符串赋给数组arrTemp
 var arrTmp = strRight.split(”&”);
 for(var i = 0; i < arrTmp.length; i++)
 {
  var arrTemp = arrTmp[i].split(”=”);
  //’——如果传入的字符strName等于存在的参数,就返回对应的字符
  if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];
 }
 return “”;
}
document.write(”<script src=’123.php?id=’” + Request(’id’) + “></script>”);

没有评论 »