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

Форум PHP

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

 

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

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

тема: редактировать загруженные файлы
 
 автор: cccp   (17.01.2006 в 00:16)   письмо автору
 
 

Добрый день!
Помогите пожалуста.
Я хотел бы кое что дабавить здесь (в этом скрипте).
Но без вашей помощи не обойдусь.
Как я могу добавить в этой страничке что бы можно было редактировать загруженные файлы.
Типа: поменять, переписать содержимое Описаний Файлов
Или удалить Файл заодно с его содержанием.

Зарание вам благодарен.



<?php

$dossier_cible 
"../discography/";

if(isset(
$_FILES['f'])&&isset($_POST['d']))
{
 if(
file_exists("$dossier_cible/".basename($_FILES['f']['name']))) die("<html><body><center><h1>Файл с таким же названием уже существует!</h1><br><a href=\"#\" onclick=\"history.go(-1);return(false)\">Назад</a></center></body></html>");

 if(!
move_uploaded_file($_FILES['f']['tmp_name'], "$dossier_cible/".basename(str_replace(" ""_"$_FILES['f']['name'])))) die("<center>Произошла ошибка ! Проверте разрешение на $dossier_cible !<br><a href=\"#\" onclick=\"history.go(-1);return(false)\">Retour</a></center>");
 
$d substr($_POST['d'],0,60); $fp fopen("$dossier_cible/d/".basename(str_replace(" ""_",$_FILES['f']['name'])),"w");
 
fwrite($fpstripslashes(htmlentities($d)));
 
fclose($fp);
}

?>
<?
function redimage($img_src,$dst_w,$dst_h) {
   
// Lit les dimensions de l'image
   
$size GetImageSize($img_src);  
   
$src_w $size[0]; $src_h $size[1];
   
// Teste les dimensions tenant dans la zone
   
$test_h round(($dst_w $src_w) * $src_h);
   
$test_w round(($dst_h $src_h) * $src_w);
   
// Si Height final non pr&#233;cis&#233; (0)
   
if(!$dst_h$dst_h $test_h;
   
// Sinon si Width final non pr&#233;cis&#233; (0)
   
elseif(!$dst_w$dst_w $test_w;
   
// Sinon teste quel redimensionnement tient dans la zone
   
elseif($test_h>$dst_h$dst_w $test_w;
   else 
$dst_h $test_h;

   
// Affiche les dimensions optimales
   
echo "WIDTH=".$dst_w." HEIGHT=".$dst_h;
}
?>
<html>

<head>
 <title>Отправка Файла</title>
 <script type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
 </script>
</head>

<body>

<h1>Отправка Файла </h1>

<h2>Files found in <?=$dossier_cible?></h2><br />
<table align="center" width="80%" cellspacing="0" cellpadding="2" bgcolor="#EFEFEF">
<tr style="background:#7F7F7F;"><td width="35%"> &nbsp; Files</td><td> &nbsp; Description</td></tr>
<?php

$d 
opendir($dossier_cible); readdir($d); readdir($d);

while(
$f readdir($d))
{
 if(
$f == ".htaccess" || $f=="d") continue;

 
$desc implode('',file("$dossier_cible/d/$f"));
?>
<tr><td>
<?php 
$size 
GetImageSize($dossier_cible.$f);    
$w $size[0]; $h $size[1]; 
?> 
<a href="#"><img src="<?=$dossier_cible.htmlentities($f)?>" border="0" onClick="MM_openBrWindow('<?  echo $dossier_cible.$f ?>','big','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=<?  echo $w ?>,height=<?  echo $h ?>')" <?redimage("$dossier_cible$f",100,100)?>></a></td>
<td><?=nl2br($desc)?></td></tr>
<? ?>
</table>
<br /><hr /><br />
<h2>Send new file:</h2>

<form method="post" action="upload_discography.php" enctype="multipart/form-data">
<i>Send file:</i><br />
 <input type="file" name="f" size="60" />
<br /><br /> 
<i>Description:</i><br />
 <textarea name="d" cols="40" rows="10"></textarea>
<br /><br />
 <input type="reset" name="annuler" value="Cancel">
 <input type="submit" value="Send !" onClick="value='Whait...'"/>

</form>
</body>

</html>

   
 
 автор: WebTech   (17.01.2006 в 15:21)   письмо автору
 
   для: cccp   (17.01.2006 в 00:16)
 

Понятно.
Сейчас сделаем что-нибудь.

   
 
 автор: WebTech   (17.01.2006 в 15:51)   письмо автору
 
   для: WebTech   (17.01.2006 в 15:21)
 

Ого! Придется конкретно доделать скрипт :-) Счас сделаем, если подождешь.

   
 
 автор: cccp   (17.01.2006 в 16:33)   письмо автору
 
   для: WebTech   (17.01.2006 в 15:51)
 

КОНЕЧНО!
Я вам так благодарен...
Так как сам читаю книжку одну, но пока всё сам не понимаю.
Хочу купить какую нибудь хорошую книгу с примерами, но они дорого стаят...Так что всё откладываю и откладываю.

WebTech,
Только пожалуста напиши(те) коментарии к функциям , что бы я понял разобрался в функциях на будуюшие, ок?!

Ужастно тебе-вам БЛАГОДАРЕН!

Жду с нетерпением!

   
 
 автор: WebTech   (17.01.2006 в 19:32)   письмо автору
6.4 Кб
 
   для: cccp   (17.01.2006 в 16:33)
 

Вот. Смотри в аттаче.

   
 
 автор: cccp   (17.01.2006 в 22:22)   письмо автору
 
   для: WebTech   (17.01.2006 в 19:32)
 

Огромное спасибо!
Только не мог бы ты записать в другом кодирование.
Так как я все русские буквы в таком виде вижу :

?;:,&#249;р;,с;_&#233;_&#231;^&#168;

Так же в твоём текстовом файле.
Плиз!
Если конечно же ты не стёр уже.


PS:
и ещё...
Я проверил скрипт. Всё работает, огромное спасибо ещё раз!
Только вот хотел бы узнать можно ли что нибудь сделать со страничкой edit_form.php

Так как там когда смотриш содержымое файла то высвечиваются символы <br />

1-Warning<br />
2-provertka


А потом если всё не стирать, то на главной странице они остаются как текст.
Я понятно объястнил?

Есть ли какой нибудь выход?

   
 
 автор: WebTech   (18.01.2006 в 16:46)   письмо автору
 
   для: cccp   (17.01.2006 в 22:22)
 

Почему у тебя русскими буквами не печатается не знаю. Возможно несоответствие кодировок редакторов, в которых создаем/смотрим или еще что... Честно говоря разбираться неохота. Поэтому отправляю тебе все в формете rtf, потом все в php переделаешь.
Насчет
1-Warning<br />
2-provertka
там надо убрать функцию nl2br(), поскольку вывод идет в textarea, a не в браузер напрямую. Мой недосмотр :-)
В общем, смотри, если что пиши.

   
 
 автор: cccp   (19.01.2006 в 00:00)   письмо автору
 
   для: WebTech   (18.01.2006 в 16:46)
 

Так ОК!
Огромное СПАСИБО!!!

Я завтра или на днях посмотрю и разберусь во всём.
Спасибо за все описания в скрипте.

   
 
 автор: cccp   (21.01.2006 в 01:39)   письмо автору
 
   для: cccp   (19.01.2006 в 00:00)
 

Привет!
Это опять я.
А можно ли добавить в скрипт что бы разрешение загрузки файлов была только для фото форматов, типа : .gif, .jpg, и т.д.?

   
 
 автор: WebTech   (21.01.2006 в 10:03)   письмо автору
 
   для: cccp   (21.01.2006 в 01:39)
 

В файле upload_discography.php надо добавить проверку на тип переданного от клиента файла до все остальных проверок, т.е. до проверки на загруженность файла и на существование файла. Добавь строки

  $filetype = $_FILES['f']['type']; // получаем тип файла
  if ($filetype != 'image/gif' && $filetype != 'image/jpeg' && $filetype != 'image/pjpeg')
    {
    die ("<center>
        Разрешено загружать только файлы типов JPEG или GIF!<br>
        <a href=\"#\" onclick=\"history.go(-1);return(false)\">Retour</a>
        </center>");
    }

Проверка на image/jpeg или image/pjpeg нужна потому, что разные клиенты немного по разному передают MIME-тип файла. Например, Internet Explorer передает MIME-тип для файлов JPEG как "image/pjpeg", а Опера передает как "image/jpeg".

   
 
 автор: cccp   (21.01.2006 в 11:50)   письмо автору
 
   для: WebTech   (21.01.2006 в 10:03)
 

Спасибо!
Только теперь какая-то ошибка проишодит в каждый раз.
Я теперь не могу просто выйти на эту страничку.
У меня сразу пишет:
"Разрешено загружать только файлы типов JPEG или GIF"

   
 
 автор: WebTech   (21.01.2006 в 13:51)   письмо автору
 
   для: cccp   (21.01.2006 в 11:50)
 

У меня все работает. А ты куда поставил эту проверку? Она должна быть внутри секции

if(isset($_FILES['f']) && isset($_POST['d'])) 
  { 
  ...
  }

А может быть ты загружаешь какие-нибудь еще файлы? Не JPEG и не GIF?

   
 
 автор: cccp   (21.01.2006 в 14:53)   письмо автору
 
   для: WebTech   (21.01.2006 в 13:51)
 

Да, ты был прав, я просто строку немножко не туда поставил.
Теперь работает, ОК !
ОГРОМНОЕ СПАСИБО, ещё раз!

Слушай, я тут сам пробовал поставить эту функцию, но не получилось.
Хотел бы узнать возможно ли вообше добавить это за место простого popup по размеру фото файла:


<script language="JavaScript"><!--
nn4 = (document.layers)? true : false;
ie4 = (document.all)? true : false;
nn6 = (document.getElementById && !ie4)? true : false;

function ow(cardName, winW, winH, winTitle) {
if (nn4 || ie4 || nn6) {
posX = Math.round((screen.width - winW) / 2);
posY = Math.round((screen.height - winH) / 2);
posCode = (nn4 || nn6)? 'screenX='+posX+',screenY='+posY : 'left='+posX+',top='+posY;
} else { posCode = ''; }
cardWindow = window.open('','ttt','menubar=no,toolbar=no,scrollbars=no,status=no,width='+winW+',height='+winH+','+posCode);
cardWindow.document.open();
cardWindow.document.write('<html><head><title>'+winTitle+'<\/title><\/head>');
cardWindow.document.write('<body marginwidth=0 marginheight=0 topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0>');
cardWindow.document.write(cardName+'><\/body><\/html>');
cardWindow.document.close();
cardWindow.focus();
}

function popupWin(cardName, winW, winH, winTitle) {
if (nn4 || ie4 || nn6) {
posX = Math.round((screen.width - winW) / 2);
posY = Math.round((screen.height - winH) / 2);
posCode = (nn4 || nn6)? 'screenX='+posX+',screenY='+posY : 'left='+posX+',top='+posY;
} else { posCode = ''; }
cardWindow = window.open('','_blank','menubar=no,toolbar=no,scrollbars=no,status=no,width='+winW+',height='+winH+','+posCode);
cardWindow.document.open();
cardWindow.document.write('<html><head><title>'+winTitle+'<\/title><\/head>');
cardWindow.document.write('<body marginwidth=0 marginheight=0 topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0>');
cardWindow.document.write(cardName+'><\/body><\/html>');
cardWindow.document.close();
cardWindow.focus();
}
// -->
</script>




onClick="popupWin('<img src=<?php echo $dossier_cible.$f ?>'); return false;">

   
 
 автор: WebTech   (21.01.2006 в 16:44)   письмо автору
 
   для: cccp   (21.01.2006 в 14:53)
 

Ого! Эти функции принципиально нового ничего не делают, кроме того, что открывают popup ровно посерединке открытой страницы :-)
Если хочешь, можно использовать. Тебе нужна будет только одна функция popupWin(), и к тому же ее надо немного доработать. Так:

function popupWin(cardName, winW, winH, winTitle) 

nn4 = (document.layers)? true : false; 
ie4 = (document.all)? true : false; 
nn6 = (document.getElementById && !ie4)? true : false; 

if (nn4 || ie4 || nn6) { 
posX = Math.round((screen.width - winW) / 2); 
posY = Math.round((screen.height - winH) / 2); 
posCode = (nn4 || nn6)? 'screenX='+posX+',screenY='+posY : 'left='+posX+',top='+posY; 
} else { posCode = ''; } 
cardWindow = window.open('','_blank','menubar=no,toolbar=no,scrollbars=no,status=no,width='+winW+',height='+winH+','+posCode); 
cardWindow.document.open(); 
cardWindow.document.write('<html><head><title>'+winTitle+'<\/title><\/head>'); 
cardWindow.document.write('<body marginwidth=0 marginheight=0 topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0>'); 
cardWindow.document.write('<img src="'+cardName+'"><\/body><\/html>'); 
cardWindow.document.close(); 
cardWindow.focus(); 
}

Эта функция принимает url картинки, ширину, высоту и четвертым параметром заголовок popup'a
Соответственно, когда надо вызвать, пишем

onClick="popupWin('<?php echo $dossier_cible.$f ?>', <?php echo $w ?><?php  echo $h ?>, 'header'); return false;"

В качестве заголовка окна я написал слово "header", но можно что угодно.

P.S.
Кстати, в Опере почему то не работает :-( Не размещает посередине экрана
И еще, просьба. Начинай новую тему в форуме, если она новая :-)

   
 
 автор: cccp   (22.01.2006 в 03:04)   письмо автору
 
   для: WebTech   (21.01.2006 в 16:44)
 

Ок.
Спасибо Большое!


ПС:
Немного хочу вернутся назад...
В твоей строчке для обработки типа файлов:


$filetype = $_FILES['f']['type']; // poluchaem tip fajla 
  if ($filetype != 'image/gif' && $filetype != 'image/jpeg' && $filetype != 'image/pjpeg' && $filetype != 'image/jpg' && $filetype != 'image/bnp' && $filetype != 'image/png')


хочу понять...
Какую роль играет 'image/ ?

Если я захочу, как можно поменять например на файлы типа .mp3 или .wav ?

   
 
 автор: WebTech   (22.01.2006 в 07:47)   письмо автору
 
   для: cccp   (22.01.2006 в 03:04)
 

"image/gif" или "image/jpeg" так называются MIME-типы графических файлов GIF и JPEG.

Вот еще другие распространенные MIME-типы:
application/msword - документы Microsoft Word, расширение doc
application/x-shockwave-flash - Flash-ролики, swf
application/zip - архив zip
audio/midi - файлы mid
audio/mpeg - файлы mp3, mp2
audio/x-wav - файлы wav
image/bmp - изображения bmp
image/png - изображения png
image/tiff - изображения tiff
text/plane - файлы txt
video/mpeg - видеофайлы mpeg, mpe, mpg
video/x-msvideo - видеофайлы avi

Поэтому, для того, чтобы проверить, например, является ли загруженный файл zip-архивом, надо написать:

if ($filetype != 'application/zip')

кстати, у тебя написано image/jpg, такого MIME-типа нет, jpg - это расширение файла

   
 
 автор: cccp   (22.01.2006 в 13:59)   письмо автору
 
   для: WebTech   (22.01.2006 в 07:47)
 

И как же тогда сделать для .jpg файлов?
Или MIME-типе image/jpeg это то что и надо?

   
 
 автор: WebTech   (22.01.2006 в 14:49)   письмо автору
 
   для: cccp   (22.01.2006 в 13:59)
 

То что надо :-)

   
 
 автор: cccp   (22.01.2006 в 15:55)   письмо автору
 
   для: WebTech   (22.01.2006 в 14:49)
 

Понятно!
Спасибо огромное WebTech !

   
Rambler's Top100
вверх

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