IPB

Здравствуйте, гость ( Вход | Регистрация )

> Правила форума

Все ссылки на сторонние ресурсы, за исключением офсайтов программ, должны оформляться с помошью тега скрытого текста - [hide=1]Ссылка[/hide]

> PHP, Method Not Allowed
viktod
14.10.2004 - 22:24
Сообщение #1


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Сделал простой пример из учебника "upload file".
Положил файлы на сервер. Форма открывается, а при upload получаю:

Method Not Allowed
The requested method POST is not allowed for the URL /~viktod/test/upload.html2.

Ошибка в какой-то мелочи, но я не знаю где.
URL=http://www.viktod.com/~viktod/test/upload.html2
User is offlineProfile Card PM
Go to the top of the page
+
2 Страницы V  1 2 >  
Reply to this topicStart new topic
Ответов(1 - 24)
Sega
15.10.2004 - 02:20
Сообщение #2



Full Member
***
Группа: Пoльзователь
Сообщений: 73
Регистрация: 21.09.2003
Из: Находка

Пользователь №: 16143




Цитата(viktod @ 14.10.2004 - 23:24)
Сделал простой пример из учебника "upload file".
Положил файлы на сервер. Форма открывается, а при upload получаю:

Method Not Allowed
The requested method POST is not allowed for the URL /~viktod/test/upload.html2.

Ошибка в какой-то мелочи, но я не знаю где.
URL=http://www.viktod.com/~viktod/test/upload.html2

у тебя в скрипте
form method="post" enctype="multipart/form-data"
используется метод пост а на сервере судя по всему стоит запрет на этот метод...и почему у тебя файл имеет расширение *.html2???
User is offlineProfile Card PM
Go to the top of the page
+
viktod
15.10.2004 - 02:54
Сообщение #3


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




html2 это дубль, не в нем я думаю дело.
А где и как мне снять этот запрет?
Я имею права рут.
User is offlineProfile Card PM
Go to the top of the page
+
Keeper
15.10.2004 - 11:20
Сообщение #4


No Avatar
Full Member
***
Группа: Full member
Сообщений: 149
Регистрация: 7.08.2004

Пользователь №: 56140




Посмотри в php.ini и в httpd.conf
Скорее всего проблема в настройках Apache скрывается гдето... я так думаю


--------------------
Шуруп забитый молотком держится лучше чем гвоздь закрученный отверткой!
User is offlineProfile Card PM
Go to the top of the page
+
SiMM
15.10.2004 - 17:47
Сообщение #5


No Avatar
Full Member
***
Группа: Full member
Сообщений: 94
Регистрация: 13.01.2004

Пользователь №: 29292




Цитата(viktod @ 14.10.2004 - 23:24)
Сделал простой пример из учебника "upload file".

Этот учебник можешь выбросить.
Цитата
Ошибка в какой-то мелочи, но я не знаю где.
Для начала - ошибка в том, что вместо того, чтобы сходить в мануал (http://www.php.net/manual/ru/features.file-upload) ты полез на форум.
PS: а вообще, что-то мне подсказывает, что файлы с расширением htm2 у тебя не обрабатываются PHP.

Нарушение правил. Флуд. Устное замечание.
Для того и существует этот Форум, чтобы задавать на нем вопросы, пусть для кого-то и элементарные.
И отвечать прошу по существу, а не упрекая и критикуя спрашивающего, а основную информацию отправляя в "ps"
Ann
User is offlineProfile Card PM
Go to the top of the page
+
Enoh
16.10.2004 - 17:15
Сообщение #6


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 16
Регистрация: 2.07.2003

Пользователь №: 12577




Простой пример:
Первый файл - upload.html, представляет собой форму для загрузки файлов
<html>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"/>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>
<input type="submit" value="Upload"/>
</form>
</html>
Второй файл - upload.php, представляет собой скрипт для обработки загруженного файла
<?php
$file_name = $_FILES['filename']['name']; // Исходное имя файла
$file_tmp_name = $_FILES['filename']['tmp_name']; // Имя файла на web-сервере
$file_size = $_FILES['filename']['size']; // размер файла в байтах
$file_type = $_FILES['filename']['type']; // MIME-тип файла, например: image/gif, text/plain
$file_error = $_FILES['filename']['error']; // код ошибки

if ($file_error != 0)
{
echo 'Ошибка: ';
switch($file_error)
{
case 1: echo 'Размер загруженного файла превышает максимальное значение, заданное в файле php.ini дерективой upload_max_filesize'; break;
case 2: echo 'Размер загруженного файла превышает максимальное значение, заданное в форме элементом MAX_FILE_SIZE (приблизительно 1Мб)'; break;
case 3: echo 'Загружена только часть файла'; break;
case 4: echo 'Файл не загружен'; break;
}
exit;
}
if (copy($file_tmp_name, '/uploads/'.$file_name))
{
echo 'Файл успешно загружен';
}
else
{
echo 'Файл не загружен';
exit;
}
?> :)

Сообщение было отредактировано Enoh: 16.10.2004 - 17:20
User is offlineProfile Card PM
Go to the top of the page
+
SiMM
16.10.2004 - 21:21
Сообщение #7


No Avatar
Full Member
***
Группа: Full member
Сообщений: 94
Регистрация: 13.01.2004

Пользователь №: 29292




Цитата(SiMM @ 15.10.2004 - 18:47)
Для того и существует этот Форум, чтобы задавать на нем вопросы, пусть для кого-то и элементарные.

Ни в коем случае не оправдываюсь, но имхо гораздо правильнее научить пользоваться мануалом, где всё прекрасно разжёвано и в большинстве случаев можно найти ответ на любой вопрос благодаря наличию примеров и комментариев как самих разработчиков, так и пользователей, чем продемонстрировать готовый код под конкретную задачу.
2Ann: прошу рассматривать это как пищу для размышлений, предназначенную viktod'у, а не как попытку обсуждения политики модерирования - с замечанием я полностью согласен, за исключением вышенаписанного.
User is offlineProfile Card PM
Go to the top of the page
+
viktod
18.10.2004 - 22:42
Сообщение #8


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Manual or books - не имеет значения чем пользоваться.
Книга разве не руководствовалась manual?
Вопрос во мне - пропущена какая-то малость, в результате которой код не работает. До сих пор! Перебрал 10 примеров - ни один не работает. Ошибка в книге? Нет, у меня. Вот поэтому я и спрашиваю и никак не могу получить ответ.
User is offlineProfile Card PM
Go to the top of the page
+
SiMM
18.10.2004 - 23:15
Сообщение #9


No Avatar
Full Member
***
Группа: Full member
Сообщений: 94
Регистрация: 13.01.2004

Пользователь №: 29292




Цитата(viktod @ 18.10.2004 - 23:42)
Manual or books - не имеет значения чем пользоваться.

В том то и дело, что имеет - книгу может написать любой, при этом совершенно не отдавая себе отчёта в том, что он пишет, допуская вольности и ошибки в трактовке мануала и подаче материала. Мануал же, в отличии от книг, написан непосредственно разработчиками (кто как не они наиболее близки к языку?) и помимо прочего содержит описание возможных проблем и путей их решения как от самих разработчиков, так и от пользователей, реально с ними столкнувшимися
Цитата
Книга разве не руководствовалась manual?
Желанное !== действительное, и потом, в онлайн-мане всегда содержится наиболее актуальная на данный момент информация. Подыдожив - когда какая-то функция ведёт себя неожиданным образом - в первую очередь - в ман на URL=http://php.net/имя_функции + URL=http://phpfaq.ru/debug.
Цитата
Вопрос во мне - пропущена какая-то малость, в результате которой код не работает. До сих пор! Перебрал 10 примеров - ни один не работает.
Повторяю ещё раз - почему ты решил, что файлы с расширением htm2 у тебя должны обрабатываться PHP? Почему ты вообще решил, что POST в html файл, который не обрабатывается PHP, должен сработать (в тэге form у тебя не указан action, следовательно, POST будет происходить по тому же адресу, который отображён в строке URL при вызове скрипта)?
Цитата
Ошибка в книге? Нет, у меня. Вот поэтому я и спрашиваю и никак не могу получить ответ.
Да, у тебя, а ответ ты уже получил. Привожу код, почти один к одному слизанный из мануала
Код
<? // upload.php
 ini_set('display_errors',1);
 error_reporting(E_ALL);
 if (!isset($_FILES) || !count($_FILES)) echo <<<HTML
<form enctype="multipart/form-data" action="{$_SERVER['REQUEST_URI']}" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
HTML;
 else{

   $uploaddir = dirname($_SERVER['SCRIPT_FILENAME']).'/';
   $uploadfile = $uploaddir . $_FILES['userfile']['name'];

   print "<pre>";
   if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
      echo "File is valid, and was successfully uploaded. ";
      echo "Here's some more debugging info:\n";
   }
   else echo "Possible file upload attack!  Here's some debugging info:\n";
   print_r($_FILES);
   print "</pre>";
 }
?>
Если у тебя PHP обрабатывает файлы с расширением PHP - то он будет работать, в противном случае - поменяй расширение файла на нужное.
User is offlineProfile Card PM
Go to the top of the page
+
viktod
19.10.2004 - 00:55
Сообщение #10


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Вы правы, спасибо, буду разбираться.
User is offlineProfile Card PM
Go to the top of the page
+
viktod
20.10.2004 - 06:58
Сообщение #11


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Я извиняьсь за долгое непонимание, но ничего не работает. И ман не помагает.
Ведь пример и код простые, так почему же не работает? Пустое окно - ни сообщений об ошибках или об успешном upload. В базе данных пусто - только созданная для них таблица.

В начале вручную создал:
CREATE TABLE upload (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
type VARCHAR(30) NOT NULL,
size INT NOT NULL,
content BLOB NOT NULL,
PRIMARY KEY(id)
);
Проверил - есть.

Опубликовал:

URL=http://www.viktod.com/~viktod/test/form.html (вы можете посмотреть здесь)
<html>
<head>
<title>Untitled</title>
</head>
<body>
<form enctype="multipart/form-data" action="http://www.viktod.com/~viktod/test/upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Send file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
</body>
</html>

URL=http://www.viktod.com/~viktod/test/upload.php
<?
if(isset($_POST['upload']))
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}


include 'library/config.php';
include 'library/opendb.php';

$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

mysql_query($query) or die('Error, query failed');
include 'library/closedb.php';

echo "<br>File $fileName uploaded<br>";
}
?>

сonfig.php (Вручную захожу по этим данным.)

<?php
$dbhost = 'localhost';
$dbuser = '111';
$dbpass = '111';
$dbname = 'test';
?>
opendb.php :
<?php
// This is an example opendb.php
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);
?>
closedb.php:
<?php
mysql_close($conn);
?>

Права 777 везде.
Это в 2-х файлах. Делал все это и в одном файле (auction =' '). Тоже не работает.
User is offlineProfile Card PM
Go to the top of the page
+
SiMM
20.10.2004 - 08:25
Сообщение #12


No Avatar
Full Member
***
Группа: Full member
Сообщений: 94
Регистрация: 13.01.2004

Пользователь №: 29292




Молодой человек, хватит уже паниковать - идите и читайте http://phpfaq.ru/debug, прочтите его внимательнейшим образом и отлаживайте скрипт - удалённо за вас эти проблемы никто не решит, залейте наконец мой upload.php (я добавил в него то, что рекомендуется для отладки в FAQ). И ещё - научитесь разделять задачи - прежде чем лезть разбираться с БД, убедитесь, что у вас работает простой уплоад, без всяких инклудов и тому подобного излишества, а уже потом идите дальше и разбирайтесь в чём дело.
User is offlineProfile Card PM
Go to the top of the page
+
SiMM
20.10.2004 - 08:54
Сообщение #13


No Avatar
Full Member
***
Группа: Full member
Сообщений: 94
Регистрация: 13.01.2004

Пользователь №: 29292




Цитата(viktod @ 20.10.2004 - 07:58)
<? // upload.php
if  (isset($_POST['upload'])){
...
}

И чего вы, интересно, ожидали от этого кода? Скажу вам по секрету - весь этот кусок вообще не несёт смысловой нагрузки, поскольку при описанных условиях никогда выполнен не будет.
Цитата
$content = addslashes($content);
if(!get_magic_quotes_gpc()) $fileName = addslashes($fileName);
Подобные действия надо писать там, где нужно, а не разбрасывая по коду где попало, поскольку это грозит путаницей в дальнейшем (т.е. слеши в данных от пользователя - убираются в самом начале, добавляются - непосредственно при вводе в базу, это позовляет на протяжении всего кода не думать о том, в каких переменных у тебя есть слэши, а в каких нет). Для работы с MySQL существует http://php.net/mysql_escape_string, много полезного на тему слэшей можно почерпнуть из FAQ http://phpfaq.ru/slashes
User is offlineProfile Card PM
Go to the top of the page
+
viktod
20.10.2004 - 21:47
Сообщение #14


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Спасибо за ваш код - очень информативен по ошибкам. Но к сожалению мои эксперименты не привели опять к успеху. Посмотрите пожалуйста эти файлы:

Около формы:
Notice: Undefined index: www.viktod.com/~viktod/bag/upload_forum.php in /usr/home/viktod/www/bag/upload_forum.php on line 5
менял на www.viktod.com/~viktod/bag/
результат тот же.

При upload получаю:
Notice: Undefined index: upload_forum.php in /usr/home/viktod/www/bag/upload_forum.php on line 13


Warning: Unable to create '/11.txt': Permission denied in /usr/home/viktod/www/bag/upload_forum.php on line 17

Warning: Unable to move '/var/tmp/phplyUvZq' to '/11.txt' in /usr/home/viktod/www/bag/upload_forum.php on line 17
Possible file upload attack! Here's some debugging info:
Array
(
[userfile] => Array
(
[name] => 11.txt
[type] => text/plain
[tmp_name] => /var/tmp/phplyUvZq
[error] => 0
[size] => 3
)

)

Права везде 777.
Использовал этот код:


<? // upload.php
ini_set('display_errors',1);
error_reporting(E_ALL);
if (!isset($_FILES) || !count($_FILES)) echo <<<HTML
<form enctype="multipart/form-data" action="{$_SERVER['www.viktod.com/~viktod/bag/upload_forum.php']}" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
HTML;
else{

$uploaddir = dirname($_SERVER['upload_forum.php']).'/';
$uploadfile = $uploaddir . $_FILES['userfile']['name'];

print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded. ";
echo "Here's some more debugging info:\n";
}
else echo "Possible file upload attack! Here's some debugging info:\n";
print_r($_FILES);
print "</pre>";
}
?>
User is offlineProfile Card PM
Go to the top of the page
+
SiMM
21.10.2004 - 10:32
Сообщение #15


No Avatar
Full Member
***
Группа: Full member
Сообщений: 94
Регистрация: 13.01.2004

Пользователь №: 29292




Вам же PHP сказал, в чём дело. Возьмите англо-русский переводчик, переведите и осмыслите.
Цитата(viktod @ 20.10.2004 - 22:47)
<form enctype="multipart/form-data" action="{$_SERVER['www.viktod.com/~viktod/bag/upload_forum.php']}" method="post">
...
$uploaddir = dirname($_SERVER['upload_forum.php']).'/';
Что-то я не вижу в своём коде подобного. Фразу "залейте наконец мой upload.php" нужно понимать буквально и не писать в коде отсебятину, тем более, если не понимаешь, что этот код выполняет. И вообще вам бы не помешало для начала хотя бы книжку какую по PHP почитать, для понимания того, что творите.

Сообщение было отредактировано SiMM: 21.10.2004 - 10:32
User is offlineProfile Card PM
Go to the top of the page
+
viktod
21.10.2004 - 18:56
Сообщение #16


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Зря ты мне парень грубишь. Я 6 лет уже живу в англоязычной стране. И хотел тебя уже почти пригласить платным консультантом на готовящийся проект
http:///
Нарушение правил п. III.7  "Сообщения личного характера, частные дискуссии - малополезные или бесполезные для других участников - переносить в режим "приват-общения" ( ПМ), чата или использовать электронную почту"
Устное замечание. Ссылка затерта.
Ann

Сообщение было отредактировано Ann: 21.10.2004 - 19:33
User is offlineProfile Card PM
Go to the top of the page
+
Enoh
23.10.2004 - 00:23
Сообщение #17


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 16
Регистрация: 2.07.2003

Пользователь №: 12577




viktod, Вы сами-то понимаете, чего хотите. Используйте функции или классы для того, чтобы разбить исходную задачу на несколько. Не стоит решать столь разные задачи, как работа с базой данных и загрузка файлов на сервер, в одном коде. Не пытайтесь написать работающую программу копируя отрывки кода из разных книг. ;)
User is offlineProfile Card PM
Go to the top of the page
+
viktod
23.10.2004 - 00:46
Сообщение #18


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Я потому и обратился на форум, чтобы понимать.
Код скопирован с одной книги.
Насчет разделения задач вы правы, согласен.
Последний код, который я послал сюда, был подсказан хорошим знатоком. Но я не знаю, что же нужно вставить вместо:
1. 'REQUEST_URI' в
<form enctype="multipart/form-data" action="{$_SERVER['REQUEST_URI']}"
2. 'SCRIPT_FILENAME' в
$uploaddir = dirname($_SERVER['SCRIPT_FILENAME']).'/';

Если вставляю в п 1. куда будут записываться данные, а во 2 - путь к этому скрипту - не работает. Пробовал разные варианты - без результата.
(скрипт лежит 'www.viktod.com/~viktod/bag/upload_forum.php')

О чем говорит этот лог? Как исправить эти ошибки?
При upload получаю:
Notice: Undefined index: upload_forum.php in /usr/home/viktod/www/bag/upload_forum.php on line 13


Warning: Unable to create '/11.txt': Permission denied in /usr/home/viktod/www/bag/upload_forum.php on line 17

Warning: Unable to move '/var/tmp/phplyUvZq' to '/11.txt' in /usr/home/viktod/www/bag/upload_forum.php on line 17
Possible file upload attack! Here's some debugging info:
Array
(
[userfile] => Array
(
[name] => 11.txt
[type] => text/plain
[tmp_name] => /var/tmp/phplyUvZq
[error] => 0
[size] => 3
)

)

Спасибо.
User is offlineProfile Card PM
Go to the top of the page
+
Enoh
23.10.2004 - 01:19
Сообщение #19


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 16
Регистрация: 2.07.2003

Пользователь №: 12577




Для того, чтобы лучше понять смысл серверных переменных, попробуй запустить этот скрипт:
<?php
foreach($_SERVER as $v1=>$v2)
{
echo '$_SERVER[\''.$v1.'\'] = '.$v2.'<br/>';
}
?>
User is offlineProfile Card PM
Go to the top of the page
+
Enoh
23.10.2004 - 01:30
Сообщение #20


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 16
Регистрация: 2.07.2003

Пользователь №: 12577




Если это, возможно, не мог бы ты привести целиком исходный код и объяснить, что он должен делать по твоему мнению.
User is offlineProfile Card PM
Go to the top of the page
+
viktod
23.10.2004 - 05:15
Сообщение #21


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Код маленький, а информации выдал много, спасибо. Там же я и нашел ответ на свои вопросы. Код вроде работает, сообщение выдает, что "File is valid, and was successfully uploaded."
Но:
1. файла нет, куда код его записал:
[tmp_name] => C:\WINDOWS\TEMP\php139.tmp
(опция показывать все файлы включена).
2. Два messages получаю во время выполнения кода. О чем это говорит?
Notice: Undefined index: /bag/upload_forum2.php in c:\web\bag\upload_forum2.php on line 6
Notice: Undefined index: c:/web/bag/upload_forum2.php in c:\web\bag\upload_forum2.php on line 14

Использовал этот код:
<? // upload.php
ini_set('display_errors',1);
error_reporting(E_ALL);
if (!isset($_FILES) || !count($_FILES)) echo <<<HTML
<form enctype="multipart/form-data" action="{$_SERVER['/bag/upload_forum2.php']}" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
HTML;
else{

$uploaddir = dirname($_SERVER['c:/web/bag/upload_forum2.php']).'/';
$uploadfile = $uploaddir . $_FILES['userfile']['name'];

print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded. ";
echo "Here's some more debugging info:\n";
}
else echo "Possible file upload attack! Here's some debugging info:\n";
print_r($_FILES);
print "</pre>";
}
?>
User is offlineProfile Card PM
Go to the top of the page
+
SiMM
23.10.2004 - 08:53
Сообщение #22


No Avatar
Full Member
***
Группа: Full member
Сообщений: 94
Регистрация: 13.01.2004

Пользователь №: 29292




Цитата(viktod @ 23.10.2004 - 01:46)
Но я не знаю, что же нужно вставить вместо:
1. 'REQUEST_URI' в
<form enctype="multipart/form-data" action="{$_SERVER['REQUEST_URI']}"
2. 'SCRIPT_FILENAME'  в
$uploaddir = dirname($_SERVER['SCRIPT_FILENAME']).'/';
Ничего не нужно туда вставлять - нужно честно слизать код, который я вам привёл, и НИЧЕГО НЕ МЕНЯЯ положить его на хостинг. Запустить и убедиться, что код у вас работает. Об этом, между прочим, я вам сразу сказал - а вы восприняли это в штыки и сочли личным оскорблением. Очень проблематично помочь человеку, который не выполняет чётко данных инструкций - сразу возникает желание забить на него. Если вы не знаете, что такое $_SERVER['REQUEST_URI'] или $_SERVER['SRCIPT_NAME'] - об этом надо было просто спросить, а код вначале попробовать, ничего не меняя в нём. Крайне рекомендую при возникновении проблем почаще лазить в мануал - в вашем случае читать http://php.net/manual/ru/language.variables.predefined (предопределённые переменные) и http://php.net/manual/ru/reserved.variables#reserved.variables.server (Server variables: $_SERVER)
User is offlineProfile Card PM
Go to the top of the page
+
Enoh
23.10.2004 - 12:46
Сообщение #23


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 16
Регистрация: 2.07.2003

Пользователь №: 12577




viktod
После некоторой доработке твой код выглядит так
<?php
header('Content-type: text/html; charset=Windows-1251');
ini_set('display_errors',1);
error_reporting(E_ALL);

function show_form($error = '')
{
if ($error)
{
print '<font color="red">Ошибка: </font>'.$error;
}

print<<< _HTML_
<form enctype="multipart/form-data" method="post" action="$_SERVER[PHP_SELF]">
Send this file: <input name="userfile" type="file"/>
<input type="hidden" name="MAX_FILE_SIZE" value="30000"/>
<input type="hidden" name="fupload"/>
<input type="submit" value="Send File"/>
</form>
_HTML_;
}

function validate_form($file_error) {
$error = '';
if (($file_error == UPLOAD_ERR_INI_SIZE)||($file_error == UPLOAD_ERR_FORM_SIZE))
{
$error = 'загружаемый файл имеет слишком большой размер.';
}
elseif ($file_error == UPLOAD_ERR_PARTIAL)
{
$error = 'загрузка файла была прервана.';
}
elseif ($file_error == UPLOAD_ERR_NO_FILE)
{
$error = 'файл не загружен.';
}
return $error;
}

if (isset($_POST['fupload']))
{
$file_name = $_FILES['userfile']['name']; // Исходное имя файла
$file_tmp_name = $_FILES['userfile']['tmp_name']; // Имя файла на web-сервере
$file_size = $_FILES['userfile']['size']; // размер файла в байтах
$file_type = $_FILES['userfile']['type']; // MIME-тип файла, например: image/gif, text/plain
$file_error = $_FILES['userfile']['error']; // код ошибки
$upload_dir = $_SERVER['DOCUMENT_ROOT'].'/uploads/'; // Путь к папке на сервере, куда необходимо переместить загруженный файл

if ($form_error = validate_form($file_error)) {
show_form($form_error);
}
else
{
if (@move_uploaded_file($file_tmp_name, $upload_dir.$file_name))
{
print 'Файл "'.$file_name.'" успешно загружен в директорию '.$upload_dir;
}
else
{
print 'Файл не возможно сохранить в директории '.$upload_dir;
}
}
}
else
{
show_form();
}
?>
Всё проверено, работает 100% ;)

Сообщение было отредактировано Enoh: 23.10.2004 - 16:23
User is offlineProfile Card PM
Go to the top of the page
+
viktod
23.10.2004 - 20:25
Сообщение #24


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Спасибо ребята. С вашей помощью я сделал большой шаг вперед.
User is offlineProfile Card PM
Go to the top of the page
+
viktod
23.10.2004 - 23:41
Сообщение #25


No Avatar
Novice
*
Группа: Пoльзователь
Сообщений: 22
Регистрация: 12.09.2004

Пользователь №: 60020




Что-то у меня опять сбой.
На моем комп. ваш код работает прекрасно.
Перенес на сервер, сделал 777 (для страховки) и не работает:

Notice: Use of undefined constant UPLOAD_ERR_INI_SIZE - assumed 'UPLOAD_ERR_INI_SIZE' in /usr/home/viktod/www/bag/upload_forum4.php on line 25
Ошибка: загружаемый файл имеет слишком большой размер.

Загружаю тот же самый файл, что и на домашней машине - 1кб. Да и др. не хочет загружать. Увеличивал в коде разрешаемый размер - без результата.
Удалял из кода эту проверку - выскакивает следующая; UPLOAD_ERR_PARTIAL.
Я понимаю, что чудес не бывает, но в чем же дело?
Спасибо.
User is offlineProfile Card PM
Go to the top of the page
+
Реклама

2 Страницы V  1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



- Текстовая версия Сейчас: 28.03.2024 - 11:19
]]> ]]>
]]> Яндекс.Метрика ]]>