Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Класс смены ника через UCP

Статус
В этой теме нельзя размещать новые ответы.

Ruxxay

Ученик
Добрый день уважаемые павноинфовцы.

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

PHP:
<?php

session_start();

# Подключение к Базе Данных
class DataBase {

	protected $host      = 'host';
	protected $login     = 'username';
	protected $password  = 'password';
	protected $db        = 'project_db';	

	public function connect() {
		$mysqli = new mysqli($this->host, $this->login, $this->password, $this->db);
		if (!$mysqli->connect_error) {
    		return $mysqli;
		} else {
			die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
		}
	}
}

# Класс смены ника за определенную стоимость
Class changeNickname {

	private $cost        = '100';                   # Стоимость смены ника
	private $nickname    = $_SESSION['nickname'];   # Имя персонажа, которому мы будем менять ник

	private $newNickname;                           # Новый ник для пользователя

	private $mysqli;

	# Информация о ячейках в вашей базе
	private $usersTable  = 'usersTable';            # Название таблицы данных персонажа в вашей базе
	private $username    = 'nickname';              # Название ячейки имени персонажа в вашей базе
	private $money       = 'bankMoney';             # Название ячейки денег персонада в вашей базе

	private $errors;                                # Массив с ошибками
	

	function __construct($newNickname) {
		
		if ($this->isCorrect($newNickname)) {
			$this->db_connect();                    # Подключаемся к Базе Данных
			if ($this->isNewNicknameIsset()) {             # Если пользователь отправил Никнейм, на который он хотел бы сменить свой ник и если такого нет уже в базе
				if ($this->checkUserMoney()) {             # Достаточно у пользователя  денег, чтобы поменять никнейм?
					$this->updateUserNickname();           # Все проверки пройдены, обновляем баланс человека и присваеваем ему новый никнейм
				}
			}
		}

	}

	function __destruct() {

		if (count($this->errors)) {
			foreach($errors as $err) {
				'- '.$err.'<br />';
			}
		} else {
			echo 'Вы успешно поменяли никнейм';
			$_SESSION['nickname'] = $newNickname;
		}

	}

	private function isCorrect() {

		# Допустимые символы:
		# 1) Цифры (0-9)
		# 2) Буквы (a-z нижний регистр)
		# 3) Буквы (A-Z верхний регистр)
		# 4) Символы "-", "_"

		if (preg_match('/^[0-9a-zA-Z\-\_]+$/', $this->newNickname)) {
			return true;
		}

	}

	private function isNewNicknameIsset() {

		if ($newNickname) { # Если пользователь отправил новый никнейм
			
			$data = $this->mysqli->query("SELECT ".$this->nickname." FROM ".$this->usersTable." WHERE `".$this->username."` = '".$this->newNickname."';");
			if ($mysqli->errno) {
				die('Select Error (' . $mysqli->errno . ') ' . $mysqli->error);
			}

			$data = $this->mysqli->fect_array($data);
			if ($data[$this->nickname]) {
				$this->errors[] = 'Такой Nickname уже занят';
			} else {
				$this->newNickname = $newNickname;
				return true;	
			}
		}

	}

	private function checkUserMoney() { # Проверяем, достаточно ли у пользователя денег

		$data = $this->mysqli->query("SELECT `".$this->money."` FROM ".$this->usersTable." WHERE `".$this->username."` = '".$this->nickname."';");
		if ($mysqli->errno) {
			die('Select Error (' . $mysqli->errno . ') ' . $mysqli->error);
		}

		$data = $this->mysqli->fect_array($data);
		if ($data[$this->money] > $this->cost) {
			return true;
		} else {
			$this->errors[] = 'У вас недостаточно денег';
		}


	}

	private function updateUserNickname() {

		$this->mysqli->query("UPDATE ".$this->usersTable." SET `".$this->money."` = '".$this->money."'' - '".$this->cost."', `".$this->username."` = '".$this->newNickname."';");
		if ($mysqli->errno) {
			die('Упс... что-то пошло не так. (' . $mysqli->errno . ') ' . $mysqli->error);
		}

	}

	private function db_connect() {
		$db = new DataBase;
		$this->mysqli = $db->connect();
	}

}

$obj = new changeNickname($_POST['newNickname']);

?>
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу