http://lol/del.php?f=Снимок-1341727076.png&h=bda0f3fb01714205fc158b589527ffca
Во всех браузерах работает нормально в опере не работает точнее неправильно работает в коде написано место где
<?php
/**
* @author den007
* @copyright 2012
*/
// начальные и конечные добавления для хешей для удаления файлов
$hash0 = 'lol';
$hash1 = 'lol';
// Путь к файлу
$filepath = dirName(__FILE__).'/lol/';
$filename = iconv(mb_detect_encoding($_GET['f'], 'auto'), 'UTF-8', $_GET['f']);
// html
$html0 = <<<HTML
HTML;
$html1 = <<<HTML
HTML;
// Дальше код
if(isset($filename) and isset($_GET['h'])) {
preg_match("#.*-([0-9]+)\.[a-zA-Z]+$#i", $filename, $result_name);
$file_hash = md5($hash0.$result_name[1].$hash1);
if($file_hash == $_GET['h']) {
if(file_exists($filepath.$filename)) {
// Удаляем оригинал и превью
unlink($filepath.$filename);
unlink($filepath.'thumb-'.$filename);
echo $html0.'Изображение успешно удалено!'.$html11;
} else {
echo $html0.'Изображение удалено ранее!'.$html1;
}
} else {
header('Location: http://lol/'); ////////////Опера перенаправляет сюда, в смысле переходим сюда
}
} else {
header('Location: http://lol/');
}
Спустя 4 минуты, 3 секунды (8.07.2012 - 09:05) redreem написал(а):
посмотри что приходит в $_GET в разных браузерах. print_r($_GET);
при чем тут опера вообще, если речь идет о php-скрипте? если дело в браузере - выкладывай html+js, а не php-код.
при чем тут опера вообще, если речь идет о php-скрипте? если дело в браузере - выкладывай html+js, а не php-код.
Спустя 3 минуты, 27 секунд (8.07.2012 - 09:09) DEN 007 написал(а):
redreem, да я смотрел уже и кодировку проверял, например опера вот эту переменную присылает в
UTF-8 f=Снимок-1341727076.png а эту
ASCII h=bda0f3fb01714205fc158b589527ffca
я допилил год вот этим
результат 0
UTF-8 f=Снимок-1341727076.png а эту
ASCII h=bda0f3fb01714205fc158b589527ffca
я допилил год вот этим
$filename = iconv(mb_detect_encoding($_GET['f'], 'auto'), 'UTF-8', $_GET['f']);
результат 0
Спустя 7 минут, 31 секунда (8.07.2012 - 09:16) redreem написал(а):
Цитата |
ASCII h=bda0f3fb01714205fc158b589527ffca |
1. с чего ты взял что строка h=... в ASCII? там одна латинница и цифры. она с таким же успехом может быть и в uft-8.
2. mb_detect_encoding - довольно кривая вещь. не советую ей пользоваться.
3. покажи форму отправки (html), тогда может что-то проясниться.
4. и вот еще какая фигня: если у тебя в гете могут приходить русские символы, то надо предварительно заменять их escape-последовательностью.
Спустя 3 минуты, 33 секунды (8.07.2012 - 09:20) redreem написал(а):
т.е. еще в браузере, до отправки, нужно имя файла прогонять в js через encodeURI() или encodeURIComponent(), а в php преобразовывать обратно, используя urldecode()
Спустя 4 минуты, 13 секунд (8.07.2012 - 09:24) DEN 007 написал(а):
браузер по идее сам должен из адресной строки кодировать... а опера это делает прямо на глазах
Спустя 26 минут, 11 секунд (8.07.2012 - 09:50) redreem написал(а):
перед передачей скрипту гет-параметров, прогоняй их через encode, если они могут содержать невалидные или служебные для адресной строки символы.
Спустя 36 минут, 34 секунды (8.07.2012 - 10:27) DEN 007 написал(а):
Почему опера не кодирует символы в адресной строке мне не понятно, пришлось сделать очередной костыль)
ссылку просто сокращаю и она через Location: летит опере уже закодированая)
но вопрос остается открытым
ссылку просто сокращаю и она через Location: летит опере уже закодированая)
но вопрос остается открытым
Спустя 14 минут, 32 секунды (8.07.2012 - 10:41) killer8080 написал(а):
DEN 007
настройки/расширенные/сеть/галочка "кодировать международные веб-адреса в UTF-8"
установлена?
настройки/расширенные/сеть/галочка "кодировать международные веб-адреса в UTF-8"
установлена?
Спустя 4 минуты, 2 секунды (8.07.2012 - 10:45) DEN 007 написал(а):
killer8080
Да стоит, там везде дефолтные настройки я сбрасывал переустанавливал, думал проблема только у меня.
Да стоит, там везде дефолтные настройки я сбрасывал переустанавливал, думал проблема только у меня.
Спустя 6 минут, 52 секунды (8.07.2012 - 10:52) killer8080 написал(а):
DEN 007
пробовал тестить в опере такой код
все нормально, ничего не искажается. Какая версия оперы?
пробовал тестить в опере такой код
echo ' <a href="?f=Снимок-1341727076.png">link</a>';
echo $_SERVER['REQUEST_URI'];
echo '<pre>';
print_r($_GET);
все нормально, ничего не искажается. Какая версия оперы?
Спустя 16 минут, 42 секунды (8.07.2012 - 11:09) DEN 007 написал(а):
Цитата (killer8080 @ 8.07.2012 - 07:52) |
все нормально, ничего не искажается. Какая версия оперы? |
killer8080
побывал тестить, читай 3 сообщение, но дело все в том, что искажается, но в массиве как бы все нормально, но хеш уже не сходится (смотри код)
а вот как оно выглядит запустил твой код.
опера 12.00 последняя, опера нехт 12.50 internal тоже самое
первый скрин перешел по ссылке:
второй ввел в адресной строке и нажал ентер:
Спустя 33 минуты, 35 секунд (8.07.2012 - 11:42) redreem написал(а):
я честно говоря смутно понимаю уже что ты хочешь добиться. вот выполни-ка у себя это:
файл url.php, в корне сайта, в кодировке utf-8 без BOM:
нажми на Отправить гет-запрос и напиши что выведет на экран.
файл url.php, в корне сайта, в кодировке utf-8 без BOM:
<?php
//php-файл в utf-8
if (isset($_GET['h'])) {
$f = $_GET['f'];
$h = $_GET['h'];
} else {
$f = '';
$h = '';
}
header("Content-type: text/html; charset=utf-8");
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<a href="/url.php?f=файл такой файл.png&&h=bda0f3fb01714205fc158b589527ffca">Отправить гет-запрос</a>
<br>
<br>
Результаты $_GET:
<br>
f = <?php echo $f ?>
<br>
h = <?php echo $h ?>
</body>
</html>
нажми на Отправить гет-запрос и напиши что выведет на экран.
Спустя 5 часов, 13 минут, 13 секунд (8.07.2012 - 16:55) DEN 007 написал(а):
redreem
Ну а теперь сами попробуйте
http://yalol.tk/1.php
что внутри
http://yalol.tk/1.phps
этот код работает в о всех кроме оперы и почему то ие
а вот файлы которые сохранены и работают с cp1251
работают в ие и опере не работают в отличных от них.
http://yalol.tk/1.php
что внутри
http://yalol.tk/1.phps
...как это победить?
Ну а теперь сами попробуйте
http://yalol.tk/1.php
что внутри
http://yalol.tk/1.phps
этот код работает в о всех кроме оперы и почему то ие
а вот файлы которые сохранены и работают с cp1251
работают в ие и опере не работают в отличных от них.
http://yalol.tk/1.php
что внутри
http://yalol.tk/1.phps
...как это победить?
Спустя 11 минут, 44 секунды (8.07.2012 - 17:07) redreem написал(а):
и? у меня в обоих кодировках пишет:
Сравним данные: Хеши равны
Может у тебя где-то серваку еще принудительно кодировка прописана, в htaccess например.
Сравним данные: Хеши равны
Может у тебя где-то серваку еще принудительно кодировка прописана, в htaccess например.
Спустя 2 часа, 17 минут, 25 секунд (8.07.2012 - 19:25) killer8080 написал(а):
Цитата (redreem @ 8.07.2012 - 17:07) |
и? у меня в обоих кодировках пишет: |
аналогично
Спустя 17 минут, 53 секунды (8.07.2012 - 19:43) DEN 007 написал(а):
Спустя 7 дней, 26 минут, 16 секунд (15.07.2012 - 20:09) DEN 007 написал(а):
никто меня так и не понял((
Спустя 11 часов, 27 минут, 7 секунд (16.07.2012 - 07:36) redreem написал(а):
я тебе уже писал выше
Цитата |
Может у тебя где-то серваку еще принудительно кодировка прописана, в htaccess например. |
судя по видео - проблема исключительно в кодировке.
проверь все шаги, которые могут повлиять на кодировку:
1. кодировка php-файла
2. header, отправляемый сервером
3. сам сервер в какой кодировке отдает (htacces, php.ini и прочие где может затесаться установка кодировки на сервере).
4. установка метатега для кодирвки в html
скорее всего либо в пункте 1, либо в 3 засада.