php实现文件上传的例子(附详细源码)
今天用PHP做了个文件上传工具,功能还是很完善滴,如下:
每个图片上传之后,都有自己的地址,改变原图位置或重命名时,将不会重复上传。
一、功能:
A:文件分类上传
B:生成相应的文件夹,如本例,选择团,生成文件夹tuan
C:点击图片,查看详细
二、HTML代码:
<div id="container"> <fieldset> <legend class="img"><img src="/static/imghwm/default1.png" data-src="css/logo.png" class="lazy" style="max-width:90%" alt="php实现文件下传的例子(附详细源码)" ></legend> <form action="" method="post" name="myform" id="myform" onsubmit="return false" enctype="multipart/form-data"> <strong>亲,请选择你要上传的文件</strong> <div class="file"><input type="file" id="fileToUpload" name="fileToUpload"></div> <select id="product"> <option value="" if echo> >请选择产品</option> <option value="tuan" if echo> >团</option> </select> <button id="postBtn">Submit</button> </form> <div id="info"></div> <div style="position:relative; top:40px; left:20px;"> <a id="loading" style="display:none"><img src="/static/imghwm/default1.png" data-src="css/loading.gif" class="lazy" style="max-width:90%" alt="php实现文件下传的例子(附详细源码)" ></a> </div> <a href="#" id="img_link" target="_blank"> <div id="img_url">buding</div> <br> <img class="preview" id="preview" src="" style="max-width:90%" alt="php实现文件下传的例子(附详细源码)" > </a> </fieldset> </div>
三、Javascript代码:
<script type="text/javascript"> $('#postBtn').click(function(){ $('#preview').hide(); $('#img_url').hide(); $('#loading') .ajaxStart(function(){ $(this).show(); }) .ajaxComplete(function(){ $(this).hide(); }); if($('#fileToUpload').val() == ""){ $('#info').html("亲,还没选择文件呢"); var jObject={"Url":"","Height":413}; var jString=JSON.stringify(jObject); window.parent.postMessage(jString,'*'); return false; } if($('#product').val() == ""){ $('#info').html("亲,还没选择产品呢"); $('#info').css("color","#e9af32"); var jObject={"Url":"","Height":413}; var jString=JSON.stringify(jObject); window.parent.postMessage(jString,'*'); return false; } var val = $('#product').val(); $.ajaxFileUpload({ url:'ajaxupload.php', secureuri:false, fileElementId:'fileToUpload', dataType: 'text', data:{product:val}, success: function (data, status) { if(data.search(/http:\/\//i) < 0 ){ $('#info').html(data); var jObject={"Url":"","Height":413}; var jString=JSON.stringify(jObject); window.parent.postMessage(jString,'*'); }else{ $('#info').html("您上传的文件为:<br/>"); $('#preview').attr("src",data); $('#img_link').attr("href",data); $('#img_url').html(data); $('#preview').show(); $('#img_url').show(); $('#preview').load(function(){ var imgH=$('#preview').height(); var jObject={"Url":data,"Height":imgH+228,"oid":"<?php echo @$_REQUEST['oid']; ?>"}; var jString=JSON.stringify(jObject); window.parent.postMessage(jString,'*'); }); } }, error: function (data, status, e){ $('#info').html(data+e); } }); }); </script>
四、PHP代码
<?phprequire_once ('config.php');if(empty($_FILES) || empty($_REQUEST)){ header('location:imgupload.php'); exit;}array_push($_FILES, $_REQUEST);$filename = 'fileToUpload';$product = @$_FILES[0]['product'];$today = date("Y-m-d");$time = date("YmdHis"); $year = date("Y");$month = date("m");$day = date("d");$img_path = $product.'/'.$year.'/'.$month.'/'.$day.'/';$destination_dir = ROOT_PATH.'/pic/'.$img_path.'/';if(!is_uploaded_file($_FILES[$filename]['tmp_name'])){//验证上传文件是否存在 echo "请选择你想要上传的图片"; exit;} if($product == "") {//选择产品 echo "请选择产品"; exit;} $files = $_FILES[$filename]; if($max_file_size < $files['size']){//判断文件是否超过限制大小 echo "图片太大了,传个小点的吧(<=2MB)"; exit; } if(!file_exists($destination_dir)) {//判断上传目录是否存在,不存在则创建一个. if(!mkdir($destination_dir,0777,true)) { echo "创建目录 {".$destination_dir."} 失败<可能是权限问题>"; exit; } } $type = pathinfo($files['name']); $type = strtolower($type["extension"]); $type =".".$type; $tmp_name = $files['tmp_name']; $md5file = md5_file($tmp_name);//生成md5文件 $new_name =$md5file.$type; $img_relat_path = $img_path.$new_name; $img_abs_path = $destination_dir.$new_name; $url = IMG_URL.$img_relat_path; //判断数据库中图片是否存在 $sql="select url from file_url where md5 = '".$md5file."'"; $res=$db->getOne($sql); if($res) { echo $res['url']; exit; } if(!move_uploaded_file ($files['tmp_name'], $img_abs_path)) {//上传文件 echo "上传文件失败"; exit; } //将图片存入数据库 $sql="insert into file_url(url,product,md5,create_time) values('".$url."','".$product."','".$md5file."','".$today."')"; $db->Execute($sql); $db->CloseDB(); echo $url;?>

絕對會話超時從會話創建時開始計時,閒置會話超時則從用戶無操作時開始計時。絕對會話超時適用於需要嚴格控制會話生命週期的場景,如金融應用;閒置會話超時適合希望用戶長時間保持會話活躍的應用,如社交媒體。

服務器會話失效可以通過以下步驟解決:1.檢查服務器配置,確保會話設置正確。 2.驗證客戶端cookies,確認瀏覽器支持並正確發送。 3.檢查會話存儲服務,如Redis,確保其正常運行。 4.審查應用代碼,確保會話邏輯正確。通過這些步驟,可以有效診斷和修復會話問題,提升用戶體驗。

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

設置httponly標誌對會話cookie至關重要,因為它能有效防止XSS攻擊,保護用戶會話信息。具體來說,1)httponly標誌阻止JavaScript訪問cookie,2)在PHP和Flask中可以通過setcookie和make_response設置該標誌,3)儘管不能防範所有攻擊,但應作為整體安全策略的一部分。

phpsessions solvathepromblymaintainingStateAcrossMultipleHttpRequestsbyStoringDataTaNthEserVerAndAssociatingItwithaIniquesestionId.1)他們儲存了AtoredAtaserver side,通常是Infilesordatabases,InseasessessionIdStoreDistordStoredStoredStoredStoredStoredStoredStoreDoreToreTeReTrestaa.2)

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版
中文版,非常好用