аплоад файлов на сервер

Статус
В этой теме нельзя размещать новые ответы.

alex234

Guest
аплоад файлов на сервер

пишу аплоад файлов на сервер (та вроде и писать-то нечего), однако у меня возникли пробемы:

PHP:
function print_form(){
	print("<form enctype=multipart/form-data action=auth.php?func=content/picture_upload method=post>
	<table border=0><tr><td><p>Имя файла:</p><td><input type=file name=userfile size=30></td></tr>
	<tr><td colspan=2 align=center><input type=submit name=submit value=Отправить></td></tr></table>
	</form>");
	}
function form2($userfile, $userfile_size){
	print("<form action=auth.php?func=content/picture_upload&userfile=$userfile&userfile_size=$userfile_size method=post>
	<table border=0><tr><td><p>альтернативное имя файла:</p><td><input type=text name=userfile_name size=30></td></tr>
	<tr><td colspan=2 align=center><input type=submit name=submit value=Отправить></td></tr></table>
	</form>");
	}


if (isset($submit)):
	// проверим есть ли такой файл...
	$dir=opendir("../images/");
	while (($file = readdir($dir))!==false) { 
		if ($file==$userfile_name): 
			print("<p><b>$file &#151; Файл с таким названием уже есть! Введите другое название этому файлу.</b></p>");
			form2($userfile, $userfile_size);
			exit();
		endif;
	}
	closedir($dir);
	///////////////

if (get_magic_quotes_gpc()) { $userfile=stripslashes($userfile); }
	print ("$userfile<br>");
	print ($userfile_name);
	if(!copy("$userfile", "../images/$userfile_name")){ print("<p><b>Ошибка записи файла!</b></p>"); exit(); }
	print("<p>Вы загрузили файл размером: <b>$userfile_size</b> байт.<br>
	На вашем компьютере файл назывался: <b>$userfile_name</b></p>");
	print("--------------------------------------------------");
endif;
print_form();
код работает некорректно. после ввода альтернативного имени, выводит только форму №1. не могу найти ошибку.
помогите плз.
 

fixxxer

К.О.
Партнер клуба
:eek:

Хинт 1: exit() - это не то, что ты думаешь.
Хинт 2: посмотри примеры по поводу File Uploads в мануале. Там, скажем так, поаккуратнее код.
 

Popoff

popoff.donetsk.ua
Re: аплоад файлов на сервер

<form enctype=multipart/form-data action=auth.php?func=content/picture_upload method=post>
свойства всегда нужно брать в кавычки. ссылки нужно кодировать при помощи [m]urlencode[/m]
формы обычно выносят в отдельный файл и подключают при помощи include.
if (isset($submit)):
// проверим есть ли такой файл...
$dir=opendir("../images/");
while (($file = readdir($dir))!==false) {
if ($file==$userfile_name):
print("<p><b>$file &#151; Файл с таким названием уже есть! Введите другое название этому файлу.</b></p>");
form2($userfile, $userfile_size);
exit();
endif;
}
closedir($dir);
///////////////
[m]is_file[/m]
[m]file_exists[/m]
Старайся избегать вызова функции exit() на глубине вложенности операторных скобок больше 1.
Откажись от альтернативного стиля управляющих структур - это не красиво.
if (get_magic_quotes_gpc()) { $userfile=stripslashes($userfile); }
интересная идея :) надо будет взять себе на вооружение :)

только начальные отступы хорошо бы выставлять правильно везде, а то создается такое впечатление, что весь следующий код выполняется, если это условие истинно.
if(!copy("$userfile", "../images/$userfile_name"))
[f]upload[/f] - когда прочитаешь внимательно, сможешь самостоятельно найти в этой строчке ошибку.
старайся писать скрипты так, что бы в них всегда были три непересекающиеся, следующие строго друг за другом части:
1. проверям все исходные данные на наличие и корректность
2. обрабатываем данные и решаем, что будем показывать пользователю
3. выводим хтмл-страничку
В твоем коде эти три части перемешаны, поэтому разобраться в нем не представляется возможным.
код работает некорректно. после ввода альтернативного имени, выводит только форму №1. не могу найти ошибку.
:D Странно, что он вообще работает :D
 

alex234

Guest
if (file_exists("../images/$userfile")){
print ("<p><b>Файл с таким именем уже есть!</b></p>");
}

не говорит что такой файл есть уже
 

Фанат

oncle terrible
Команда форума
и не может сказать.
ты бы ХОТЬ сделал echo $userfile, если не удосужился прочесть, что в этой переменной находится.

Я так понимаю, в мануал тебя посылать бесполезно?
Не объяснишь ли ты свое нежелание читать его?
 

Popoff

popoff.donetsk.ua
напиши
PHP:
if (file_exists("../images/$userfile")){
print ("<p><b>Файл с таким именем уже есть!</b></p>");
}else echo getcwd()."/../images/$userfile";
что получится?
 

alex234

Guest
извините, был напуган..
косяк по невнимательности, бывают глюки...
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху