LINUX.ORG.RU

Очередные непонятности с php кодом


0

1

Есть код простейшего файлообменного сервера:

<html>
	<head>
		<title><?=$_SERVER ["HTTP_HOST"];?>: One click file hostion</title>
		<link rel="stylesheet" type="text/css" media="all" href="style.css">
	</head>
	<body>
		<table width="100%" height="100%"><tr valign="center"><td align="center" nowrap><div id="upload">
		<?php
			if (@$_POST ['upload'] == "")
			{
				echo 'Выберите файл для закачки | Максимальный размер файла 2000 MB<br><br>';
				echo '<form enctype="multipart/form-data" action="" method="post">';
				echo '<input type="hidden" name="MAX_FILE_SIZE" value="30000">';
				echo '<input type="file" name="file" size="40">';
				echo '<input type="submit" value=" Загрузить " name="upload">';
				echo '</form>';
                                echo 'К сожалению сервис находится в стадии разработки, и может не принимать некоторые файлы<br>';
			} else {
                                $cat=trim(htmlspecialchars(mysql_real_escape_string($_POST['cat'])));
                                $upload_dir = "/uploads/".$cat."";
				$upload_path = dirname (__FILE__).$upload_dir;
                                $upload_filename = $_FILES['file']['tmp_name'];			
				$upload_link = "http://".$_SERVER ["HTTP_HOST"].dirname ($_SERVER ["PHP_SELF"]).$upload_dir.$upload_filename;
				if (@move_uploaded_file ($_FILES['file']['tmp_name'], $upload_path.$upload_filename))
				{
					echo "<b>File is valid, and was successfully uploaded.</b><br><br>";
					echo "Download Link:<br>";
					echo "<input type='text' size=80 onclick='this.select()' value='".$upload_link."'><br><br>";
					echo "Download Link in HTML (for use in web sites, myspace, blogs, etc):<br>";
					echo "<input type='text' size=80 onclick='this.select()' value=\"<a href='".$upload_link."'>".$upload_link."</a>\"><br><br>";
					echo "Download Link in Forum code (for use in phpBB, vBulletin, etc):<br>";
					echo "<input type='text' size=80 onclick='this.select()' value='[url]".$upload_link."[/url]'><br><br>";
					echo "<a href='?".md5(microtime())."'>Upload another file</a>";
				} else {
					echo "<b>Вы делаете что-то не так, или ошибки на сервере!</b>";
				}
			}
		?>
	</div></td></tr></table></body>
</html>

Проблема в том, что файлы то загружаются, то нет, от формата это не зависит, в чём может быть проблема?


Ответ на: комментарий от karbofos

так он сразу выдаёт

Notice: Undefined index: upload in /home/a/arhipelaru/file/public_html/index.php on line 11

Notice: Undefined index: file in /home/a/arhipelaru/file/public_html/index.php on line 24

Notice: Undefined index: file in /home/a/arhipelaru/file/public_html/index.php on line 27 Вы делаете что-то не так, или ошибки на сервере!

phan13 ()
Ответ на: комментарий от karbofos

Ммм... Не так. Правильнее будет как-то так:

if (!isset($_FILES)) {
    ...
}

Не помню только присутствует ли $_FILES при любой загрузке страницы и надо ли в нём проверять на существование элемента как в моём посте выше. НО количество быдлокода действительно зашкаливает.

karbofos ()
Ответ на: комментарий от phan13

тоесть только Notice: Undefined index: file in /home/a/arhipelaru/file/public_html/index.php on line 24

Notice: Undefined index: file in /home/a/arhipelaru/file/public_html/index.php on line 27 Вы делаете что-то не так, или ошибки на сервере!

phan13 ()
Ответ на: комментарий от karbofos

если так, то когда я выбираю файл, он его загружает, думает и выдаёт Вы делаете что-то не так, или ошибки на сервере!

Никаких ошибок не пишет

Другие файлы загружает. По моему с ограничением на максимальный размер файла касяк какой=то

phan13 ()
Ответ на: комментарий от karbofos

добавил

ini_set('display_errors',1); error_reporting(E_ALL | E_STRICT);

всё равно ошибку не пишет, но не заливает файл

а можно как нибудь иначе ограничения на файл сделать?

phan13 ()
Ответ на: комментарий от phan13

if ($_FILES['uploadfile']['size'] == ...)

Кстати, какого размера файл пытаешься залить? В $_FILES['uploadfile']['error'] код ошибки хранится по которому можно определить что с залитым файлом не так, в т. ч. превышение размера. А у тебя этот параметр вообще не обрабатывается. Поэтому я и говорил посмотреть содержимое $_FILES после заливки.

http://php.su/phphttp/?uerrcodes

karbofos ()
Ответ на: комментарий от karbofos

сейчас убрал нафиг строку

echo '<input type=«hidden» name=«MAX_FILE_SIZE» value=«30000»>';

файл загрузился, но, если я пишу if ($_FILES['uploadfile']['size'] == 100;) на месте той строки, страница не грузится..

phan13 ()
Ответ на: комментарий от phan13

> но, если я пишу if ($_FILES['uploadfile']['size'] == 100;) на месте той строки

Ёпт. Ты похоже даже сам не понимаешь что за код пишешь. Я принцип работы объясняю, а не что конкретно писать.

karbofos ()
Ответ на: комментарий от phan13

ВНЕЗАПНО

>сейчас сделал через MAX_FILE_SIZE

MAX_FILE_SIZE на клиенте не освобождает от ответст^Wнеобходимости проверки на сервере.

А вообще или стащи пример из комментариев на пхп.нет, или посмотри на какой-либо открытый код. А то тут лютый пушной зверек.

KDE41user ()

Я понимаю, только начинаешь изучать php, но я тебе сразу говорю: в таком стиле, как пишешь ты, пишут сейчас только новички или школота.

Неправильно, например, смешивать html с php в одной тарелке; почему нет нормальных обработок возможных ошибок, а вместо этого какие-то гнилые собаки тусуются?
Ну и так далее по Фрейду.

blackst0ne ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.