Оператор канала |
указывает, что между вашими тремя переменными происходит побитовое ИЛИ.
Однако, если $variable3
является текстовым, как вы указываете, то я не будупонять, почему вы это делаете.
Посмотрите на код ниже.Он использует пример данных, которые вы разместили в комментариях:
$variable1 = 2432;
$variable2 = 3234322;
$variable3 = 'adtw2GEt4PrPghhfLApae';
echo '1: ' . $variable1 . '<br />';
echo '2: ' . $variable2 . '<br />';
echo '3: ' . $variable3 . '<br /><br />';
echo '1|2: ' . ($variable1 | $variable2) . '<br />';
echo '1|2|3: ' . ($variable1 | $variable2 | $variable3) . '<br /><br />';
echo '1.2: ' . ($variable1 . $variable2) . '<br />';
echo '1.2.3: ' . ($variable1 . $variable2 . $variable3) . '<br /><br />';
echo 'md5 1|2|3: ' . md5($variable1|$variable2|$variable3) . '<br />';
echo 'md5 1.2.3: ' . md5($variable1.$variable2.$variable3) . '<br />';
Вы сразу увидите, что 1|2
дает тот же результат, что и 1|2|3
, что означает, что второе побитовое ИЛИ ничего не делает (потому что оноявляется строкой):
1|2: 3234706
1|2|3: 3234706
Если вы обработали все три переменные как строку, вы получите совершенно другой хэш MD5, как и следовало ожидать:
md5 1|2|3: fdea81fcefba5a598cf3124d7dbf3854
md5 1.2.3: 8cc6383034ed459ad7a135fcb8cb86de
Итак md5($variable1|$variable2|$variable3);
- это то же самое, что и md5(3234706);
(то есть $variable1|$variable2
), и даже не использует третью переменную.
MD5 не является шифрованием: Я заметил, что вы упомянули шифрованиев комментариях.MD5 - это не шифрование, это алгоритм хеширования, который совершенно другой.