Смена пароля в БД из формы

tdo22

Привет, хочу сделать смену пароля из админки в БД. Но с БД у меня туго, только начал изучать, прошу помощи.прописал код в нужное место, вот только не знаю как правильно составить запрос:
        //Смена пароля
                    else if($mass_type == 18)
                        $db->query("UPDATE `".PREFIX."_users` SET user_password = );
в user_password хранятся пароли пользователей в md5 Как правильно сделать запрос чтоб сменить пароль ? также хочу сделать форму, в которой будет вписываться новый пароль, также незнаю как(пример формы для начисление денег:
                else if($mass_type == 12)
                    msgbox('Начисление поинтов', '<form method="POST" action="?mod=massaction&act=users">Введите количество: <input type="text" value="0" class="inpu" name="voices" style="width:80px" /> <input type="submit" value="Начислить" class="inp" /><input type="hidden" value="14" name="mass_type" />'.$inputUlist.'</form>', '?mod=users');
                //Информация о начисления поинтов
                else if($mass_type == 14)
помогите пожалуйста
14 ответов

tdo22

про смену пороля надо сделать переменную где будет новый пароль потом зашифровать в md5 и апдейтить таблицу, по id юзера ("UPDATE `".PREFIX."_users` SET user_password="твоя переменная" WHERE id='$id'"); примерно так


tdo22

ок, а как правильно составить запрос ?


tdo22

$pass = md5($_POST[pass]);
$id=$_SESSION[USER][id];
$sql=mysql_query("UPDATE `".PREFIX."_users` SET user_password='$pass' WHERE id='$id'");
вроде так


tdo22

Сделал так:
$db->query("UPDATE `".PREFIX."_users` SET user_password=".intval($_POST['pass'])." WHERE user_id = '".$user_id."'");};
и месеч бокс:
msgbox('Смена пароля', '<form method="POST" action="?mod=massaction&act=users">Введите новый пароль: <input type="text" value="" class="inpu" name="pass" style="width:80px" /> <input type="submit" value="Сменить" class="inp" /><input type="hidden" value="15" name="mass_type" />'.$inputUlist.'</form>', '?mod=users');
но куда вставить шифрование мд5 ?


tdo22

если у тебя все так идет, то можно и здесь
$db->query("UPDATE `".PREFIX."_users` SET user_password=".intval(md5($_POST['pass']))." WHERE user_id = '".$user_id."'");};
я не асс но по логике должно сработать!


tdo22

не работает, записывает 0 может я не верно форму делаю:
msgbox('Смена пароля', '<form method="POST" action="?mod=massaction&act=users">Введите новый пароль: <input type="text" value="" class="inpu" name="pass" /> <input type="submit" value="Сменить" class="inp" /><input type="hidden" value="15" name="mass_type" />'.$inputUlist.'</form>', '?mod=users');


tdo22

это action="?mod=massaction&act=users" как я понял файл обработчик? запрос в базу идет с него?


tdo22

наверно, код не мой, а я только учусь. Но вот рабочий метод начисление денег:форма:
                //Подготовка начисления голосов
                else if($mass_type == 12)
                    msgbox('Начисление голосов', '<form method="POST" action="?mod=massaction&act=users">Введите количество: <input type="text" value="0" class="inpu" name="voices" style="width:80px" /> <input type="submit" value="Начислить" class="inp" /><input type="hidden" value="14" name="mass_type" />'.$inputUlist.'</form>', '?mod=users');
                //Информация о начисления голосов
                else if($mass_type == 14)
                    msgbox('Начисление голосов', 'Голоса были успешно начислены', '?mod=users');
запрос в БД:
                    //Начисление голосов
                    else if($mass_type == 14)
                        $db->query("UPDATE `".PREFIX."_users` SET user_balance = user_balance+".intval($_POST['voices'])." WHERE user_id = '".$user_id."'");


tdo22

тогда не так
$db->query("UPDATE `".PREFIX."_users` SET user_password=".intval(md5($_POST['pass']))." WHERE user_id = '".$user_id."'");};
а скорее всего так
$db->query("UPDATE `".PREFIX."_users` SET user_password=".(md5(intval($_POST['pass'])))." WHERE user_id = '".$user_id."'");};
может так сработать (честно первый раз вижу написания таких строк)ты что нельзя так просто (если незнаешь! с другого брать) скорей всего ".intval($_POST['voices'])."это поле ну не как не относится к паролям я же написал простейший код воспользуйся им (вскрыть его не смогут)
$pass = md5($_POST[pass]);
$id=$_SESSION[USER][id];
$sql=mysql_query("UPDATE `".PREFIX."_users` SET user_password='$pass' WHERE id='$id'");
успехов!


tdo22

так не работает) но думаю что с формой что-то не так, если например ввести цифры в поле то в БД что-то записывает, но зайти с этого пароля не получаетсянаверное так и сделаю, если что отпишусь)незнаю, уже голова плавится. записываю в БД так:
                    //Смена пароля
                    else if($mass_type == 18){
                    $pass = md5($_POST[pass]);
                    $db->query("UPDATE `".PREFIX."_users` SET user_password='$pass' WHERE user_id = '".$user_id."'");
                    };
вот форма для ввода нового пароля:
                //Смена пароля
                else if($mass_type == 18)
                msgbox('Смена пароля', '<form method="POST" action="?mod=massaction&act=users">Введите новый пароль: <input type="text" value="" class="inpu" name="pass" style="width:80px" /> <input type="submit" value="Сменить" class="inp" /><input type="hidden" value="19" name="mass_type" />'.$inputUlist.'</form>', '?mod=users');
                else if($mass_type == 19)
                msgbox('Смена пароля', 'Смена пароля прошла успешно', '?mod=users');
но в БД записивате d41d8cd98f00b204e9800998ecf8427e перевел на cmd5.ru этот хеш, пишет что это [空密码]/[Empty String] я так понимаю проблема в форме, я немогу взять из формы pass подскажите пожалуйста, как это сделать?


tdo22

tdo22, вы что правильно он все записывает! d41d8cd98f00b204e9800998ecf8427e это и есть md5 теперь когда вы входите, в условии надо чтобы введенный пароль переводился в md5 и сравнивался с тем что в базе сидит.


tdo22

d41d8cd98f00b204e9800998ecf8427e записывает в любом случае, даже если я введу другой пароль в переменную $pass я так понимаю ничто не записывается но где ошибка ?


tdo22

d41d8cd98f00b204e9800998ecf8427e записывает в любом случае, даже если я введу другой пароль в переменную $pass я так понимаю ничто не записывается но где ошибка ?
//Смена пароля
                    else if($mass_type == 18){
                    $pass = md5($_POST['pass']);
                    $db->query("UPDATE `".PREFIX."_users` SET user_password='$pass' WHERE user_id = '".$user_id."'");
                    };
Так попробуйте


tdo22

не работает( далее записывает в БД d41d8cd98f00b204e9800998ecf8427e