Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Здравствуйте, сервер на котором находится сайт временно попал в черный список почтовиков.

В связи с эти письма не доходят до пользователей.

Один из покупателей попросил помочь ему восстановить пароль, но письма со ссылкой на восстановление к нему не доходят.

Как можно сейчас оперативно помочь человеку изменить пароль другими средствами?

Заранее спасибо!

 

Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, сервер на котором находится сайт временно попал в черный список почтовиков.

В связи с эти письма не доходят до пользователей.

Один из покупателей попросил помочь ему восстановить пароль, но письма со ссылкой на восстановление к нему не доходят.

Как можно сейчас оперативно помочь человеку изменить пароль другими средствами?

Заранее спасибо!

что мешает сделать вам запрос к базе данных на изменение пароля?

 

 

UPDATE s_users SET password=md5('hello') WHERE id=2

 

 

где hello - новый пароль, id=2 - это айди пользователя, его в базе можно узнать по имени. или просто написать вместо

 

WHERE id=2

 

вот это

 

WHERE name='name'
Ссылка на сообщение
Поделиться на другие сайты

шифрует только с солью

 

private $salt = '8e86a279d6e182b3c811c559e6b15484';

 

метод

 

md5($this->salt.$user['password'].md5($user['password']))

Еще один. Для каждого домена своя соль, формируется она из config/config.PHP.
Ссылка на сообщение
Поделиться на другие сайты

 

Еще один. Для каждого домена своя соль, формируется она из 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

 

 

 

Удачи в матчасти~!

Ссылка на сообщение
Поделиться на другие сайты

Может для начала изучите 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.

В третьих если Вы продолжите выражать свои мысли в подобном тоне по отношению ко мне и другим участникам форума, я вынужден буду на какое то время ограничить Вас в кое каких правах.

Я надеюсь Вы все поняли?

Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, сервер на котором находится сайт временно попал в черный список почтовиков.

В связи с эти письма не доходят до пользователей.

Один из покупателей попросил помочь ему восстановить пароль, но письма со ссылкой на восстановление к нему не доходят.

Как можно сейчас оперативно помочь человеку изменить пароль другими средствами?

Заранее спасибо!

Воспользуйтесь решением Корса из второго топика (оно вполне дельное), конечно же если Вам немного пользователей нужно редактировать.
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...