%d0%e5%ec%e5%ed%fc%20.jpg - 'Ремень .jpg' Убрал бы пробел перед .jpg и хватило бы urlencode (т.к. urlencode вместо пробела ставит +) Есть вариант менять через str_replace плюсы на пробелы str_replace('+','%20',urlencode($url)) Либо по циклу берёшь ord() от каждого символа, переводишь в HEX, ставишь перед каждым хексом % (перед однобайтовым хексом 0 не забудь).. можно, конечно, ещё наложить фильтр на латину (точки и т.д.) и всё в strtolower() и тогда будет полное соответствие upd: насчёт rawurlencode('картинка.jpg') -- проверь правильность ввода имени файла в строке, мало ли там где пробел или похожая буква из другого языка (т.е. имя файла копи-паст)
roxblnfk, спасибо тебе! Сразу понял, в чём затык был. Прокатил вариант - str_replace('%2F', '/', rawurlencode($url)) При urlencode тоже ещё пришлось менять '%2F' на '/'
Доброго времени суток! Народ, помогите со скриптом. Всего-то надо просто залить файл в папку с правами 777, писал свой скрипт, качал готовые, ниче не работает. Вот пример: Форма: Code: <html> <head> <title>Обработка переданного файла</title> </head> <body> <form action=upload.php method="POST" enctype=multipart/form-data> Выберите файл:<br> <input type="file" name=File><br> <br> <input type=submit name=doUpload value="загрузить"><br> </form> </body> </html> Обработчик Code: <?php $ImgDir="."; print $_POST['File']; print $_FILE['File']; if ($_POST['doUpload']) { print "asda"; if (file_exists($File)) { print "123"; Copy($File, "$ImgDir/".basename($File_name)); } } ?> Переменная $File почему-то пустая...Можешь поможет кто?
Помогите разобраться. Была проблема с загрузкой постом файлов на сервак. Накидал вот такой скрипт для теста (кинул в папку с правами 777). PHP: <?php if (empty($_FILES["img_file"]["name"])) { ?> <form action="index.php" method="POST" enctype="multipart/form-data"> img: <input type="file" name="img_file" /> <input type="submit" value="Загрузить" /> </form> <?php } else { $imageinfo = getimagesize($_FILES['img_file']['tmp_name']); if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/png') { echo '<span style="font-size:13px;">Ошибка загрузки изображения.</span>'; } else { move_uploaded_file($_FILES["img_file"]["tmp_name"], $_FILES["img_file"]["name"]); echo '<img src="'.$_FILES["img_file"]["name"].'" />'; } } ?> На денвере всё замечательно. Загружаются jpg,gif,png. А вот при заливке на хостинг начинаются проблемы. 1) При попытке загрузки jpg/jpeg вываливает "Ошибка загрузки изображения". Причём, $_FILES['img_file']['tmp_name'] не пуст! А вот getimagesize от него уже не берётся - пусто. Правда, догадываюсь, что это связано со вторым вопросом 2) При загрузке оставшихся png и gif он их загружает, отрабатывается move_uploaded_file (файл появляется в папке), но вот потом нифига не отображается. В мозиллке отображается иконка повреждённого файла, в IE крестик...Если слить с сервера файл - не открывается уже. Откуда берётся эта "обработка" файла?
У меня такое же было. Может быть потому что на хостинге *nix а символы переноса строки в винде и *nix разные.(\r\n и \n) При переходе из одной системы в другую они интерпретируются, а т.к. Картинка передается как бинарник, то содержимое файла меняется и он повреждается.
http://php-book.net/ftp-connect.html FindeR, echo $_FILES['uploadfile']['error']; и еще попробуй указать точный путь до файла PHP: move_uploaded_file($_FILES["img_file"]["tmp_name"], dirname(__FILE__).'/'.$_FILES["img_file"]["name"]);
Итак, нужно отредактировать файл через форму. В данном случае html файл шаблона. Делаю всё это так: PHP: <?php file_get_contents("../../style/header.html"); //Получаю содержимое // ну и проверяю переменную и записываю в файл и перенаправляю на страницу, которая сообщает о успешном действии. if(empty($_POST['header'])) { file_put_contents("../../style/header.html", $_POST['header']); header("Location: ../ok.php"); } ?> HTML: <form action="editstyle.php" method="post"> <textarea name="header" cols="100" rows="20"><?=$header; ?></textarea> <input type="submit" value="Записать" /> </form> </body> </html> Внимание вопрос: после записи html в файл записывается много лишних слешей.. Перед каждой кавычкой добавляется "\" (обратный слеш). Как это избежать?
нужно написать скрипт который будет записывать в файл все ссылки с которых перешли на страницу, ну с суперглобального масива. помогите
1-ая строка /www 2-ая строка /www/script/ Как из 2-строки удалить совпадающую подстроку с 1-ой строкой, чтобы получить /script Если для этого спец.функция?
PHP: <? $str1="/www/script"; $str2="/www"; if (strpos($str1, $str2) === false) $str2=str_replace($str1, "", $str2); else $str1=str_replace($str2, "", $str1); echo $str1 . " : " . $str2; ?> ^_^
есть файл index.php например. Он запущен. Какой функцией можно определить его название. p.,s: название файла нужно заносить будет в переменную.
PHP_SELF это путь к файлу, если только имя то Code: substr(strrchr(__FILE__, DIRECTORY_SEPARATOR), 1)