Я делаю примерно следующее:
SELECT * FROM table WHERE user='$user';
$myrow = fetchRow() // previously I inserted a pass to the db using base64_encode ex: WRM2gt3R=
$somepass = base64_encode($_POST['password']);
if ($myrow[1] != $somepass) echo 'error';
else echo 'welcome';
Я всегда получаю ошибку, я даже повторяю $ somepass и $ myrow [1], они такие же, но все равно ошибка. Что я делаю не так? Спасибо
var_dump ($ somepass); var_dump ($ myrow); и вставьте результат в свой вопрос.






Попробуйте использовать var_dump вместо echo - возможно, у одного из них есть пробел или новая строка в начале / конце.
Редактировать:
Вы должны хранить его как CHAR (40): A fixed-length string that is always right-padded with spaces to the specified length when stored
Используйте VARCHAR или trim()
Если $ myrow [1] действительно правильный пароль в кодировке base64, я не вижу никаких ошибок.
Попробуйте это в конце:
echo "<br />$myrow[1] != $somepass";
Что там написано?
И, кстати, не вижу смысла кодировать пароли в base64. Что вы пытаетесь достичь?
Я думаю, что если я сделаю var_dump (), я получу:
строка (40) "YWRraM2 =" строка (8) "YWRraM2 ="
кажется, как-то, если я вставляю данные в базу данных с помощью консоли, она добавляет дополнительное пространство в поле передачи.
myplacedk: есть ли причина, по которой мне не следует этого делать? Я думал, это добавит дополнительный уровень безопасности?
Какая база данных? Какой тип столбца вы используете для поля пароля?
Обратимая функция ничем не лучше обычного текста. Вместо этого вы можете изучить функцию crypt (): php.net/crypt
Эта кодировка выполняет две функции:
Так что нет, на самом деле это не добавляет безопасности. Это просто кодировка, расшифровать несложно.
Может быть, вы принимаете это за хеширование md5 или что-то в этом роде.
Играть - это здорово, но когда дело касается безопасности, я действительно рекомендую не использовать то, чего вы не понимаете. В конечном итоге это принесет больше вреда, чем пользы.
Некоторые вопросы:
Пожалуйста, предоставьте некоторую информацию о том, что на самом деле содержат $ myrow и $ _POST (var_dump ($ myrow); и var_dump ($ _ POST);)