本文目錄一覽:
- 1、用PHP如何做出雲盤網站? 用PHP寫網頁後端,如何讓用戶可以上傳文件?如何讓網頁保存這些文件?如
- 2、如何下載PHP語言網站源碼?
- 3、求php文件上傳源碼
- 4、PHP源碼問題
- 5、那裡有php源碼下載
用PHP如何做出雲盤網站? 用PHP寫網頁後端,如何讓用戶可以上傳文件?如何讓網頁保存這些文件?如
第一個,前端不是用什麼控件就可以,html+css是基礎,js可以讓前端更加人性化和體驗更加友好;
第二個,上傳和下載是前後端配合,重心在後端,需要php的文件處理功能,有很多此類的教程;
第三個,保存文件的時候對文件進行篩選,那些允許上傳下載,哪些不允許,控制大小數量,否則服務器壓力會特別大,還有就是用戶權限,就是用戶上傳的文件必須是只有上傳過的用戶才能使用;
第四個,對上傳的文件要進行分類存放和重命名,以免重名的文件被覆蓋掉;
建議:像這樣的網站,牽扯到會員系統,文件管理系統等,如果單獨開發,必須有非常好的php編程經驗,最好是找現成的開源系統進行二次開發或者學習一下啊。很少有這種專門針對網盤開發的教程,你可以找會員系統開發的教程和php文件管理的教程學習。
如何下載PHP語言網站源碼?
在PHP的官方網站可以下載源碼(),進入之後選擇DOWNLOAD裏面的Complete Source Code就能下載,具體的頁面地址是:
求php文件上傳源碼
?php
//文件和圖片上傳類
class UploadFile
{//類定義開始
public $maxSize = -1; // 上傳文件的最大值
public $supportMulti = true; // 是否支持多文件上傳
public $allowExts = array();// 允許上傳的文件後綴// 留空不作後綴檢 查
public $allowTypes = array(); // 允許上傳的文件類型 // 留空不做檢查
public $thumb = false; // 使用對上傳圖片進行縮略圖處理
public $thumbMaxWidth; // 縮略圖最大寬度
public $thumbMaxHeight; // 縮略圖最大高度
public $thumbPrefix = ‘thumb_’; // 縮略圖前綴
public $thumbSuffix = ”;
public $thumbPath = ”; // 縮略圖保存路徑
public $thumbFile = ”;// 縮略圖文件名
public $thumbRemoveOrigin =false;// 是否移除原圖
public $zipImages = false; // 壓縮圖片文件上傳
public $autoSub = false; // 啟用子目錄保存文件
public $subType = ‘hash’;// 子目錄創建方式 可以使用hash date
public $dateFormat = ‘Ymd’;
public $hashLevel = 1; // hash的目錄層次
public $savePath = ”; // 上傳文件保存路徑
public $autoCheck = true; // 是否自動檢查附件
public $uploadReplace = false;// 存在同名是否覆蓋
// 例如可以是 time uniqid com_create_guid 等
// 必須是一個無需任何參數的函數名 可以使用自定義函數
public $saveRule = ”;// 上傳文件命名規則
// 例如可以是 md5_file sha1_file 等// 上傳文件Hash規則函數名
public $hashType = ‘md5_file’;
private $error = ”;// 錯誤信息
private $uploadFileInfo ;// 上傳成功的文件信息
/**
+———————————————————-
* 架構函數
+———————————————————-
* @access public
+———————————————————-
*/
public function __construct($maxSize=”,$allowExts=”,$allowTypes=”,$savePath=”,$saveRule=”)
{
if(!empty($maxSize) is_numeric($maxSize)) {
$this-maxSize = $maxSize;
}
if(!empty($allowExts)) {
if(is_array($allowExts)) {
$this-allowExts = array_map(‘strtolower’,$allowExts);
}else {
$this-allowExts = explode(‘,’,strtolower($allowExts));
}
}
if(!empty($allowTypes)) {
if(is_array($allowTypes)) {
$this-allowTypes = array_map(‘strtolower’,$allowTypes);
}else {
$this-allowTypes = explode(‘,’,strtolower($allowTypes));
}
}
if(!empty($savePath)) {
$this-savePath = $savePath;
}
if(!empty($saveRule)) {
$this-saveRule = $saveRule;
}
}
private function save($file)
{
$filename = $file[‘savepath’].$file[‘savename’];
if(!$this-uploadReplace is_file($filename)) {// 不覆蓋同名文件
$this-error = ‘文件已經存在!’.$filename;
return $this – error;
}
// 如果是圖像文件 檢測文件格式
if( in_array(strtolower($file[‘extension’]),array(‘gif’,’jpg’,’jpeg’,’bmp’,’png’,’swf’)) $this – error === getimagesize($file[‘tmp_name’])) {
$this-error = ‘非法圖像文件’;
return $this – error;
}
if(!move_uploaded_file($file[‘tmp_name’], iconv(‘utf-8′,’gbk’,$filename))) {
$this-error = ‘文件上傳保存錯誤!’;
return $this – error;
}
if($this-thumb in_array(strtolower($file[‘extension’]),array(‘gif’,’jpg’,’jpeg’,’bmp’,’png’))) {
$image = getimagesize($filename);
if($this – error !== $image) {
//是圖像文件生成縮略圖
$thumbWidth = explode(‘,’,$this-thumbMaxWidth);
$thumbHeight = explode(‘,’,$this-thumbMaxHeight);
$thumbPrefix = explode(‘,’,$this-thumbPrefix);
$thumbSuffix = explode(‘,’,$this-thumbSuffix);
$thumbFile = explode(‘,’,$this-thumbFile);
$thumbPath =
$this-thumbPath?$this-thumbPath:$file[‘savepath’];
// 生成圖像縮略圖
if(file_exists(dirname(__FILE__).’/Image.class.php’))
{
require_once(dirname(__FILE__).’/Image.class.php’);
$realFilename = $this-autoSub?basename($file[‘savename’]):$file[‘savename’];
for($i=0,$len=count($thumbWidth); $i$len; $i++) {
$thumbname = $thumbPath.$thumbPrefix[$i].substr($realFilename,0,strrpos($realFilename, ‘.’)).$thumbSuffix[$i].’.’.$file[‘extension’];
Image::thumb($filename,$thumbname,”,$thumbWidth[$i],$thumbHeight[$i],true);
}
if($this-thumbRemoveOrigin) {
// 生成縮略圖之後刪除原圖
unlink($filename);
}
}
}
}
return true;
}
/**
+———————————————————-
* 上傳文件
+———————————————————-
* @access public
+———————————————————-
* @param string $savePath 上傳文件保存路徑
+———————————————————-
* @return string
+———————————————————-
* @throws ThinkExecption
+———————————————————-
*/
public function upload($savePath =”) {
if(empty($savePath)) //如果不指定保存文件名,則由系統默認
$savePath = $this-savePath;
$savePath .= date(‘Ym’,time()).”/”;
if(!is_dir($savePath)) { // 檢查上傳目錄
if(is_dir(base64_decode($savePath))) {// 檢查目錄是否編碼後的
$savePath = base64_decode($savePath);
}else{
if(!mkdir($savePath)){ // 嘗試創建目錄
$this-error = ‘上傳目錄’.$savePath.’不存在’;return $this – error;
}
}
}else {
if(!is_writeable($savePath)) {
$this-error = ‘上傳目錄’.$savePath.’不可寫’; return $this – error;
}
}
$fileInfo = array();
$isUpload = $this – error;
// 獲取上傳的文件信息
// 對$_FILES數組信息處理
$files = $this-dealFiles($_FILES);
foreach($files as $key = $file) {
//過濾無效的上傳
if(!empty($file[‘name’])) {
//登記上傳文件的擴展信息
$file[‘key’] = $key;
$file[‘extension’] = $this-getExt($file[‘name’]);
$file[‘savepath’] = $savePath;
$file[‘savename’] = $this-getSaveName($file);
// 自動檢查附件
if($this-autoCheck) {
if(!$this-check($file))
return $this – error;
}
//保存上傳文件
//echo “pre”;print_r( $file );
if(!$this-save($file)) return $this – error;
/*
if(function_exists($this-hashType)) {
$fun = $this-hashType;
$file[‘hash’] = $fun(auto_charset($file[‘savepath’].$file[‘savename’],’utf-8′,’gbk’));
}
*/
//上傳成功後保存文件信息,供其他地方調用
unset($file[‘tmp_name’],$file[‘error’]);
$fileInfo[] = $file;
$isUpload = true;
}
}
if($isUpload) {
$this-uploadFileInfo = $fileInfo;
return $fileInfo;
}else {
$this-error = ‘沒有選擇上傳文件’;
return $this – error;
}
}
/**
+———————————————————-
* 轉換上傳文件數組變量為正確的方式
+———————————————————-
* @access private
+———————————————————-
* @param array $files 上傳的文件變量
+———————————————————-
* @return array
+———————————————————-
*/
private function dealFiles($files) {
$fileArray = array();
foreach ($files as $file){
if(is_array($file[‘name’])) {
$keys = array_keys($file);
$count = count($file[‘name’]);
for ($i=0; $i$count; $i++) {
foreach ($keys as $key)
$fileArray[$i][$key] = $file[$key][$i];
}
}else{
$fileArray = $files;
}
break;
}
return $fileArray;
}
/**
+———————————————————-
* 獲取錯誤代碼信息
+———————————————————-
* @access public
+———————————————————-
* @param string $errorNo 錯誤號碼
+———————————————————-
* @return void
+———————————————————-
* @throws ThinkExecption
+———————————————————-
*/
protected function error($errorNo)
{
switch($errorNo) {
case 1:
$this-error = ‘上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值’;
break;
case 2:
$this-error = ‘上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值’;
break;
case 3:
$this-error = ‘文件只有部分被上傳’;
break;
case 4:
$this-error = ‘沒有文件被上傳’;
break;
case 6:
$this-error = ‘找不到臨時文件夾’;
break;
case 7:
$this-error = ‘文件寫入失敗’;
break;
default:
$this-error = ‘未知上傳錯誤!’;
}
return ;
}
/**
+———————————————————-
* 根據上傳文件命名規則取得保存文件名
+———————————————————-
* @access private
+———————————————————-
* @param string $filename 數據
+———————————————————-
* @return string
+———————————————————-
*/
private function getSaveName($filename)
{
$rule = $this-saveRule;
if(empty($rule)) {//沒有定義命名規則,則保持文件名不變
$saveName = $filename[‘name’];
}else {
if(function_exists($rule)) {
//使用函數生成一個唯一文件標識號
$saveName = $rule().rand(1001,9999).”.”.$filename[‘extension’];
}else {
//使用給定的文件名作為標識號
$saveName = $rule.rand(1001,9999).”.”.$filename[‘extension’];
}
}
if($this-autoSub) {
// 使用子目錄保存文件
$saveName = $this-getSubName($filename).’/’.$saveName;
}
return $saveName;
}
/**
+———————————————————-
* 獲取子目錄的名稱
+———————————————————-
* @access private
+———————————————————-
* @param array $file 上傳的文件信息
+———————————————————-
* @return string
+———————————————————-
*/
private function getSubName($file)
{
switch($this-subType) {
case ‘date’:
$dir = date($this-dateFormat,time());
break;
case ‘hash’:
default:
$name = md5($file[‘savename’]);
$dir = ”;
for($i=0;$i$this-hashLevel;$i++) {
$dir .= $name{0}.’/’;
}
break;
}
if(!is_dir($file[‘savepath’].$dir)) {
mkdir($file[‘savepath’].$dir);
}
return $dir;
}
/**
+———————————————————-
* 檢查上傳的文件
+———————————————————-
* @access private
+———————————————————-
* @param array $file 文件信息
+———————————————————-
* @return boolean
+———————————————————-
*/
private function check($file) {
if($file[‘error’]!== 0) {
//文件上傳失敗
//捕獲錯誤代碼
$this-error($file[‘error’]);
return $this – error;
}
//檢查文件Mime類型
if(!$this-checkType($file[‘type’])) {
$this-error = ‘上傳文件MIME類型不允許!’;
return $this – error;
}
//檢查文件類型
if(!$this-checkExt($file[‘extension’])) {
$this-error =’上傳文件類型不允許’;
return $this – error;
}
//文件上傳成功,進行自定義規則檢查
//檢查文件大小
if(!$this-checkSize($file[‘size’])) {
$this-error = ‘上傳文件大小超出限制!’;
return $this – error;
}
//檢查是否合法上傳
if(!$this-checkUpload($file[‘tmp_name’])) {
$this-error = ‘非法上傳文件!’;
return $this – error;
}
return true;
}
/**
+———————————————————-
* 檢查上傳的文件類型是否合法
+———————————————————-
* @access private
+———————————————————-
* @param string $type 數據
+———————————————————-
* @return boolean
+———————————————————-
*/
private function checkType($type)
{
if(!empty($this-allowTypes))
return in_array(strtolower($type),$this-allowTypes);
return true;
}
/**
+———————————————————-
* 檢查上傳的文件後綴是否合法
+———————————————————-
* @access private
+———————————————————-
* @param string $ext 後綴名
+———————————————————-
* @return boolean
+———————————————————-
*/
private function checkExt($ext)
{
if(!empty($this-allowExts))
return in_array(strtolower($ext),$this-allowExts,true);
return true;
}
/**
+———————————————————-
* 檢查文件大小是否合法
+———————————————————-
* @access private
+———————————————————-
* @param integer $size 數據
+———————————————————-
* @return boolean
+———————————————————-
*/
private function checkSize($size)
{
return !($size $this-maxSize) || (-1 == $this-maxSize);
}
/**
+———————————————————-
* 檢查文件是否非法提交
+———————————————————-
* @access private
+———————————————————-
* @param string $filename 文件名
+———————————————————-
* @return boolean
+———————————————————-
*/
private function checkUpload($filename)
{
return is_uploaded_file($filename);
}
/**
+———————————————————-
* 取得上傳文件的後綴
+———————————————————-
* @access private
+———————————————————-
* @param string $filename 文件名
+———————————————————-
* @return boolean
+———————————————————-
*/
private function getExt($filename)
{
$pathinfo = pathinfo($filename);
return $pathinfo[‘extension’];
}
/**
+———————————————————-
* 取得上傳文件的信息
+———————————————————-
* @access public
+———————————————————-
* @return array
+———————————————————-
*/
public function getUploadFileInfo()
{
return $this-uploadFileInfo;
}
/**
+———————————————————-
* 取得最後一次錯誤信息
+———————————————————-
* @access public
+———————————————————-
* @return string
+———————————————————-
*/
public function getErrorMsg()
{
return $this-error;
}
}//類定義結束
?
PHP源碼問題
提示的意思是你漏了一邊大括號或者是多了在on 366行 ,你一一配對,檢查一下吧
那裡有php源碼下載
IT學習聯盟那裡有php源碼下載,IT學習聯盟有5000GIT資源和10萬源代碼供你下載學習,可以到IT學習聯盟看看。
……………………………………………………………………
剛看你問的問題,應該是對php很感興趣,其實你可以自學php。關於如何學習php,我剛才看到一篇很不錯的文章,是一個專科生介紹自己如何自學php,並找到php的工作,裏面介紹了他的學習方法和學習過程,希望對你有幫助。
先做個自我介紹,我07年考上一所很爛專科民辦的學校,學的是生物專業,具體的學校名稱我就不說出來獻醜了。09年我就輟學了,我在那樣的學校,一年學費要1萬多,但是根本沒有人學習,我實在看不到希望,我就退學了。
退學後我也迷茫,大專都沒有畢業,我真的不知道我能幹什麼,我在糾結着我能做什麼。所以輟學後我一段時間,我想去找工作,因為我比較沉默寡言,不是很會說話,我不適合去應聘做業務。我想應聘做技術的,可是處處碰壁。
一次偶然的機會,我才聽到php這個行業。那天我去新華書店,在計算機分類那邊想找本書學習。後來有個女孩子走過來,問我是不是讀計算機的,有沒有興趣學習php,然後給我介紹了一下php現在的火熱情況,告訴我學php多麼的有前景,給我了一份傳單,php培訓的廣告。聽了她的介紹,我心裏痒痒的,確實我很想去學會一門自己的技術,靠自己的雙手吃飯。
回家後,我就上網查了下php,確實是當今比較熱門的行業,也是比較好找工作的,工資也是相對比較高。我就下決心想學php了。於是我去找php培訓的相關信息,說真的,我也很迷茫,我不知道培訓是否真的能像他們宣傳的那樣好,所以我就想了解一段時間再做打算。
後來,我在百度知道看到一篇讓我很鼓舞的文章是一個php高手介紹沒有基礎的朋友怎麼自學入門學php,文章寫的很好,包含了如何學習,該怎麼學習。他提到一個方法就是看視頻,因為看書實在太枯燥和費解的,很多我們也看不懂。這點我真的很認同,我自己看書往往看不了幾頁。
我在想,為什麼別人都能自學成才,我也可以的!我要相信自己,所以我就想自學,如果實在學不會我再去培訓。
主意一定,我就去搜索php的視頻,雖然零星找到一些php的視頻,但是都不系統,我是想找一個能夠告訴我該怎麼學的視頻,一套從入門到精通的視頻,一個比較完整的資料,最好能有老師教,不懂可以請教的。
後來我又找到一份很好的視頻,是在IT學習聯盟推出的一份視頻《零基礎php就業班》(喜歡《零基礎php就業班》的可以複製 t.cn/8s1Z7Of 粘貼瀏覽器地址欄按回車鍵即打開)。裏面的教程還不錯,很完整,還贈送10個頂級企業項目。
下面介紹下我的學習流程,希望對和我一樣完全沒有基礎的朋友有所幫助。
收到他們寄過來的光盤後,我就開始學習了,由於我沒有什麼基礎,我就從最簡單的Html/css/javascript視頻教程學起,話說簡單,其實我還是很多不懂的,只要重複多看幾遍,就能看懂。Html/css/javascript我差不多學了一個禮拜,接下來我就學了PHP基礎和Mysql數據庫,差不多也就三個禮拜。我每天都在不停的寫一些簡單的代碼,這樣一月後我基本掌握了php的全部基礎。
接下來開始學習php高級課程,老師幽默風趣而又輕鬆的課堂教課,使我發現原來學習php並不是一件很難的事情。之前我把php基礎學得還不錯,到了到了php高級部分,我覺不又不是很難,可能老師太牛了,他能把複雜的問題講的比較通俗易懂,有些難點的地方我還是連續看了五六次,把他弄懂。每天下午6點下班後,吃了飯,馬上跑回家。看視頻,買了幾本筆記本。當時,為了編程還花幾百元了台二手的台式電腦,配置一般,但編程是足夠的。一邊看視頻,一邊記筆記,把重點都記下來,還一邊跟着老師敲代碼,為了能儘早學會php。每天都堅持學5-6個小時。經常學到晚上一點多才睡覺。星期六,日不用上班,每天7點多起床,學到晚上11,12點。那段時間特別辛苦,特別累。在學習php的三個多月里,除了吃飯睡覺工作,剩餘的時間都在學習,因為我知道自己的計算機基礎不是很好,也沒有學過什麼計算機,相對於那些科班的人來說我要比他們付出更多的努力。我只能咬緊牙關,堅持下去,我不能放棄,我要完成我的夢想,我要讓我的家人過上好日子。終於三個多月後我把php教程里的內容和項目都學完了,在學項目的過程中我發現項目特別重要,他能把你學過的知識全部聯繫起來,能更好的理解你所學的知識。還有學習過程中,動手很重要,要經常跟着老師動手敲,動手吧,跟着做,一行一行的跟着敲,再試着加一些自己的功能,按照自己的思路敲一些代碼,收穫遠比干聽大的多。 如果遇到暫時對於一些思路不能理解的,動手寫,先寫代碼,慢慢你就會懂了。這套視頻還贈送了10個頂級企業項目,對於我沒有任何經驗的人來說,這個太重要了,還有在學習項目是提升能力最快的方法。項目能把所有的知識點全都連到一起了,不再是分散的,而是形成一個整體了。那種感覺是僅僅深入鑽研知識點而不寫真實項目的人所不能體會的。一個項目就是一根繩子可以把大片的知識串到一起。 就這樣,我用了兩個月也把項目給學完了。其實學完教程差不錯就達到就業水平,但是我可能覺得自己學歷低還是把那10個頂級企業項目才去找工作。
於是我就到51job瘋狂的投簡歷,因為我學歷的問題,專科沒有畢業,說真的,大公司沒有人會要我,所以我投的都是民營的小公司,我希望自己的努力有所回報。沒有想過幾天過後,就有面試了,但是第一次面試我失敗了,雖然我自認為筆試很好,因為我之前做了準備,但是他們的要求比較嚴格,需要有一年的項目經驗,所以我沒有被選中。
後來陸續面試了幾家公司,終於功夫不負有心人。我終於面試上的,是在閔行的一家民營的企業,公司規模比較小,我的職務是php開發程序員,但我也比較滿足,開的工資是3500一個月,雖然我知道在上海3500隻能過溫飽的生活,但是我想我足夠了。我至少不用每天都要靠父母養,我自己也能養活自己的。我想只要我繼續努力,我工資一定會翻倍的。
把本文寫出來,希望能讓和我一樣的沒有基礎的朋友有信心,其實我們沒有必要自卑,我們不比別人笨,只要我們肯努力,我們一樣會成功。
…………………………………………
…………………………………………
原創文章,作者:MX5AC,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/128134.html