Proxy Posted April 15, 2014 Report Share Posted April 15, 2014 Здравствуйте, сервер на котором находится сайт временно попал в черный список почтовиков.В связи с эти письма не доходят до пользователей.Один из покупателей попросил помочь ему восстановить пароль, но письма со ссылкой на восстановление к нему не доходят.Как можно сейчас оперативно помочь человеку изменить пароль другими средствами?Заранее спасибо! Quote Link to post Share on other sites
mishanya Posted April 15, 2014 Report Share Posted April 15, 2014 Здравствуйте, сервер на котором находится сайт временно попал в черный список почтовиков.В связи с эти письма не доходят до пользователей.Один из покупателей попросил помочь ему восстановить пароль, но письма со ссылкой на восстановление к нему не доходят.Как можно сейчас оперативно помочь человеку изменить пароль другими средствами?Заранее спасибо!что мешает сделать вам запрос к базе данных на изменение пароля? UPDATE s_users SET password=md5('hello') WHERE id=2 где hello - новый пароль, id=2 - это айди пользователя, его в базе можно узнать по имени. или просто написать вместо WHERE id=2 вот это WHERE name='name' Quote Link to post Share on other sites
mishanya Posted April 15, 2014 Report Share Posted April 15, 2014 а Симпла не шифрует в md5? Quote Link to post Share on other sites
sell-studio Posted April 15, 2014 Report Share Posted April 15, 2014 шифрует только с солью private $salt = '8e86a279d6e182b3c811c559e6b15484'; метод md5($this->salt.$user['password'].md5($user['password'])) Quote Link to post Share on other sites
Noxter Posted April 15, 2014 Report Share Posted April 15, 2014 шифрует только с солью private $salt = '8e86a279d6e182b3c811c559e6b15484'; метод md5($this->salt.$user['password'].md5($user['password']))Еще один. Для каждого домена своя соль, формируется она из config/config.PHP. Quote Link to post Share on other sites
sell-studio Posted April 15, 2014 Report Share Posted April 15, 2014 Еще один. Для каждого домена своя соль, формируется она из config/config.PHP. Может для начала изучите api/Users.php/ после чего уже будете свои не далёкие умозаключения тут писать? Открываем только что скаченный архив с сайта simplacms.ru, распаковываем simpla_source и идём simpla_source/api/Users.php. Открыли? <?php /** * Simpla CMS * * @copyright 2011 Denis Pikusov * @link http://simplacms.ru * @author Denis Pikusov * */ require_once('Simpla.php'); class Users extends Simpla { // осторожно, при изменении соли испортятся текущие пароли пользователей private $salt = '8e86a279d6e182b3c811c559e6b15484'; function get_users($filter = array()) { $limit = 1000; $page = 1; $group_id_filter = ''; $keyword_filter = ''; if(isset($filter['limit'])) $limit = max(1, intval($filter['limit'])); if(isset($filter['page'])) $page = max(1, intval($filter['page'])); if(isset($filter['group_id'])) $group_id_filter = $this->db->placehold('AND u.group_id in(?@)', (array)$filter['group_id']); if(isset($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) $keyword_filter .= $this->db->placehold('AND (u.name LIKE "%'.$this->db->escape(trim($keyword)).'%" OR u.email LIKE "%'.$this->db->escape(trim($keyword)).'%" OR u.last_ip LIKE "%'.$this->db->escape(trim($keyword)).'%")'); } $order = 'u.name'; if(!empty($filter['sort'])) switch ($filter['sort']) { case 'date': $order = 'u.created DESC'; break; case 'name': $order = 'u.name'; break; } $sql_limit = $this->db->placehold(' LIMIT ?, ? ', ($page-1)*$limit, $limit); // Выбираем пользователей $query = $this->db->placehold("SELECT u.id, u.email, u.password, u.name, u.group_id, u.enabled, u.last_ip, u.created, g.discount, g.name as group_name FROM __users u LEFT JOIN __groups g ON u.group_id=g.id WHERE 1 $group_id_filter $keyword_filter ORDER BY $order $sql_limit"); $this->db->query($query); return $this->db->results(); } function count_users($filter = array()) { $group_id_filter = ''; $keyword_filter = ''; if(isset($filter['group_id'])) $group_id_filter = $this->db->placehold('AND u.group_id in(?@)', (array)$filter['group_id']); if(isset($filter['keyword'])) { $keywords = explode(' ', $filter['keyword']); foreach($keywords as $keyword) $keyword_filter .= $this->db->placehold('AND u.name LIKE "%'.$this->db->escape(trim($keyword)).'%" OR u.email LIKE "%'.$this->db->escape(trim($keyword)).'%"'); } // Выбираем пользователей $query = $this->db->placehold("SELECT count(*) as count FROM __users u LEFT JOIN __groups g ON u.group_id=g.id WHERE 1 $group_id_filter $keyword_filter ORDER BY u.name"); $this->db->query($query); return $this->db->result('count'); } function get_user($id) { if(gettype($id) == 'string') $where = $this->db->placehold(' WHERE u.email=? ', $id); else $where = $this->db->placehold(' WHERE u.id=? ', intval($id)); // Выбираем пользователя $query = $this->db->placehold("SELECT u.id, u.email, u.password, u.name, u.group_id, u.enabled, u.last_ip, u.created, g.discount, g.name as group_name FROM __users u LEFT JOIN __groups g ON u.group_id=g.id $where LIMIT 1", $id); $this->db->query($query); $user = $this->db->result(); if(empty($user)) return false; $user->discount *= 1; // Убираем лишние нули, чтобы было 5 вместо 5.00 return $user; } public function add_user($user) { $user = (array)$user; if(isset($user['password'])) $user['password'] = md5($this->salt.$user['password'].md5($user['password'])); $query = $this->db->placehold("SELECT count(*) as count FROM __users WHERE email=?", $user['email']); $this->db->query($query); if($this->db->result('count') > 0) return false; $query = $this->db->placehold("INSERT INTO __users SET ?%", $user); $this->db->query($query); return $this->db->insert_id(); } public function update_user($id, $user) { $user = (array)$user; if(isset($user['password'])) $user['password'] = md5($this->salt.$user['password'].md5($user['password'])); $query = $this->db->placehold("UPDATE __users SET ?% WHERE id=? LIMIT 1", $user, intval($id)); $this->db->query($query); return $id; } /* * * Удалить пользователя * @param $post * */ public function delete_user($id) { if(!empty($id)) { $query = $this->db->placehold("UPDATE __orders SET user_id=NULL WHERE id=? LIMIT 1", intval($id)); $this->db->query($query); $query = $this->db->placehold("DELETE FROM __users WHERE id=? LIMIT 1", intval($id)); if($this->db->query($query)) return true; } return false; } function get_groups() { // Выбираем группы $query = $this->db->placehold("SELECT g.id, g.name, g.discount FROM __groups AS g ORDER BY g.discount"); $this->db->query($query); return $this->db->results(); } function get_group($id) { // Выбираем группу $query = $this->db->placehold("SELECT * FROM __groups WHERE id=? LIMIT 1", $id); $this->db->query($query); $group = $this->db->result(); return $group; } public function add_group($group) { $query = $this->db->placehold("INSERT INTO __groups SET ?%", $group); $this->db->query($query); return $this->db->insert_id(); } public function update_group($id, $group) { $query = $this->db->placehold("UPDATE __groups SET ?% WHERE id=? LIMIT 1", $group, intval($id)); $this->db->query($query); return $id; } public function delete_group($id) { if(!empty($id)) { $query = $this->db->placehold("UPDATE __users SET group_id=NULL WHERE group_id=? LIMIT 1", intval($id)); $this->db->query($query); $query = $this->db->placehold("DELETE FROM __groups WHERE id=? LIMIT 1", intval($id)); if($this->db->query($query)) return true; } return false; } public function check_password($email, $password) { $encpassword = md5($this->salt.$password.md5($password)); $query = $this->db->placehold("SELECT id FROM __users WHERE email=? AND password=? LIMIT 1", $email, $encpassword); $this->db->query($query); if($id = $this->db->result('id')) return $id; return false; } } О боже 17 строка private $salt = '8e86a279d6e182b3c811c559e6b15484';О боже 108 строка $user['password'] = md5($this->salt.$user['password'].md5($user['password'])); $this->salt - вызывает переменную "salt", объявленную и используемую внутри класса. view/RegisterView.php 36 строка elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'password'=>$password, 'enabled'=>$default_status, 'last_ip'=>$_SERVER['REMOTE_ADDR']))) Из формы регистрации передаётся чистый password в функцию add_user класса users Удачи в матчасти~! Quote Link to post Share on other sites
Noxter Posted April 16, 2014 Report Share Posted April 16, 2014 Может для начала изучите api/Users.php/ после чего уже будете свои не далёкие умозаключения тут писать? Открываем только что скаченный архив с сайта simplacms.ru, распаковываем simpla_source и идём simpla_source/api/Users.php. Открыли? <?php тут очень много кода... ?> О боже 17 строка private $salt = '8e86a279d6e182b3c811c559e6b15484';О боже 108 строка $user['password'] = md5($this->salt.$user['password'].md5($user['password'])); $this->salt - вызывает переменную "salt", объявленную и используемую внутри класса. view/RegisterView.php 36 строка elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'password'=>$password, 'enabled'=>$default_status, 'last_ip'=>$_SERVER['REMOTE_ADDR']))) Из формы регистрации передаётся чистый password в функцию add_user класса usersУдачи в матчасти~! Во первых я изучил симплу еще за долго до того как вы стали селл-студио на этом форуме.Во вторых та соль о которой я писал именно так и формируется как я написал, смотрим в файлы view/LoginView.php и api/Config.php.В третьих если Вы продолжите выражать свои мысли в подобном тоне по отношению ко мне и другим участникам форума, я вынужден буду на какое то время ограничить Вас в кое каких правах.Я надеюсь Вы все поняли? Quote Link to post Share on other sites
Noxter Posted April 16, 2014 Report Share Posted April 16, 2014 Здравствуйте, сервер на котором находится сайт временно попал в черный список почтовиков. В связи с эти письма не доходят до пользователей. Один из покупателей попросил помочь ему восстановить пароль, но письма со ссылкой на восстановление к нему не доходят. Как можно сейчас оперативно помочь человеку изменить пароль другими средствами? Заранее спасибо!Воспользуйтесь решением Корса из второго топика (оно вполне дельное), конечно же если Вам немного пользователей нужно редактировать. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.