Ruxxay
Ученик
Добрый день уважаемые павноинфовцы.
Завалялась ненужный класс по смене ника через UCP. Если кому нужно, забирайте. Так же могу помочь в установке.
Завалялась ненужный класс по смене ника через 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']);
?>
