вот простой хороший работающий скриптик PHP: <html> <head> <title>Загрузка файла</title> </head> <body> <p><strong>Выбирите файл для загрузки:</strong><br /> <form enctype="multipart/form-data" method="post"> <input type="file" name="userfile" /> <br /> <input type="submit" value="Загрузить" name="button"> </form> <?php //Выполняем код только при нажатии на кнопку if($_POST['button']== true){ //Для начала проверим не пытаются ли нам загрузить файл с расширением .php и т.д $path = array(".php",".php4",".php3",".phtml",".pl"); foreach ($path as $item){ //Проверяем регулярным выражением регистр if(preg_match("/$item\$/i", $_FILES['userfile']['name'])) { echo "Разрешено загружать, только картинки<br />"; echo "<a href='index.php'><<< Назад</a>"; exit(); } } //Проверим на ошибки, если они есть прекращаем скрипт и создаем отчет if($_FILES['userfile']['error'] != 0){ //Создаем файл и записываем него код ошибки, а так же удаляем временный файл $error = fopen("error/error.dat","wb"); if(fwrite($error,$_FILES['userfile']['error']) == false){ echo "Ошибка записи в файл!!!"; exit(); }else { echo "<b>error.dat</b> - был успешно создан! <a href='error/error.inc'>Смотреть код ошибки</a>"; //Удаляем временный файл unlink($_FILES['userfile']['tmp_name']); //выходим exit(); } fclose($error); } //Определяем директорию, куда будем загружать изображения $dir = 'img/'; $file = $dir.basename($_FILES['userfile']['name']); if (move_uploaded_file($_FILES['userfile']['tmp_name'], $file)) { echo "Файл успешно загружен."; } else { echo "Произошла ошибка"; exit; } } ?> </body> </html> он сохраняет изображения в папку с исходным именем файла, так вот в чем весь вопрос, у меня переменная которая по количеству файлов в папке выдает результат, прибавляем 1 и можно под этим значением сохранять, так вот как сделать чтоб картинки переименовывались в значение этой переменной, чтоб было 1.jpg 2.jpg , ну и так далее...))) в общем как значение переменной загнать в имя файла??? например если перемення $i=3 то как сделать чтоб изображение сохранялось под таким назманием)) [/php]
гг , ну просто то работает, но слишком замудренный, то просто но не работает, то без защиты, а тут с защитой - поэтому хорошый, простой - потомучто без лишних функций - и работающий, потомучто реально работает)))) вроде все обьяснил))))
Защита дырявая, по этому плохой Функций лишних полно Всё это делается проще в 100 раз (а временный файл и вовсе сам автоматом удаляется) по этому слишком накрученный (причём зря) Сегодня да, а завтра выйдет какой нибудь апдейт для РНР, или какой нибудь пьяный админ поменяет настройки на серваке, и вместо исправления какой нибудь одной строчки придётся переписывать всё заново...
мягко сказано PHP: $path = array(".php",".php4",".php3",".phtml",".pl"); foreach ($path as $item){ //Проверяем регулярным выражением регистр if(preg_match("/$item\$/i", $_FILES['userfile']['name'])) { echo "Разрешено загружать, только картинки<br />"; echo "<a href='index.php'><<< Назад</a>"; exit(); курим бамбук автор кода изобретает велосипед. действительно - зачем перечислять единицы допустимых форматов если можно перечислять сотни запрещённых ? и сравнение регуляркой...всю жизнь делаю in_array
А если так? PHP: <?php $form = <<<HTML <form action="" enctype="multipart/form-data" method="post"> <input name="file" type="file" value="" /> <input name="submit" type="submit" value="Отправить" /> </form> HTML; if (!isset ($_FILES['file'])) { echo $form; } else { $dirname = dirname (__FILE__) . '\uploads\\'; if (!is_dir ($dirname)) { mkdir ($dirname, 0777); } $path = $dirname . basename ($_FILES['file']['name']); $tmpfile = $_FILES['file']['tmp_name']; $array = array ("php", "php3", "php4", "php5", "php6", "phtml", "phps"); $extension = pathinfo ($path); $extension = $extension['extension']; if (array_search ($extension, $array)) { die ("Hacking attempt!"); } $array = array ("image/bmp", "image/gif", "image/jpeg", "image/png", "image/tiff"); $getimagesize = getimagesize ($tmpfile); $mimetype = $getimagesize['mime']; if (!array_search ($mimetype, $array)) { die ("Hacking attempt!"); } if (!is_uploaded_file ($tmpfile)) { die ("Hacking attempt!"); } move_uploaded_file ($tmpfile, $path); echo $form; } ?>
PHP: $array = array ("php", "php3", "php4", "php5", "php6", "phtml", "phps"); тут нужно перечислять не запрещённые форматы , а разрешённые jpg,jpeg,bmp и т.д потом вместо менять на in_array где $array - массив с разрешёнными форматами а $extension - формат загружаемого файла. можно разбивать explode(".",$filename) и брать ячейку с номером 1 (разумеется предварительно проверив чтобы в данном массиве было 2 ячейки - 0 и 1. imagename.jpg.php могут похерить )
Делал себе простую загрузку, мини-файловая помойка) в файле upload.html Код (Text): <html> <head> <title>Загрузка файлов на сервер</title> </head> <body> <h2><p><b> Форма для загрузки файлов </b></p></h2> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="filename"><br> <input type="submit" value="Загрузить"><br> </form> </body> </html> и в той же папке файл upload.php Код (Text): <html> <head> <title>Результат загрузки файла</title> </head> <body> <?php if($_FILES["filename"]["size"]["type"] > 1024*3*1024) { echo ("Размер файла превышает три мегабайта"); //первый баг - пропускает файлы больше заданного объема { $allowed_filetypes = array('.jpg','.JPG','.Jpg','.gif','.GIF','.Gif','.bmp','.BMP','.Bmp','.png','.PNG','.Png'); // допустимые форматы. if(in_array($allowed_filetypes)){ echo('Данный формат не поддерживается.'); //второй баг - функция не работает, любой загружаемый файл принимает расширение .jpg } } exit; } $uploaddir = '../photos/1/'; //указываем папку на сервер куда грузить $pass=md5(uniqid(rand(),true)); //генерируем новое имя файла в виде рандомного md5 $new_name = $pass; // индийский код :) $namefile = "$new_name".".jpg"; //файлу задается строгое расширение $filename = $namefile; $uploadfile = $uploaddir.basename($namefile = "$new_name".".jpg"); if (move_uploaded_file($_FILES['filename']['tmp_name'], $uploadfile)) { echo("Файл успешно загружен <br>"); echo("Характеристики файла: <br>"); echo ("Имя файла: <b>$namefile</b> "); echo("<br>Размер файла: "); echo($_FILES["filename"]["size"]); echo("<br>Каталог для загрузки: $uploaddir "); echo("<br>Тип файла: "); echo($_FILES["filename"]["type"]); } else { echo("Ошибка загрузки файла"); } ?> <br> <table width="600" border="0" cellpadding="2" cellspacing="0"> <tr heigth="2"> <td heigth="2" bgcolor="black"></td> </tr> </table> <font face="tahoma" size="2"><b> <table border="0" cellpadding="2" cellspacing="0"> <tr><td><b><?php echo $namefile ?></b></td><td width="134"></td><td align="left"><a href="<?php echo $uploadfile ?>">Ссылка к файлу </a></td></tr> <tr height="2"><td height="2" colspan="3" bgcolor="black"></td></tr> <br><br> </table> </b></font> </body> </html> в принципе все) использовался для личных нужд, поэтому баг с загрузкой любого файла был не критичен) если надо - можешь доработать с исправлением)