ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

26.05.2010, 23:24
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
На одном из сайтов много картинок с русскими буквами в именах.
На домашнем серваке замечательно всё работает
Картинки вида site.ru/картинка.jpg нормально открываются и отображаются.
Залил на хост - там косяк. На картинка.jpg ругается 404-й. На urlencode('картинка.jpg') тоже 404 (и на rawurlencode('картинка.jpg').
Нормально отображается только в виде - %d0%e5%ec%e5%ed%fc%20.jpg
Как привести все названия к такому виду?
Или как заставить сервак нормально отображать их в первозданном виде?
Либы, вроде, одинаковые везде включены. Версии iconv различаются, но хз, может быть из-за этого или нет...
|
|
|

26.05.2010, 23:28
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от FindeR
На одном из сайтов много картинок с русскими буквами в именах.
На домашнем серваке замечательно всё работает
Картинки вида site.ru/картинка.jpg нормально открываются и отображаются.
Залил на хост - там косяк. На картинка.jpg ругается 404-й. На urlencode('картинка.jpg') тоже 404 (и на rawurlencode('картинка.jpg').
Нормально отображается только в виде - %d0%e5%ec%e5%ed%fc%20.jpg
Как привести все названия к такому виду?
Или как заставить сервак нормально отображать их в первозданном виде?
Либы, вроде, одинаковые везде включены. Версии iconv различаются, но хз, может быть из-за этого или нет...
Пройтись в цикле по папке, и переименовать все картинки в транслитерационный вариант.
|
|
|

26.05.2010, 23:41
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
m0Hze, не как переименовать все, а как привести строку, например, "ремень.jpg" к виду "%d0%e5%ec%e5%ed%fc.jpg". Может, есть функция подобная urlencode...
Да и толку переименовывать, если файлы ещё добавляться будут.
|
|
|

27.05.2010, 00:06
|
|
Познающий
Регистрация: 07.02.2010
Сообщений: 70
Провел на форуме: 217996
Репутация:
56
|
|
%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; 27.05.2010 в 00:14..
|
|
|

27.05.2010, 00:31
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
roxblnfk, спасибо тебе! Сразу понял, в чём затык был.
Прокатил вариант - str_replace('%2F', '/', rawurlencode($url))
При urlencode тоже ещё пришлось менять '%2F' на '/'
|
|
|

27.05.2010, 16:44
|
|
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме: 104504
Репутация:
1
|
|
Доброго времени суток! Народ, помогите со скриптом. Всего-то надо просто залить файл в папку с правами 777, писал свой скрипт, качал готовые, ниче не работает. Вот пример:
Форма:
Код:
<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>
Обработчик
Код:
<?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 почему-то пустая...Можешь поможет кто?
|
|
|

27.05.2010, 17:03
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от w_2k
Доброго времени суток! Народ, помогите со скриптом. Всего-то надо просто залить файл в папку с правами 777, писал свой скрипт, качал готовые, ниче не работает. Вот пример:
Форма:
Код:
<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>
Обработчик
Код:
<?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 почему-то пустая...Можешь поможет кто?
1) А почему собственно переменная $File должна быть определена? И даже больше, почему в ней должен лежать путь к файлу? оО
2) Какой на*** copy();? )
3) http://www.php.ru/manual/features.file-upload.html
http://php.net/manual/en/reserved.variables.files.php
http://ru.php.net/manual/en/function.move-uploaded-file.php
|
|
|

27.05.2010, 17:10
|
|
Новичок
Регистрация: 23.07.2008
Сообщений: 28
Провел на форуме: 104504
Репутация:
1
|
|
Благодарю)
|
|
|

28.05.2010, 01:30
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
Помогите разобраться.
Была проблема с загрузкой постом файлов на сервак.
Накидал вот такой скрипт для теста (кинул в папку с правами 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 крестик...Если слить с сервера файл - не открывается уже. Откуда берётся эта "обработка" файла?
|
|
|

29.05.2010, 09:28
|
|
Познающий
Регистрация: 03.01.2010
Сообщений: 42
Провел на форуме: 162143
Репутация:
3
|
|
У меня такое же было. Может быть потому что на хостинге *nix а символы переноса строки в винде и *nix разные.(\r\n и \n) При переходе из одной системы в другую они интерпретируются, а т.к. Картинка передается как бинарник, то содержимое файла меняется и он повреждается.
Последний раз редактировалось SHiNiGaMi; 29.05.2010 в 09:30..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|