Автор |
Сообщение |
TROLL_ Эксперт |
|
короче база пользователей лежит в мускуле, пароль шифруется.
как теперь сменить его, не удаляя полностью запись.
Все это безобразие на php.
пробовали через сортировку, чет не получилось.
прикол в том что если он не шифрованный то нармально меняет, как тоько добавляем ............. pass=ENCRYPT('pass'); - все !! непашет, причем на синаксис не ругаеться.
кто знает как сделать? |
|
|
|
|
Richard Ferlow Гуру Предупреждений : 2
|
|
Не пойму в чем проблема - в md5 делаешь сравнение текущего, потом если верно, делаешь UPDATE для этого поля..
Зачем здесь сортировка - вообще не понял. |
|
|
|
|
TROLL_ Эксперт |
|
Richard Ferlow
ну дык и напиши как сделать, строками. |
|
|
|
|
Richard Ferlow Гуру Предупреждений : 2
|
|
Код: |
// is user changing passwords?
if(isset($_POST['newpassword']) && strlen($_POST['newpassword']))
{
// check to make sure the password is long enough and of the right format
if(!eregi("^[[:alnum:]]+$", $_POST['newpassword']))
{
$error[] = $p11_language['enter_valid_password'];
}
// check to make sure that the password matches the confirmed password.
if($_POST['newpassword'] != $_POST['newpasswordconfirm'])
{
$error[] = $p11_language['password_unmatched'];
}
}
if(empty($error))
{
// change password?
if(isset($_POST['newpassword']) && strlen($_POST['newpassword']))
{
$DB->query("UPDATE {users} SET password = '%s' WHERE userid = %d", md5($_POST['newpassword']), $_POST['p11_userid']);
}
} |
Только тут нет проверки текущего пароля. По уму надо бы. |
|
|
|
|
dlnsk Гуру |
|
TROLL_
Для справки:
Мускулу, как и любой другой БД абсолютно пофиг что ты в ней хранишь и в каком виде.
Проблема в коде.
Либо в коде проверяется что-то и это влияет на обновление инфы в БД или в коде ошибка (будут ли отображаться ошибки зависит от настроек PHP, так что ты их можешь просто не видеть) и следующие после нее команды не выполняются. |
|
|
|
|
Richard Ferlow Гуру Предупреждений : 2
|
|
dlnsk
Смотря какая ошибка, а то и вовсе скрипт не работать |
|
|
|
|
TROLL_ Эксперт |
|
dlnsk
Richard Ferlow
да ворос даже не в коде уже, захожу командной строкой на мускул
если создаю шифрованный пароль и
SELECT * from users where password = ENCRYPT('пароль не шифрованный') - не ищет строку
если создаю не шифрованный пароль и
SELECT * from users where password = 'пароль не шифрованный' - ищет строку.
вот и вопрос |
|
|
|
|
Richard Ferlow Гуру Предупреждений : 2
|
|
|
|
|
dlnsk Гуру |
|
TROLL_
Ты мозги не парь. Юзай md5 он везде используется именно для такого случая как у тебя. |
|
|
|
|
BS Эксперт |
|
dlnsk,
Верно!
md5 будет не лучше и не хуже другого способа шифрования. Т.е. если ты хочешь, чтобы база данных была доступна любому в сети, но никто не мог её расшифровать, то md5 не подходит. В любом другом случае он подойдет. |
|
|
|
|
Richard Ferlow Гуру Предупреждений : 2
|
|
BS
Если база доступа любому в сети, то какой тогда способ подойдет акромя необратимного шифрования ? |
|
|
|
|
BS Эксперт |
|
Не понял вопроса. md5 тоже необратим. |
|
|
|
|
Richard Ferlow Гуру Предупреждений : 2
|
|
BS
Цитата: |
Т.е. если ты хочешь, чтобы база данных была доступна любому в сети, но никто не мог её расшифровать, то md5 не подходит .
|
Фраза подрузумевает, что знаешь способ, чтобы не могли расшифровать. |
|
|
|
|
BS Эксперт |
|
Да способов милионы. Но тут они не нужны. |
|
|
|
|
|