2015-02-16 2 views
-1

мой auth не работает, мой код ниже.PHP: Как использовать% u в функции crc32

<?php 
$login = "super"; 
printf(crc32($login)); // result -691938802 
printf("%u",crc32($login)); //result 3603028494 
if(crc32($login) * -1 == -3603028494) { 
    echo "user correct"; 
}else{ 
    echo "user false"; 
} 
?> 

я всегда получаю пользователь ложно, поэтому, я думаю, что проблема приходит из% U, как я могу изменить свой переменный $ входа в чем-то вроде $login = "%usuper" так что мой код аутентификации работает? возможно изменение $login значение только без изменений, если условие, потому что я буду использовать его в форме входа в будущем.

Спасибо.

+0

Я не уверен, почему вы ожидаете -691938802 * -1, чтобы быть отрицательным числом в PHP. Или вы ожидали 'printf («% u », ...', чтобы преобразовать результат 'crc32 ($ login)' в непознанное целое число каждый раз, когда вы вызываете эту функцию в будущем? – Cairnarvon

+0

@Cairnarvon, именно я научился ответ на запрос, и простой код выглядит как мой код, поэтому в этом случае я могу перейти к правильному пользователю с указанным выше условием, указанным в викторине. –

ответ

0

crc32() возвращает int, который является подписанным 32-разрядным целым числом. Два числа, которые вы показываете, это одинаковое число, то есть точно такие же 32 бита, просто интерпретированные по-разному. 2^32 - 691938802 == 3603028494. Нет проблем.

+0

если оба числа одинаковы, то почему я всегда получаю пользователь false? так как я узнаю ответную викторину, поэтому как я могу изменить «супер» строку? Спасибо. –

+0

Я не могу понять, что вы просите. В коде, который вы показываете, нет смысла умножать на -1 Просто сравните с -691938802. Неясно, как то, что вы написали, используется в контексте реальной программы. Очевидно, вы можете определить, что 'crc32 (" super ") == crc32 (" super ")'. –

 Смежные вопросы

  • Нет связанных вопросов^_^