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

Обикновена Upload форма

PHP » PHP
fastcrawler   трудност:    видян: 10069

<?php
@session_start();
$site_name = $_SERVER['HTTP_HOST'];
$url_dir = " http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF' ]);
$url_this = " http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF' ];

// Къде да се записват качените файлове?

$upload_dir = "files/";
$upload_url = $url_dir."/files/";
$message ="log.txt";
/************************************************************
Създава директория за качените файлове
************************************************************/
if (!is_dir("files")) {
if (!mkdir($upload_dir))
die ("няма папка за качените файлове и не можах да създам такава");
if (!chmod($upload_dir,0755))
die ("не можах да сменя правата на 755");
}
/************************************************************
Обслужва заявката на потребителя
************************************************************/
if ($_REQUEST[del]) {
print "<script>window.location.href='$url_this?message=deleted successfully'</script>";
}
else if ($_FILES['userfile']) {
$message = do_upload($upload_dir, $upload_url);
print "<script>window.location.href='$url_this?message=$message'</script>";
}
else if (!$_FILES['userfile']);
else
$message = "Invalid File Specified.";

/************************************************************
Списък с файлове
************************************************************/
$handle=opendir($upload_dir);
$filelist = "";
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= "<br><a href='$upload_dir$file'>".$file."</a>";
}
}
function do_upload($upload_dir, $upload_url) {
$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];
$file_type = $_FILES['']['exe'];
$file_type = $_FILES['']['mp3'];
$file_type = $_FILES['']['avi'];
$file_type = $_FILES['']['mp3u'];
$file_type = $_FILES['']['php'];
$file_type = $_FILES['']['html'];
$file_type = $_FILES['']['*.*'];
$file_size = $_FILES['userfile']['size'];
$result = $_FILES['userfile']['error'];
$file_url = $upload_url.$file_name;
$file_path = $upload_dir.$file_name;

//File Name Check
if ( $file_name =="") {
$message = "Невалиден тип файл";
return $message;
}
//File Size Check
else if ( $file_size > 999999999999999999999) {
print $file_size;
$message = "Размера на файла е много голям.";
return $message;
}
//File Type Check
else if ( $file_type == "text/plain"
|| $file_type == "application/force-download"
|| $file_type == "application/octet-stream") {
$message = "Не може да качвате скриптови файлове";
return $message;
}
$result = move_uploaded_file($temp_name, $file_path);
if (!chmod($file_path,0755))
$message = "не можах да сменя правата на 755";
else
$message = ($result)?"$file_name($file_type) файла качен успешно." :
"Каченият файл е повреден.";
return $message;
}
?>
<table style="width: 40%" align="center" valign="top">
<tr>
<td>
<div align="center" style="font-size: 19px; font-weight: bold">
</table>
<body bgcolor="#667987"><center>
<font color=red><?=$_REQUEST[message]?></font>
<form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
Качи фаил: <input type="file" id="userfile" name="userfile" size="20">
<input type="submit" name="upload" value="Upload">
</form>
<b>До сега потребителите ни са качили следните файлове:</b>
<hr style="color:yellow; background-color:black; height:1px;
margin-right:0; text-align:right; border:0px">
<?=$filelist?>
</center>
<?
if ($_REQUEST[debug]==1) print "------------------Debugging Info----------------<br>";
if ($_REQUEST[debug]==1) print "site=$site_name<br>dir=$url_dir<br>url=$url_this<br>";
if ($_REQUEST[debug]==1) print "upload dir=$upload_dir<br>upload url=$upload_url<br>";
?>


Това е една обикновена Upload форма.
За да качвате е необходимо да си създадете една директория files при Upload формата и също един TXT документ с име log.txt :)

Автор : Fastcrawler



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

agent717 на 10.12 2006 в 00:29ч.
Явно не си си пускал скрипта, а и не си чел коментарите за да разбереш че директорията сама се създава!
За да е коректен скрипта и да може да се сменя името на директорията само от едно място трябва:
ред 10 да стане: $upload_url = $url_dir."/".$upload_dir;
ред 15 да стане: if (!is_dir($upload_dir)) {

ред11: $message ="log.txt";
е излишен и въобще не се използва файл с име log.txt

ред24: if ($_REQUEST[del]) {
е грешен - трябва да е if ($_REQUEST["del"]) {

скрипта също така връща много Notice: Undefined index
за да не го прави може да се използва функцията:

Function Array_Read($arr,$key,$def) {
if ((array_key_exists($key,$arr) and (isset($arr[$key])))) {
Return $arr[$key];
} else {
Return $def;
}
}

например вместо:
$_REQUEST["del"]
може да се напише Array_Read($_REQUEST,"del","")

иначе качването работи!
agent717 на 10.12 2006 в 09:17ч.
проверката: else if ( $file_size > 999999999999999999999)
е малко излишна - аз не съм чувал за диск с големина 909494701TB, камо ли за файл с такъв размер!
Emilcho на 20.12 2006 в 18:42ч.
Неверятно си го направил, обаче имам един въпрос-Защо не чете кирилица?
Не виждам никъде грешка в source-а, а localhost-а ми е настроен. Ако си забележиш някоя грешка пиши.
kvadrata на 31.01 2007 в 18:53ч.
Добави следния код най-горе в ъплоуд формата и ще е на кирилица:
kvadrata на 31.01 2007 в 18:56ч.
Кода неизлезе защото в коментарите не е позволено да има кодове :(
А урока не е на Fastcrawler а го е взел от някой сайт и го е сложил тук ;) Fastcrawler почти нищо неразбира от php а пак ъплоуд форма ще направи :))
yahoo на 18.02 2007 в 23:02ч.
Това нещо може ли да качва файлове в името на които има единична кавичка пример file's.jpg защото при мен отрязва името до кавичката? и как може да се str_replace-не :-)
DataMatrix на 16.03 2007 в 20:54ч.
Аз по принцип нищо не разбирам от PHP (знам 'C' та изглежда познато), ама кода като си го пуснах нищо не прави - създава една празна папка FILES и това е. Знае ли някой дали е збъркан кода?
DataMatrix на 16.03 2007 в 20:57ч.
Работи, ама става само например за C:boot.ini, с 'C:Documents and SettingsNETDesktopSR-71 - 06 - Goodbye.mp3' не стана!
DataMatrix на 16.03 2007 в 21:05ч.
В пътя до файла не трябва да има интервали, иначе не ще да го качи!
interfan6 на 21.03 2007 в 14:46ч.
има само 1 проблем не ми излиства какво сам ка4ил.
DataMatrix на 30.03 2007 в 02:08ч.
ето го леко едитнат: http://datamatrix-bg.hit.bg/mgr2.php

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


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com