DOWNLOAD MANAGER ĐƠN GIẢN VỚI PHP

Embed Size (px)

Citation preview

  • 7/30/2019 DOWNLOAD MANAGER N GIN VI PHP

    1/5

    Tiu : Download manager n gin vi PHP

    GII THIU

    C l cng khng cn gii thiu nhiu v nhu cu "giu dim" ny v hin nay c kh nhiu site sdng cch qun l download nh vy v cng c s lng cng nhiu khng km cc site mi muntm hiu v s dng n Tuy nhin, c l khng tha nu nh chng ta tm hiu k hn mt cht v l

    do s dng mt chng trnh download manager trn website giu ng dn thc s n cc filedownload.Qun l bng thng v "ti sn" l 2 l do chnh s dng 1 chng trnh qun l download trn website. Bnth tng tng c 1 website cho download nhc hoc ebook vi 1 mc ph nho nh, nu m link downloadtrc tip cc file b l tm lum th th nht l "l vn", th hai l bandwidth s ht sch nhanh n ni trc khi

    bn kp hiu chuyn g xy ra.Mt s l do khc cng "chnh ng" khng km v d nh bn mun m s ln download file; hoc websiteca bn t upload file ca mnh ln v cc file ny li nm trong database hoc c trong 1 th mc m tngoi web khng c c. Trong nhng trng hp nh vy, s dng 1 chng trnh qun l download trn

    website s kh tin li.Tuy nhin, cng c vi iu cn ch trc khi bn quyt nh s dng 1 chng trnh qun l download trnwebsite ca mnh:

    * Tc download s chm hn rt nhiu so vi download file trc tip.* Server s phi x l nhiu cng vic hn so vi khi cho php download file trc tip.* Nu file c lu tr trong database, bn nn ch rng s lng kt ni ng thi vo database l c hn,trong khi vi 1 file c dung lng ln, c th phi mt ti na ting hoc hn download.

    CHNG TRNH U TIN

    Gi s bn c 1 file document.zip trong cng th mc vi file download.php. Nhng ch mnh bn bit l filedocument.zip ny nm u, ngi khc mun download th phi truy cp vo file download.php ca bn. Mngun ca file download.php s nh sau:PHP Code://file download.php

    M:

  • 7/30/2019 DOWNLOAD MANAGER N GIN VI PHP

    2/5

    a, ch c nhiu thi ? ng vy, ch c vn vn 10 dng l c c 1 chng trnh download manager ngin (d nhin l chng trnh ny ch cho php download c mi 1 file document.zip, ta cn phi lm vicnhiu cho chng trnh hon thin hn!).u tin, ta m file document.zip c ch nh phn (binary):PHP Code:$fp = fopen($filename, "rb");.

    Tip theo ta bo cho browser bit data tr v t server l d liu nh phn ch khng phi l vn bn HTMl nhthng thng:Code:

    header("Content-type: application/octet-stream");.

    ng thi ta cng bo cho browser bit dung lng ca file s c ti xung:Code:

    header("Content-length: " . filesize($filename));.

    V cui cng l c ni dung file v echo li cho browser download:PHP Code:fpassthru($fp);.Lnh fpassthru($fp); tng ng vi 2 lnh:PHP Code:$content = fread($handle, filesize($filename));echo $content;

    Nh vy chng trnh ny cng khng c g khc vi cc chng trnh PHP thng thng ngoi 2 lnh header().Trong lnh header("Content-length: " . filesize($filename)); cng khng c g l kh hiu, lnh ny bo chobrowser bit dung lng ca file chun b download (thc ra khng c lnh ny th qu trnh download vn dinra nh bnh thng). Vn mu cht nm lnh header("Content-type: application/octet-stream");.

    Lnh header("Content-type: application/octet-stream"); s bo cho browser bit l d liu chun b load xungl d liu nh phn. V l d liu nh phn nn browser s thc hin qu trnh download v save file thay v hinth ln browser nh l 1 trang HTML thng thng.Th chy v d trn vi ln, thay th file document.zip bng mt s file khc nhau (v d file Word, PDF, Excel...)v th trn vi browser khc nhau, bn s nhn thy c vi ch hi kh chu:

    * Browser s mc nh lu file ln a vi tn l download.php. Bn phi i tn file li cho ng trc khi mfile ra c.* Trong mt s trng hp, thay v hi save file ln a, browser s m lun file (v d chy Word hoc Acrobatm lun file va c download).

    gii quyt 2 vn kh chu trn cng khng c g kh khn lm, ta ch cn thm 1 lnh header() na:header('Content-disposition: attachment; filename="'.$filename.'"');

  • 7/30/2019 DOWNLOAD MANAGER N GIN VI PHP

    3/5

    Tham s "attachment" ca header "Content-disposition" s bo cho browser bit l nn download v save filethay v open. Tham s "filename=" s bo cho browser bit tn ca file ang c download.

    CI TIN CHNG TRNHCho ti by gi chng trnh ca chng ta vn cn th s, chng ta vn cn them vo chc nng na chngtrnh hon thin hn.

    * Cho php ngi dng chn file download. Hin ti chng trnh ca chng ta ch mi cho php download 1file duy nht.* Kim tra d liu nhp t ngi dng. y l mt vic lun nn lm. Chng trnh cho php ngui dng chnfile download th cng cn nn kim tra k ko chnh file config, file source hoc file password ca bn bdownload th phin.

    Cho php ngi dng chn file download: Thao tc ny c l kh n gin i vi bn. Chng trnh s nhnvo tham s file t URL (v d: download.php?file=document.zip). on code x l nh sau:PHP Code:

    Trch dn:

    $filename = isset($_GET['file'])?$_GET['file']:'';Kim tra d liu nhp: Ta cn kim tra cc iu kin sau:

    * File c tn ti v c php c hay khng? PHP cung cp sn cho ta 2 hm ls is_file() vis_readable() lm vic ny:PHP Code:if ( $filename == "" || !is_file($filename) || !is_readable($filename) ) {

    echo "Error: ...";exit(-1);}

    on m trn s kim tra nu nh tn file l rng, hoc file khng tn ti hoc khng c c th s bo li vthot.* Tn file c cha cc k t t bic hay khng? Thng cc file upload s c trong 1 th mc ring.

    Nh vy tn file ch c th cha cc k t a-z, 0-9, gch ngang (-), gch di (_), khong trng v du chm(.). Ta c th xem nh cc k t khc trong tn file l khng hp l. on m kim tra nh sau:PHP Code:

    Trch dn:

    if ( !preg_match('/^[a-z0-9\_\-\. ]*$/i', $filename) ) {echo "Error: ...";exit(-1);}

  • 7/30/2019 DOWNLOAD MANAGER N GIN VI PHP

    4/5

    on m trn s kim tra nu nh trong file c cha k t l (khng phi l 0-9, a-z, gach di, gch ngang,khong trng, du chm, khong trng th s bo li) v thot chng trnh. Ngoi ra, c mt s file cu hnh t

    bic ca server c bt u bng du chm (v d . htaccess, . htpasswd ), ta cng phi kim tra xem k tu tin ca tn file c phi l du chm hay khng, ni cch khc, k t u tin ca tn file phi l 1 ch ci(a-z) hoc ch s (0-9) hoc k t gch ngang hoc gch di. Lnh if trn c ci tin li nh sau:PHP Code:

    Trch dn:

    if ( !preg_match('/^[a-z0-9\_\-][a-z0-9\_\-\. ]*$/i', $filename) ) {echo "Error: ...";exit(-1);}

    Gip li ta c chng trnh c ci tin nh sau:

    PHP Code:

    M:

  • 7/30/2019 DOWNLOAD MANAGER N GIN VI PHP

    5/5

    Lu rng ta khng cn kim tra tn file rng na v trn ta kim tra k t u tin ca tn file, nn nu tnfile l rng th s khng c k t u tin, do vy iu kin kim tra ca hm pregg_match s b sai ri.

    THC MC NH CUI CNGTi y xem nh chng trnh ca chng ta xem nh l hon chnh. Tuy nhin, c th bn s cn mt thc

    mc nho nh: ngoi kiu d liu application/octet-stream th cn kiu d liu no khc khng? v mc nh thPHP s dng kiu d liu g tr v cho browser?Mc nh PHP s tr v d liu kiu text/html cho browser. Mt s kiu d liu tng ng vi cc kiu filethng dng:Code:

    .GIF: image/gif .JPG: image/jpeg .PNG: image/png .WAV: audio/wav .MP3: audio/mpeg3 .DOC:application/msword .PDF: application/pdf

    Tu vo kiu ca d liu tr v m browser c th s c nhng cch ng khc nhau. V d nu d liu tr v l

    file nh th browser s hin th lun, nu l file nhc th browser s gi WMP ln play, nu l file PDF thchng trnh Acrobat s c gi...Kiu application/octet-stream ch d liu nh phn (binary) chung chung. Nu bn ch mun browserdownload v save file th bn ch cn tr v kiu d liu application/octet-stream l .Vy th ny sinh 1 vn na: tm danh sch cc kiu d liu tng ng vi tng loi file u? Google l trth t lc ca bn Hoc bn c th xem mc "CC TI LIU THAM KHO" cui bi vit.

    VI LI NG TRC KHI KT THCSau khi c ht bi vit, chc bn cng thy rng vic vit 1 chng trnh qun l download file cho websitecng khng phi l qu phc tp. Cng nh tiu ca bi vit ni "Vit mt chng trnh downloadmanager n gin", chng trnh ca chng ta kh n gin nhng cng c cc chc nng c bn cn thit.Cc chc nng "tin download" hoc "hu download" bn c th d dng t pht trin thm tu vo nhu cu ca

    bn, v d nh tng bin m s ln download ca file, kim tra login trc khi cho download. Bn ch cn ch mt s im sau khi vit 1 chng trnh download manager:

    * cc file upload ln trong 1 th mc ring d b qun l. Tt nht l trong 1 th mc khng th truycp trc tip c t Web m ch c th c bi chng trnh PHP ca bn.* Kim tra k tn file c ngi dng nhp vo.

    * M file c ch nh phn (binary). Bn tham kho thm cc tham s ca hm fread trong PHP.* Tr v kiu d liu ca file v cc thng s cn thit khc qua lnh header().* Nu khng tht s cn thit th nn ng dn download trc tip thay v dng download manager, v nhvy s download nhanh hn v server t phi x l thm nhiu cng vic.