Помогни ни да направим Uroci.net по - богат! Добави урок

Написване на клас за File Upload

PHP » PHP
nma   трудност:    видян: 13786



Section #1
Първата секция от тази функция дефинира Вашите променливи. Приемаме временно име за файла, както и определяме размера му с цел сравняване. Размера на файла е дефиниран в bytes.

<?php
//SECTION #2
if ($temp_file_name) {
$size = filesize($temp_file_name);
if ($size < $kb) {
$file_size = "$size Bytes";
}
elseif ($size < $mb) {
$final = round($size/$kb,2);
$file_size = "$final KB";
}
elseif ($size < $gb) {
$final = round($size/$mb,2);
$file_size = "$final MB";
}
elseif($size < $tb) {
$final = round($size/$gb,2);
$file_size = "$final GB";
} else {
$final = round($size/$tb,2);
$file_size = "$final TB";
}
} else {
$file_size = "ERROR: NO FILE PASSED TO get_file_size()";
}
return $file_size;
}
?>


Section #2

Втората секция на тази функция стартира нашия процес за проверка и изход. Първо проверяваме дали променливата $temp_file_name е валидна, ако не функцията връща грешка. В $temp_file_name, получаваме размера на файла във bytes от PHP функцията filesize(). Искаме да имаме възможност да проверим нашия log file.

Function #5 (Екстракт на Max File Size)

<?php
function get_max_size() {
$max_file_size = trim($this->max_file_size);
$kb = 1024;
$mb = 1024 * $kb;
$gb = 1024 * $mb;
$tb = 1024 * $gb;

if ($max_file_size) {
if ($max_file_size < $kb) {
$max_file_size = "max_file_size Bytes";
}
elseif ($max_file_size < $mb) {
$final = round($max_file_size/$kb,2);
$max_file_size = "$final KB";
}
elseif ($max_file_size < $gb) {
$final = round($max_file_size/$mb,2);
$max_file_size = "$final MB";
}
elseif($max_file_size < $tb) {
$final = round($max_file_size/$gb,2);
$max_file_size = "$final GB";
} else {
$final = round($max_file_size/$tb,2);
$max_file_size = "$final TB";
}
} else {
$max_file_size = "ERROR: NO SIZE PARAMETER PASSED TO get_max_size()";
}
return $max_file_size;
}
?>


Няма да разбиваме функцията на секции, защото тя е почти като горната функция. Единственото различно нещо е, че връща максималния размер на файла. Тази функция е подходяща за извикване в случай, че потребителят се опитва да upload-не file, който е прекалено голям. Бихте могли да напишете грешка и да използувате тази функция да покаже максималния допустим размер на файла.

----------------------------
Function #6 (Validation of The User)


<?php
function validate_user() {
//SECTION #1
$banned_array = $this->banned_array;
$ip = trim($_SERVER['REMOTE_ADDR']);
$cpu = gethostbyaddr($ip);
$count = count($banned_array);

//SECTION #2
if ($count < 1) {
return true;
} else {
foreach($banned_array as $key => $value) {
if ($value == $ip ."-". $cpu) {
return false;
} else {
return true;
}}}}
?>


Тази функция, ще проверява кой потребител upload-ва. Силното в този class е, че можете да блокирате потребители да ъплоудват на Вашия сървър. Използва се техниката на прихващане на IP. Всеки път, когато потребител upload-ва файл, информацията за адреса му и размера на файла, дата, и час, се записват в текстов файл на сървъра. Ако Ви се случи да имате проблем с някой, upload-ващ потребител, можете да изтриете файла, да проверите, кой е upload-вал и да добавите IP във Вашият списък със забранени потребители. Ако потребителят е открит в този списък, той или тя, няма да имат възможност за upload на файлове.

<?php
function validate_user() {
//SECTION #1
$banned_array = $this->banned_array;
$ip = trim($_SERVER['REMOTE_ADDR']);
$cpu = gethostbyaddr($ip);
$count = count($banned_array);
?>



Страници: «1 2 3 4 5 6 »

Сподели урока:



Коментари (1)

yahoo на 24.02 2007 в 14:28ч.
Когато upload-вам файл в името на който има единична кавичка ' името се отрязва до кавичката. Самата $_FILES['upload']['name'] е отрязана и не мога да и приложа str_replace някакви идеи?

Регистрирайте се, за да добавите коментар


Калдейта Ком ЕООД - © 2003-. Всички права запазени.
Препоръчваме: IT Новини