Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как передать файл через несколько страниц
 
 автор: alik   (11.05.2006 в 09:28)   письмо автору
 
 

Тут беда такая, нада загрузить файл на странице 1 (при загрузке переход на страницу 2). На странице 2 пользователь вводить дополнительные данные (к примеру соглашается на оплату и переход на страницу 3) и только на 3 странице переданный файл сохранять на сервер.
Я пытался сделать так, но код ошибочный (на ум ничего не приходит).
страница1

<form enctype='multipart/form-data' action='2.php' method=post>
<input type=file name=icon size=30><br>
<input type=submit value='next'>
</form>

страница 2

<form enctype='multipart/form-data' action='3.php' method=post>
<input type=hidden name=file value=<? echo $_FILES['icon']['tmp_name']; ?>>
<input type=submit value='next'>
</form>

страница 3

<?
 
echo $_POST['file'];
?>
p.s. код  неверный (може мне как-то подругому сделать?)

   
 
 автор: Trianon   (11.05.2006 в 10:16)   письмо автору
 
   для: alik   (11.05.2006 в 09:28)
 

Не выйдет. Файл придется сохранять уже на странице 2, поскольку сразу после завершения исполнения скрипта страницы 2 временный файл с данными загруженного будет удален.
Файл придется сохранять, информацию об его размещении тоже сохранять, причем не только для страницы 3 (она ведь может и не быть затребована), но и для планированного по cron сборщика мусора, который будет подбирать такие файлы и удалять их, если процесс до логического завершения не дошел.

   
 
 автор: alik   (11.05.2006 в 10:29)   письмо автору
 
   для: Trianon   (11.05.2006 в 10:16)
 

так все таки... как мне передать файл на страницу 3. А можна его в буфер запихуть? задача такая что файл нужно сохранить на сайте если была загруженна страница 3.

   
 
 автор: alik   (11.05.2006 в 10:31)   письмо автору
 
   для: Trianon   (11.05.2006 в 10:16)
 

как мне правильно поступить? подскажите пожалуйста. желательно с примером.

   
 
 автор: cheops   (11.05.2006 в 10:38)   письмо автору
 
   для: alik   (11.05.2006 в 10:31)
 

Создайте свою временную директорию и сохраняйте файл туда, а в конце уже сохраняйте файл в директорию назначения. Только придётся время от времени чистить директорию от старых файлов.

   
 
 автор: alik   (11.05.2006 в 10:55)   письмо автору
 
   для: cheops   (11.05.2006 в 10:38)
 

хм... плиз подскажите как удалить все файлы в директории :)) ведь unlink удаляет 1 файл

   
 
 автор: mtxd   (11.05.2006 в 11:32)   письмо автору
 
   для: alik   (11.05.2006 в 10:55)
 

Если на линуксе, то добавь в cron строку
30 * * * * user /dir/dir/remove_temp.sh
В свою очередь remove_temp.sh содержит

#!/bin/bash
$time=+1
find /dir/dir/temp_dir/*  -mtime $time -exec rm -rf {} \;

Этот скрипт будет запускаться каждые 30 минут и удалять файлы, которым больше одного дня. Можно вместо -mtime использовать -mmin, тогда $time замени на 60 (удаление файлов, которым больше часа, например).
Под винду не знаю, можно попробовать FireDaemon или что-нибудь из этой оперы.

   
 
 автор: alik   (11.05.2006 в 11:44)   письмо автору
 
   для: mtxd   (11.05.2006 в 11:32)
 

не... Меня интересует при помощи php очистить директорию не зависимо от ОС. как?

   
 
 автор: Trianon   (11.05.2006 в 11:57)   письмо автору
 
   для: alik   (11.05.2006 в 11:44)
 

<?
       
for($res opendir($path); ($name readdir($res)) !== false ;)
         if(
is_file($path.'/'.$name) && это_ненужный_файл($name))
           
unlink($path.'/'.$name);
       
closedir($res);
?>

   
 
 автор: XPraptor   (11.05.2006 в 12:00)   письмо автору
 
   для: alik   (11.05.2006 в 11:44)
 

$dirname=$_SERVER["DOCUMENT_ROOT"] . "/temp/";
if($handle=opendir($dirname)){
while(false !== ($file=readdir($handle))){
if($file != "." && $file != ".."){
unlink($dirname . $file);
}
}
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования