IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   php md5 ??? (http://www.imho.ws/showthread.php?t=76003)

bdimych 18.12.2004 13:29

php md5 ???
 
Вложений: 1
Посмотрите пожалуйста код и сравните два ответа. В чем причина разницы md5. Понятно что где-то перекодируется win1251-koi8 но вот где ? Может это в доках где-то описано и никакой странности нет ?

AAI 18.12.2004 13:59

если твой исходник имел кодировку KOI-8 то MD5() тебе вернет совсем другое значение, отличное от того что в архиве, а если WIN-1251 то все нормально.

Hubbitus 18.12.2004 14:18

Цитата:

bdimych:
В чем причина разницы md5.
Именно в кодировках и есть.
Цитата:

bdimych:
Понятно что где-то перекодируется win1251-koi8 но вот где ?
Насколько я понял (ведь не приведена отправка данных) ничего нигде не перекодируется, просто из одной формы в одной кодировке пересылается, а из другой в другой.

Никакой странности не вижу. Естественно кирилица в разных кодировках имеет разные md5 суммы.

bdimych 18.12.2004 14:29

Цитата:

Насколько я понял (ведь не приведена отправка данных) ничего нигде не перекодируется, просто из одной формы в одной кодировке пересылается, а из другой в другой.
Способ отправки важен-ли? Ведь я записал и запросы и ответы. Запросы отличаются единственно заголовком user-agent а содержание то одинаковое.

получается
- пришел запрос x=%XX%XX......
- echo($x) выводит одинаковые значения равное urldecode('%XX%XX......')
- а md5 выводит разные значения !

(Запрос делался на perl через lwp и насколько я знаю perl ничего не перекодирует и следовательно ответ записан в точности по байтам как и пришел)

Hubbitus 18.12.2004 14:41

Цитата:

bdimych:
Способ отправки важен-ли? Ведь я записал и запросы и ответы. Запросы отличаются единственно заголовком user-agent а содержание то одинаковое.
Важен конечно, и запросы отличаются какраз не только заголовком user-agent, сравните строчки:
1-1.txt: Content-Type: text/html; charset=windows-1251
1-2.txt: Content-Type: text/html; charset=koi8-r
Тоесть данные уже присылаются на обработку в разных кодировках!

bdimych 18.12.2004 14:48

Вы не правы (или я :-)

Content-Type:... это уже ответ. В файле записан сначала весь запрос потом \n\n\n потом весь ответ

Ну вот код весь на perl
Код:

use LWP::UserAgent;
use HTTP::Request::Common;

$Url = 'http://xxxxxxxxxxxxxxxxx';

$UsAg = new LWP::UserAgent;
$UsAg->agent('Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; AIRF)');
$Resp = $UsAg->request(POST $Url,
        'Accept-Language' => 'ru',
        Content => [x => 'привет']);
open D, '>1-1.txt'; binmode D; print D $Resp->request->as_string . "\n\n\n" . $Resp->as_string; close D;

$UsAg = new LWP::UserAgent;
$Resp = $UsAg->request(POST $Url,
        'Accept-Language' => 'ru',
        Content => [x => 'привет']);
open D, '>1-2.txt'; binmode D; print D $Resp->request->as_string . "\n\n\n" . $Resp->as_string; close D;


Hubbitus 19.12.2004 15:00

Может я конечно не прав, но Вы посмотрите, сервер Выдает два ответа в разных кодировках, а слово "привет" и там и там отображается нормально, отсюда я делаю Вывод что они и есть в разных кодировках.

Почему бы просто в самом скрипте не учесть эти кодировки и перекодировать если нужно?

bdimych 20.12.2004 14:56

Разобрался на другом форуме. Это было из-за русского апача

привет -> apache(перекод(привет))=РТЙЧЕФ -> php -> скрипт
ДАЛЬШЕ
1. echo(РТЙЧЕФ) -> apache(перекод_назад(РТЙЧЕФ)) -> привет
2. echo(md5(РТЙЧЕФ)) -> apache(не_перекод_т_к_англ) -> разница

Спасибо всем.


Часовой пояс GMT +4, время: 22:33.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.