为了顺应当前形势和更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 电脑技术 查看内容

用PHP文件上传的具体思路及实现

2006-1-21 05:39| 投稿: computer

摘要:   文件上传我们需要用到HTML里面表单的type=file类型,及其enctype属性。这是我们大家必须要用的。当然了PHP函数库当中的FILE函数库,字符串类型函数库,目录函数库及$_FILES[...
  文件上传我们需要用到HTML里面表单的type=file类型,及其enctype属性。这是我们大家必须要用的。当然了PHP函数库当中的FILE函数库,字符串类型函数库,目录函数库及$_FILES[]的使用是我们必须要用到的。   也许每一个站点都可能会对上传文件有许多的限制,这些限制会包括 文件类型,文件大小,扩展名,以及上传目录的存在与否,上传文件的存在与否,目录的可写性,可读性,上传文件的改名及怎样把文件从缓存当中复制到你所需要的目录当中。   当然出错的预处理也是我们不容忽视的!如果再深一步的讨论我们还可以对文件的操作起用事件日志的记录。   下面我们通过一段程序来实现这些功能:    首先是我们预设的变量值,它包括文件大小,文件扩展名类型,MIMI类型,及是否删除的开关变量 $MAX_SIZE = 2000000;$FILE_MIMES = array('image/jpeg','image/jpg','image/gif','image/png','application/msword'); $FILE_EXTS = array('.zip','.jpg','.png','.gif'); $DELETABLE = true;    下一部就是设置浏览器访问变量及目录访问变量: $site_name = $_SERVER['HTTP_HOST'];$url_dir = http://.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);$url_this = http://.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; $upload_dir = files/;$upload_url = $url_dir./files/;$message =;   建立上传目录并相应改变权限: if (!is_dir(files)) { if (!mkdir($upload_dir))  die (upload_files directory doesn't exist and creation failed); if (!chmod($upload_dir,0755))  die (change permission to 755 failed.);}   用户请求的处理: if ($_REQUEST[del] && $DELETABLE) { $resource = fopen(log.txt,a); fwrite($resource,date(Ymd h:i:s).DELETE - $_SERVER[REMOTE_ADDR].$_REQUEST[del]\\n); fclose($resource);  if (strpos($_REQUEST[del],/.)>0); //possible hacking else if (strpos($_REQUEST[del],files/) === false); //possible hacking else if (substr($_REQUEST[del],0,6)==files/) {  unlink($_REQUEST[del]);  print <script>window.location.href='$url_this?message=deleted successfully'</script>; }}else if ($_FILES['userfile']) { $resource = fopen(log.txt,a); fwrite($resource,date(Ymd h:i:s).UPLOAD - $_SERVER[REMOTE_ADDR] .$_FILES['userfile']['name'].  .$_FILES['userfile']['type'].\\n); fclose($resource);  $file_type = $_FILES['userfile']['type'];  $file_name = $_FILES['userfile']['name']; $file_ext = strtolower(substr($file_name,strrpos($file_name,.)));  //文件大小的检查:  if ( $_FILES['userfile']['size'] > $MAX_SIZE)   $message = The file size is over 2MB.;  //File Type/Extension Check else if (!in_array($file_type, $FILE_MIMES) && !in_array($file_ext, $FILE_EXTS) )  $message = Sorry, $file_name($file_type) is not allowed to be uploaded.; else  $message = do_upload($upload_dir, $upload_url);  print <script>window.location.href='$url_this?message=$message'</script>;}else if (!$_FILES['userfile']);else $message = Invalid File Specified.;   列出我们上传的文件: $handle=opendir($upload_dir);$filelist = ;while ($file = readdir($handle)) { if(!is_dir($file) && !is_link($file)) {  $filelist .= <a href='$upload_dir$file'>.$file.</a>; if ($DELETABLE)  $filelist .= <a href='?del=$upload_dir$file' title='delete'>x</a>;  $filelist .= <sub><small><small><font color=grey> .date(d-m H:i, filemtime($upload_dir.$file)).</font></small></small></sub>;  $filelist .=<br>; }} function do_upload($upload_dir, $upload_url) {  $temp_name = $_FILES['userfile']['tmp_name']; $file_name = $_FILES['userfile']['name'];  $file_name = str_replace(\\\\,,$file_name); $file_name = str_replace(',,$file_name); $file_path = $upload_dir.$file_name;  //File Name Check if ( $file_name ==) {   $message = Invalid File Name Specified;  return $message; }  $result = move_uploaded_file($temp_name, $file_path); if (!chmod($file_path,0777))  $message = change permission to 777 failed.; else  $message = ($result)?$file_name uploaded successfully. : Somthing is wrong with uploading a file.; return $message;} ?> <center><font color=red><?=$_REQUEST[message]?></font><br><form name=upload id=upload ENCTYPE=multipart/form-data method=post>Upload File <input type=file id=userfile name=userfile><input type=submit name=upload value=Upload></form> <br><b>My Files</b><hr width=70%><?=$filelist?><hr width=70%><small><sup>Developed By <a style=text-decoration:none href=http://tech.citypost.ca>CityPost.ca</a></sup></small></center>  

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部