Такой вопрос :Почему md5(); выдает одинаковый код ...
$login = 'odin';
$login2='peati';
$pass = 'dva';
$pass2 ='vosemi';
$hash = md5($login+$pass);
$hash2 = md5($login2 + $pass2);
Результат:
$hash = cfcd208495d565ef66e7dff9f98764da
$hash2= cfcd208495d565ef66e7dff9f98764da
Что я не так понял или сделал ?
Спустя 2 минуты, 14 секунд (29.03.2011 - 00:54) Nikitian написал(а):
А так?
$login = 'odin';
$login2='peati';
$pass = 'dva';
$pass2 ='vosemi';
$hash = md5($login.$pass);
$hash2 = md5($login2 . $pass2);
Спустя 1 минута, 4 секунды (29.03.2011 - 00:55) shmali написал(а):
А так работает
пасиба!!!
пасиба!!!
Спустя 49 минут, 36 секунд (29.03.2011 - 01:45) Nikitian написал(а):
Ну раз написали в карму, что объяснил, то объясню ))
Т.к. PHP является нетипизированным языком, то при всех операциях с переменными он пытается их привести к типу, который свойственнен данной операции. "+" - это арифметическая операция и ваш алгоритм представлялся примерно так:
floatval() во всех случаях возвращал 0, от чего и бралась функция md5(). md5(0) = cfcd208495d565ef66e7dff9f98764da
Для объединения строк существует оператор ".", который как раз и объясняет php, что "операция со строками, не надо их ни во что переводить."
Т.к. PHP является нетипизированным языком, то при всех операциях с переменными он пытается их привести к типу, который свойственнен данной операции. "+" - это арифметическая операция и ваш алгоритм представлялся примерно так:
$hash = md5(floatval($login)+floatva($pass));
$hash2 = md5(floatval($login2) + floatval($pass2));
floatval() во всех случаях возвращал 0, от чего и бралась функция md5(). md5(0) = cfcd208495d565ef66e7dff9f98764da
Для объединения строк существует оператор ".", который как раз и объясняет php, что "операция со строками, не надо их ни во что переводить."
Спустя 1 час, 19 минут, 8 секунд (29.03.2011 - 03:04) shmali написал(а):
Цитата (Nikitian @ 28.03.2011 - 22:45) |
Ну раз написали в карму, что объяснил, то объясню )) |
вот теперь точно понял)) спасибо!!!