幾個比較重要的類:
文件上傳類:
分頁類:
購物車類:
圖片處理類:
過濾數據類:
創建工具類: tool
<?php /** * Created by PhpStorm. * User: Administrator * Date: 14-4-4 * Time: 下午4:31 */ /* * 單文件上傳類*/ defined('ACC') || exit('ACC Denied'); /* * 文件上傳: * 配置允許的後綴 * 配置允許大小 * 隨機生成目錄 * 隨機生成文件名 * 獲取文件後綴 * 判斷文件後綴 * 良好的報錯支持*/ class UpTool{ protected $allow_ext = 'jpg,jpeg,gif,bmp,png'; // 允許上傳文件的類型 protected $maxSize = 1;// 文件最大上傳的大小 protected $file = null;//存儲上傳文件的信息 protected $errno = 0; protected $error = array( 0=>'無錯', 1=>'上傳文件大小超出系統限制', 2=>'上傳文件大小超出網頁表單限制', 3=>'文件只有部分被上傳', 4=>'沒有文件被上傳', 6=>'找不到臨時文件夾', 7=>'文件寫入失敗', 8=>'不允許的文件類型', 9=>'文件大小超出允許範圍', 10=>'創建目錄失敗', 11=>'文件移動失敗' ); /*獲取文件信息*/ protected function getFile($key){ //獲取文件屬性 $this->file = $_FILES[$key]; } /*文件上傳*/ public function up($key){ //檢測是否存在文件域 if(!isset($_FILES[$key])){ return false; } // $f = $_FILES[$key]; //檢驗上傳是否成功 if($f['error']){ $this->errno = $f['error']; return false; } //獲取後綴 $ext = $this->getExt($f['name']); //檢測後綴 if(!$this->isAllowExt($ext)){ $this->errno = 8; return false; } //檢測大小 if(!$this->isAllowSize($f['size'])){ $this->errno = 9; return false; } //創建目錄 $dir = $this->mk_dir(); if($dir == false){ $this->errno = 10; return false; } //生成隨機文件名 $newName = $this->randName().'.'.$ext; //移動文件 if(move_uploaded_file($f['tmp_name'],$dir.'/'.$newName)){ return $dir.'/'.$newName ; }else{ $this->errno = 11; return false; } } /*獲取錯誤信息*/ public function getErr(){ return $this->error[$this->errno]; } /*獲取文件的後綴名 param string $file return string $ext 後綴名*/ protected function getExt($file){ $tmp = explode('.',$file); $ext =end($tmp) ; return $ext; } /*判斷是否允許傳遞的後綴名,要防止大小寫問題 param string $ext 文件後綴 return bool 是否允許上傳*/ protected function isAllowExt($ext){ return in_array(strtolower($ext),explode(',',strtolower($this->allow_ext))); } /*判斷文件大小是否在允許範圍內 */ protected function isAllowSize($size){ return $size<= $this->maxSize*1024*1024; } //按日期創建目錄 protected function mk_dir(){ $dir =ROOT.'data/p_w_picpaths/'. date('ym/d',time()); if( is_dir($dir) || mkdir($dir,0777,true) ){ return $dir; }else{ return false; } } //生成隨機文件名 protected function randName($length = 6){ $str = 'abcdefghijkmnpqrstuvwxyz23456789'; return substr(str_shuffle($str),0,$length); } } |
測試頁面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Document</title> </head> <body> <form action="test.php" method="POST" enctype="multipart/form-data"> 用戶名: <input type="text" name="username"/><br/> 頭像:<input type="file" name="pic"/><br/> <input type="submit" value="提交"/> </form> </body> </html> |
測試代碼:
define('ACC',true); require('include/init.php'); require(ROOT.'tool/UpTool.class.php'); $up = new UpTool(); if($res = $up->up('pic')){ echo 'OK'; echo $res; }else{ echo 'FAIL<br/>'; echo $up->getErr(); } |