linkedin facebook linkedin facebook nod32

Php, css va jqure da fayllarni yuklab olishni yaratish usuli

Muallif: Mengliyev Sh.

Qo`shilgan sana: 2017-02-14

Php, css va jqure da fayllarni yuklab olishni yaratish usuli

Biz yaratmoqchi bo'lgan fayl-hujjat, rasm, kino va hakozo narsalar bo'lishi mumkin. PHP va MySQL ma’lumotlar bazasini yangilash va istalgan faylga foydalanuvchi yo'naltiruvchi bo'ladi va yuklab olish imkoniyatini beradi.
Har qanday fayl yuklash sonini kuzatib borish uchun, uni bir papkaga qo'yish kerak va fayllar uni kirish uchun maxsus URL-manzidan foydalaning.
Birinchi qadam - skript formatlash yaratish hisoblanadi. Bu juda oddiy - biz ro'yxatning har bir element fayl uchun mas'ul bo'lgan og'riqqa ro'yxatini o'z ichiga olgan bir div fayl-menejeri, bor.
Yuklab kuzatish uchun kerakli fayllar, fayllar senariysi ildizli papkasidan papkasiga joylashtirilgan. PHP keyin barcha fayllar orqali aylanishiga va og'riqqa ro'yxatda bir ro'yxat elementini (li)-tegiga har bir qo'shing.

div id="file-manager">

<ul class="manager">
<!-- LI elementlar PHP tomonidan hosil qilinishi -->
<li><a href="download.php?file=kitob.zip">Kitob.zip
<span class="download-count" title="yuklab olish">0</span> <span
class="download-label">Yuklash</span></a>
</li>
</ul>

</div>

Href xususiyati havolalar ko'chirib uchun parametr sifatida fayl nomini bazaga bir xil kiritishni unutmang. Bu yerda va yuklab olishlar sonini kuzatib boriladi.

Belgi so'ng ning rasmiylashtiruvidan olish qilayroq. CSS-qoidalari sahifada va sinflar nomlari boshqa elementlardan faqat bir marta sodir bo'lishi bilan farqlanadi, chunki id (# belgi) orqali div fayl-menejeri pasaytirish qaratiladi.

styles.css -quyidagi ko`rinishda bo`ladi.

#file-manager{
background-color:#EEE;
border:1px solid #DDD;
margin:50px auto;
padding:10px;
width:400px;
}

ul.manager li{
background:url("img/bg_gradient.gif") repeat-x center bottom #F5F5F5;
border:1px solid #DDD;
border-top-color:#FFF;

list-style:none;
position:relative;
}
ul.manager li a{
display:block;
padding:8px;
}
ul.manager li a:hover .download-label{

/* Mpimok haqida Hovering, yashil matnini ko'chirib ko'rsatish */
display:block;
}

span.download-label{
background-color:#64B126;
border:1px solid #4E9416;
color:white;
display:none;
font-size:10px;
padding:2px 4px;
position:absolute;
right:8px;
text-decoration:none;
text-shadow:0 0 1px #315D0D;
top:6px;

/* CSS3 –to`rtburchakning burchaklariga radius berish */

-moz-border-radius:3px;
-webkit-border-radius:3px;
border-radius:3px;
}

span.download-count{
color:#999;
font-size:10px;
padding:3px 5px;
position:absolute;
text-decoration:none;
}

PHP fayllar papkasida fayllar uchun ko'rsatadi va ro'yxatda bir ro'yxat elementini har bir faylni ko'rsatishga xizmat qiladi.

Index.php – asosiy yuqoridagi php fayl

// xatolar haqida habar berish:
error_reporting(E_ALL^E_NOTICE);

// Baza bilan bog`lash:
require 'connect.php';

$extension='';
$files_array = array();

/* files papkasidagi barcha fayllarni o`qish: */

$dir_handle = @opendir($directory) or die("files papkasi topilmadi fayl yo`q!");

while ($file = readdir($dir_handle))
{
/* Fayllar identifikatsiyasidan o'tmadingiz */
if($file{0}=='.') continue;

/* explode() uchun end () funktsiyasi oxirgi massiv elementini ko'rsatadi: */
$extension = strtolower(end(explode('.',$file)));

/* Php fayllarga o'tish */
if($extension == 'php') continue;

$files_array[]=$file;
}

/* Alifbo tartibda fayllarni tartiblashtirish */
sort($files_array,SORT_STRING);

$file_downloads=array();

$result = mysql_query("SELECT * FROM download_manager");

if(mysql_num_rows($result))
while($row=mysql_fetch_assoc($result))
{
/* Qator muhim, $ file_downloads fayl nomi bo'ladi
va yuklashlar sonini o'z ichiga oladi */

$file_downloads[$row['filename']]=$row['downloads'];
}

Biz mysql_query () yordamida download_manager baza jadvalida barcha qatorlarni tanlaydi e'tibor bering, va yuklashlar soni bir kalit sifatida fayl nomi bilan array $ file_downloads filename-jadvalga fayl nomini qo'shing. Misol: files papkaga [ 'kitob.zip'] faylini ko`chiring va baza jadvaliga $ file_downloads yozing.
Agar elementlar ro'yxatini chiqaradi kodni ko'rasiz Quyida:

index.php – asasiy o`rtadagi php fayl

foreach($files_array as $key=>$val)
{
echo '<li><a href="download.php?file='.urlencode($val).'">'.$val.'
<span class="download-count" title="Yuklab olish">'.(int)$file_downloads[$val].'</span> <span class="download-label">Yuklash</span></a>
</li>';
}

Hamma narsa foreach halqa array $ files_array yordamida shunchaki amalga oshiriladi. Shundan so'ng, barcha fayllar ko`rsatiladi ko'rsatiladi. Agar fayl files papkadagi fayllar bilan filename-baza jadvaliga mos tushmasa unda xatolik sodir bo`ladi.
Endi qanday qilib faylni ko`chirib olishni va kuzatish (sonda) da batafsil ko'rib chiqaylik.

download.php fayli quyidagi ko`rishishda bo`ladi.

// Xato nazorat qilish:
error_reporting(E_ALL^E_NOTICE);

// Fayli baza bilan ulanish yoqish:
require('connect.php');

if(!$_GET['file']) error('parametrlar mos tushmadi!');
if($_GET['file']{0}=='.') error('filda xato!');

if(file_exists($directory.'/'.$_GET['file']))
{
/* saytdan foydalanuvchi mehmon, faylni sichqoncha bilan bosib yuklab olgan bo`lsa, yuklab olishni hisoblaudi: */
if(!is_bot())
mysql_query(" INSERT INTO download_manager SET filename='".mysql_real_escape_string($_GET['file'])."'
ON DUPLICATE KEY UPDATE downloads=downloads+1");

header("Location: ".$directory."/".$_GET['file']);
exit;
}
else error("fayl papkada yo`q!");

/* xato funktsiyasi yordamchisi:*/

function error($str)
{
die($str);
}

function is_bot()
{
/*Bu funksiya ishlash jarayonida kuzatiladi */

$botlist = array("Teoma", "alexa", "froogle", "Gigabot", "inktomi",
"looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory",
"Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot",
"crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp",
"msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz",
"Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot",
"Mediapartners-Google", "Sogou web spider", "WebAlta Crawler","TweetmemeBot",
"Butterfly","Twitturls","Me.dium","Twiceler");

foreach($botlist as $bot)
{
if(strpos($_SERVER['HTTP_USER_AGENT'],$bot)!==false)
return true;
}
return false;
}

Bu ma'lumotlar bazasi bir qator fayllarni yulashni is_bot () tekshirish orqali downloads-baza jadvaliga sonni hisoblab boradi.
INSERT INTO download_manager SET filename='filename.doc' ON DUPLICATE KEY UPDATE downloads=downloads+1

Bu yerda - fayl ma'lumotlar bazasida mavjud bo'lsa, ko'chirmalar ustun bir birligidan qo'shish MySQL bazada UPDATE ON nusxa olish kaliti.
Shunday qilib, yangi fayllar avtomatik ravishda bosib yuklab olish paytida bazaga sonni avtomatik qo'shadi.
jQuery- quyidagicha omalga oshiriladi.
Real-vaqt faylni yuklash orqali, har bir yuklanishlar sonini oshirib borish fayl nomi yonidagi hisoblagich yangilash quyidagicha bo`ladi. jQuery da quyidagicha bajariladi:

script.js-fayli orqali amalga oshiriladi.

$(document).ready(function(){
/* Kodi ishga tushirilsa sahifa yuklaydi */

$('ul.manager a').click(function(){

var countSpan = $('.download-count',this);
countSpan.text( parseInt(countSpan.text())+1);
});
});

Htaccess- faylga quyidagi kiriting
Serverda .htacess faylida bir necha fayllar bilan amalga oshirilishi mumkin.

<Files *.*>
ForceType application/octet-stream
</Files>

tayyor faylni yuklab olish 26 kbayt

1559 marta o`qildi.

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений