Проблема со скриптом Flat File Host

D
На сайте с 12.08.2007
Offline
52
2109

Есть скрипт Flat File Host. При попытке загрузки файла более 3мб после некоторого количества времени появляется ошибка: Warning: md5_file() [function.md5-file]: Filename cannot be empty in /xxx/xxx/xxx/xxx-xxx/mysite.ru/data/upload.php on line 8 Вы не выбрали файл чтобы загрузить его.

Вот код злополучного файла:

<?php


include("./config.php");
include("./header.php");

$filename = $_FILES['upfile']['name'];
$filesize = $_FILES['upfile']['size'];
$filecrc = md5_file($_FILES['upfile']['tmp_name']);

$bans=file("./bans.txt");
foreach($bans as $line)
{
if ($line==$filecrc."\n"){
echo "Этот файл не может быть загружен.";
include("./footer.php");
die();
}
if ($line==$_SERVER['REMOTE_ADDR']."\n"){
echo "Вы не можете загружать файлы.";
include("./footer.php");
die();
}
}

$checkfiles=file("./files.txt");
foreach($checkfiles as $line)
{
$thisline = explode('|', $line);
if ($thisline[0]==$filecrc){
echo "Этот файл уже загружен.<br />";
echo "Ссылка для скачивания: <a href=\"" . $scripturl . "download.php?file=" . $filecrc . "\">". $scripturl . "download.php?file=" . $filecrc . "</a><br />";
echo "Этот файл первоначально был загружен не вами, так что Вы не сможете удалить ссылку.";
include("./footer.php");
die();
}
}

if(isset($allowedtypes)){
$allowed = 0;
foreach($allowedtypes as $ext) {
if(substr($filename, (0 - (strlen($ext)+1) )) == ".".$ext)
$allowed = 1;
}
if($allowed==0) {
echo "Этот тип файла не может быть загружен.";
include("./footer.php");
die();
}
}

if(isset($categorylist)){
$validcat = 0;
foreach($categories as $cat) {
if($_POST['category']==$cat || $_POST['category'] = ""){ $validcat = 1; }
}
if($validcat==0) {
echo "Была выбрана неправильная категория..";
include("./footer.php");
die();
}
$cat = $_POST['category'];
} else { $cat = ""; }

if($filesize==0) {
echo "Вы не выбрали файл чтобы загрузить его.";
include("./footer.php");
die();
}

$filesize = $filesize / 1048576;

if($filesize > $maxfilesize) {
echo "Файл, который Вы загрузили, слишком большой.";
include("./footer.php");
die();
}

$userip = $_SERVER['REMOTE_ADDR'];
$time = time();

if($filesize > $nolimitsize) {

$uploaders = fopen("./uploaders.txt","r+");
flock($uploaders,2);
while (!feof($uploaders)) {
$user[] = chop(fgets($uploaders,65536));
}
fseek($uploaders,0,SEEK_SET);
ftruncate($uploaders,0);
foreach ($user as $line) {
@list($savedip,$savedtime) = explode("|",$line);
if ($savedip == $userip) {
if ($time < $savedtime + ($uploadtimelimit*60)) {
echo "Вы пытаетесь загрузить снова слишком рано!";
include("./footer.php");
die();
}
}
if ($time < $savedtime + ($uploadtimelimit*60)) {
fputs($uploaders,"$savedip|$savedtime\n");
}
}
fputs($uploaders,"$userip|$time\n");

}

$passkey = rand(100000, 999999);

if($emailoption && isset($_POST['myemail']) && $_POST['myemail']!="") {
$uploadmsg = "Ваш файл (".$filename.") был загружен.\n Ссылка для скачивания: ". $scripturl . "download.php?file=" . $filecrc . "\n Ссылка для удаления файла: ". $scripturl . "download.php?file=" . $filecrc . "&del=" . $passkey . "\n Благодарим вас за использование нашего сервиса!";
mail($_POST['myemail'],"Ваш загруженный файл",$uploadmsg,"From: admin@yoursite.com\n");
}

if($passwordoption && isset($_POST['pprotect'])) {
$passwerd = md5($_POST['pprotect']);
} else { $passwerd = md5(""); }

if($descriptionoption && isset($_POST['descr'])) {
$description = strip_tags($_POST['descr']);
} else { $description = ""; }

$filelist = fopen("./files.txt","a+");
fwrite($filelist, $filecrc ."|". basename($_FILES['upfile']['name']) ."|". $passkey ."|". $userip ."|". $time."|0|".$description."|".$passwerd."|".$cat."|\n");

$movefile = "./storage/" . $filecrc;
move_uploaded_file($_FILES['upfile']['tmp_name'], $movefile);

echo "Ваш файл был загружен!<br />";
echo "Ссылка для скачивания: <a href=\"" . $scripturl . "download.php?file=" . $filecrc . "\">". $scripturl . "download.php?file=" . $filecrc . "</a><br />";
echo "Ссылка для удаления файла: <a href=\"" . $scripturl . "download.php?file=" . $filecrc . "&del=" . $passkey . "\">". $scripturl . "download.php?file=" . $filecrc . "&del=" . $passkey . "</a><br />";
echo "Пожалуйста запомните эти ссылки.";
include("./footer.php");
?>

Вобщем, ошибка указывает на строчку:

$filecrc = md5_file($_FILES['upfile']['tmp_name']);

Почему так происходит?! Никак не могу понять...

Передача для любителей ретро игр! (http://emugamer.ru/)
DeveloperRu
На сайте с 27.02.2009
Offline
72
#1

напиши перед $filename = $_FILES['upfile']['name']; эту строку

var_dump($_FILES);

die();

сохрани и залей проблемный файл заново - увидишь, что остается в скрипте в $_FILES

Ответы на вопросы (http://telenok.com)
D
На сайте с 12.08.2007
Offline
52
#2

После некоторого времени скрипт выдал ошибку array(0) { }

Т.е. только это - больше ничего...

RO
На сайте с 13.07.2009
Offline
88
#3

возможно из фомы идет файл с другим именем. на форму взглянуть можно?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий