在处理广告时,若能直接使用浏览器将广告的 468x60 图档送到处理广告的伺服器中,相信是件很舒服的事,不用再开 FTP 程式,搞大半天只为了 upload。
这个问题,是所有 Web CGI 程式的痛,包括 ASP、Prel....等等,都需要再经过系统元件的增加才能达成。号称最强的 Web CGI 程式: PHP,在这方面的表现没有令人失望,甚至傲视其它的 CGI 工具。
File Upload 功能在 RFC 1867 文件有有详细的说明,是利用特殊的文件格式(content-type) multipart/form-data。值得注意的是浏览器一定要用 Netscape 3.0以上或 MS Internet Explorer 4.0 以上的版本才能将档案上传。
先看下面的 HTML 原始码
method=post>
您的大名:
档案名称:
在 form 的标签中,要加入 enctype="multipart/form-data" 的字串,表示使用者输入的资料上有档案上传,同时 method 一定要用 POST 而不能用 GET。
在上面的码中,若使用者姓名填入 Wilson Peng,并选 c:\myphoto.gif 的档案,在使用者按下送出键后,浏览器则传送出下面的 POST 资料。
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="user"
Wilson Peng
--AaB03x
content-disposition: form-data; name="myfile"
Content-type: multipart/mixed, boundary=BbC04y
--BbC04y
Content-disposition: attachment; filename="myphoto.gif"
Content-type: image/gif
Content-Transfer-Encoding: binary
...myphoto.gif 内容略...
--BbC04y--
--AaB03x--
看到上面的资料中,boundary=AaB03x 即为分开不同栏位资料的讯息,其中的AaB03x 编码方法,视浏览器的版本不同而异,通常是浏览器杂凑产生的。之后就可以
看到用 --AaB03x 来隔开不同的栏位。
以上面为例,处理 form 的 action 程式 next.php,会主动产生四个变数,见下表
变数名 说明
$myfile 即上传的档案内容
$myfile_name 上传档案在使用者端的名称
$myfile_size 上传档案的大小
$myfile_type 上传档案的格式,如 "image/gif"
在 next.php 程式要做的最重要动作,就是好好的使用这四个变数,否则程式一结束,使用者上传的档案就消失了。因此,要先将 $myfile 复制到存放广告图的目录中
copy($banner,"/home1/biglobe3/ad/".$banner_name);
这行程式就是将档案存在 /home/htdocs/ad 的目录中,就上面的例子而言,就将档案存到 /home/htdocs/ad/myphoto.gif。重要的是,存放的目录不能是 WebServer 无法读到的目录,而应放在网站的 Homepage 所在目录中,才可以在网路上看到。
或许程式要更细部的处理,例如比对取得的档案大小与系统回报的是否相同...,等等,就可以用 $myfile_size 变数了。
若在 form 中设定 input file 的名称改掉,则在 Upload 的变数也一起改,如
则变数就改成 $upfile、$upfile_name、$upfile_size、与 $upfile_type。
因此,下面的例子就利用 File Upload 及 Oracle 7.x 后端资料库,将档案放在 Web Homepage 目录中,相关资讯则存在 Oracle 中。当然,加上使用者认证,让有帐号的使用者才能上传图片,可避免刽客 (cracker) 等将不雅或不适当的广告上传。例中有关资料库的设定和 5.4 留言版的设定相同。
// adadd.php
if (($banner=="") and ($url=="")) {
?>
加权值数字愈大,图片出现的机率就愈高,内定值为 1。
METHOD=POST>
广告 Banner: | TYPE="file"> |
广告网址 URL: | type=text size=30> |
辅助字串 ALT: | type=text size=30> |
广告说明: | type=text size=30> |
显示加权: | type=text size=5 value=1> |
} else {
if (file_exists("/home/htdocs/ad/".$banner_name)) {
CommonHeader("档案 ".$banner_name." 已存在");
echo "
广告档案已经存在
\n
";
exit;
};
copy($banner,"/home1/biglobe3/ad/".$banner_name);
putenv("ORACLE_SID=WWW");
putenv("NLS_LANG=american_taiwan.zht16big5");
putenv("ORACLE_HOME=/home/oracle/product/7.3.2");
putenv("LD_LIBRARY_PATH=/home/oracle/product/7.3.2/lib");
putenv("ORA_NLS=/home/oracle/product/7.3.2/ocommon/nls/admin/data");
putenv("ORA_NLS32=/home/oracle/product/7.3.2/ocommon/nls/admin/data");
$handle=ora_logon("user38@WWW","iam3849") or die;
$cursor=ora_open($handle);
ora_commitoff($handle);
$query="insert into ad(url, banner, alt, descript, priority)
values('$url', '$banner_name', '$alt', '$descript', $priority)";
ora_parse($cursor, $query) or die;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);
echo "
echo "";
echo "";
echo "
";
echo "
- ";
- 广告网址: ".$url;
echo " - 辅助字串: ".$alt;
echo " - 广告说明: ".$descript;
echo " - 显示加权: ".$priority;
echo "
echo "
}
?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能