[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по поводу MD5
planetary
Всем привет, кто читает данную тему. Сейчас встал вопрос, как проверить MD5. Читаю инструкцию, вроде всё верно, но не работает.
Вот мой код:

$email = $_POST[email];
$acrion = $_POST[acrion];
$user = $_POST[user];
$key = 'mykey';
$orderid = $_POST[orderid];
$hex= md5_hex($action.$user.$key.$orderid);
if ($_POST[hash] == $hex){
Выполнение скрипта
}

Данные на сстраницу приходят в виде POST .
Помогте пожалуйста. Всем ответившим +1.



Спустя 3 минуты, 51 секунда (30.07.2012 - 21:25) inpost написал(а):
Что значит проверить md5 ???

Спустя 6 минут, 41 секунда (30.07.2012 - 21:32) planetary написал(а):
Цитата (inpost @ 30.07.2012 - 19:25)
Что значит проверить md5 ???

Не правильно выразился, сравнить значения, которые приходят зашифрованными в MD5 с другими значениями, также которые нужно зашифровать.

Спустя 2 минуты, 55 секунд (30.07.2012 - 21:35) kamanch написал(а):
if ($_POST[hash] == $hex){
Выполнение скрипта
}

Как и откуда ты получаешь $hex - понятно.
А что приходит в $_POST[hash] ?

Спустя 1 минута, 15 секунд (30.07.2012 - 21:36) inpost написал(а):
Достаточно md5.

Спустя 4 минуты, 3 секунды (30.07.2012 - 21:40) planetary написал(а):
Цитата (kamanch @ 30.07.2012 - 19:35)
if ($_POST[hash] == $hex){
Выполнение скрипта
}

Как и откуда ты получаешь $hex - понятно.
А что приходит в $_POST[hash] ?

Переменная hash приходит с другого сервера.
там написано:
hash - MD5 подпись текущего запроса

Спустя 1 минута, 7 секунд (30.07.2012 - 21:41) inpost написал(а):
ну так выведи md5 и то, что ты делал и сравни строки. Точно ли те данные записаны.

Спустя 17 минут, 24 секунды (30.07.2012 - 21:59) planetary написал(а):
И так тоже пробовал. Не получается.
Не совсем уверен, что те данные.
Вот полный текст документации: ( я впервые сталкиваюсь с MD5, поэтому такие вопросы)

В зависимости от типа запроса, пересылаются следующие переменные:
action - команда запроса. См. таблицу запросов ниже.
neworder информация о только что оформленном заказе
paidorder информация об оплаченном заказе
itemadd информация о добавлении товара
itemedit информация о редактировании товара
itemremove информация об удалении товара


orderstatus - статус заказа. 1 - предварительный. 2 - оплаченный.
user - ваше имя пользователя
hash - MD5 подпись текущего запроса
orderid - номер заказа

И другие значения...


Пример информации по пересылке пар логин-пароль для выбранных товаров:
accessdata=010:user@yahoo.com:u295kx2nad:30;011:jugejki5:u9r0epapxm:60;
разделитель ":" между логином и паролем.
разделитель ";" между разными товарами.
формат: itemid:login:password:period

в приведенном примере пересылается следующая информация:
Для товара «010» - логин «user@yahoo.com», пароль «u295kx2nad», период действия 30 суток.
Для товара «011» - логин «jugejki5», пароль «u9r0epapxm», период действия 60 суток.

Если информация о периоде не передается (пусто), значит у данного товара нет временных ограничений.

Для проверки подлинности, склейте в своей программе следующие переменные:
$action.$user.$key.INFO
$action - Тип запроса (neworder,paidorder, и т.д.)
$user - Ваше имя пользователя в сервисе
$key - Ваш "Ключ для получения информации
INFO - Данные в зависимости от типа уведомления.
В уведомлениях neworder/paidorder используйте номер заказа (переменная
$orderid).
В уведомлениях itemadd/itemedit/itemremove используется идентификатор товара (
$itemid)


Пример:
Строка хеширования для оплаченного заказа:

$action.$user.$key.$orderid

Строка хеширования для предварительного заказа:
$action.$user.$key.$orderid

Готовая строка на Perl для проверки подлинности данных:
my
$INFO=$orderid;
my
$controlhash=md5_hex($action.$user.$key.$INFO);


После получения данных и проверки MD5 подписи, ваш скрипт должен передать текст "
RECEIVED", иначе EcommTools.com будет постоянно передавать на вход вашей программы информацию о заказе.

Пример кода на Perl:
print "
Content-type: text/html\n\n";
print "
RECEIVED";
exit


Спустя 1 час, 41 минута, 10 секунд (30.07.2012 - 23:40) Игорь_Vasinsky написал(а):
1. Кто тя так научил указывать ключи массивов? в апострофах $_POST['key'] - иначе можешь получить нотис при соотв уровне ошибок.

2. Ты что не можешь глянуть что у тя в $_POST['hash'] ? и визуально сравнить $hex с ним?

и md5 - достаточно. в мануале про md5 говориться. не про md5_hex()

Спустя 37 минут, 28 секунд (31.07.2012 - 00:18) Семён написал(а):
Не читал особо посты, единственно скажу проверь последовательность своих переменных для формирования md5 и последовательность зашифрованных переменных что приходят от сервера.

Спустя 13 минут, 56 секунд (31.07.2012 - 00:31) planetary написал(а):
Ок, всё стоит по порядку, поставил везде ' и всё-равно не получается., как я посмотрю значения? Это не я захожу, а автоматически происходит выполнение скрипта программой. я при этом не на странице

Спустя 20 минут, 8 секунд (31.07.2012 - 00:52) kamanch написал(а):
Цитата
Это не я захожу, а автоматически происходит выполнение скрипта программой. я при этом не на странице

Ну так вбей в адресноую строку браузера адрес этого скрипта.
А в теле скрипта поставь вывод
echo $hex . '<br />';
echo $_POST['hash'];


Спустя 1 час, 22 минуты, 59 секунд (31.07.2012 - 02:15) planetary написал(а):
да нет же, не смогу я увидеть результата, только, если в базе что-нибудь изменится тогда увижу, что работает. В то время, когда запускается скрипт меня нету на странице скрипта.

Спустя 8 часов, 13 минут, 16 секунд (31.07.2012 - 10:28) inpost написал(а):
planetary
И что мешало занести данные в файл и посмотреть, что туда попало?

Спустя 1 час, 25 минут, 58 секунд (31.07.2012 - 11:54) Игорь_Vasinsky написал(а):
чушь какая-то: я работаю с данными, которые не вижу. laugh.gif

Спустя 1 минута, 31 секунда (31.07.2012 - 11:55) planetary написал(а):
Цитата (inpost @ 31.07.2012 - 08:28)
planetary
И что мешало занести данные в файл и посмотреть, что туда попало?

Попробовал занести значения в базу, совсем разные(

Спустя 10 минут, 21 секунда (31.07.2012 - 12:06) Игорь_Vasinsky написал(а):
значит либо порядок разный либо шифрование.

Спустя 10 минут, 29 секунд (31.07.2012 - 12:16) planetary написал(а):
так что мне сделать?

Спустя 6 минут, 53 секунды (31.07.2012 - 12:23) DarkLynx написал(а):
1) Проверить сходство входных данных на обоих скриптах.
2) Проверить алгоритмы шифрования на обоих скриптах. (взял строку 12345 зашифровал там и там, и посмотрел есть ли отличия.)

Спустя 4 минуты, 56 секунд (31.07.2012 - 12:28) КрутойГость написал(а):
Цитата (Игорь_Vasinsky @ 31.07.2012 - 12:54)
чушь какая-то: я работаю с данными, которые не вижу. laugh.gif

Очевидно же что сервер обращается к скрипту, он и увидит ваш вывод.

Спустя 19 минут, 9 секунд (31.07.2012 - 12:47) Игорь_Vasinsky написал(а):
чё вы голову морочаете???

вот сравнение переменных

Цитата
if ($_POST[hash] == $hex){


что мешает промониторить?

if(isset($_POST['hash']))
echo 'POST:'.$_POST['hash'].'<br/>'
.'HEX:'.$hex;

Спустя 3 минуты, 3 секунды (31.07.2012 - 12:50) planetary написал(а):
Всё, нашел ошибку, не правильно action было написано. Всем спасибо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.