Skew4eg
Новичок
Дата регистрации:
11.05.2014 19:28:52
Сообщений: 10
Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.
Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.
Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.
ПодробнееПодпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.
ПодписатьсяПодписавшись по E-mail, Вы будете получать уведомления о новых статьях.
ПодписатьсяДобавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.
Мой аккаунт Моя группаКакая тема Вас интересует больше?
Кто больше молчит, того больше слушают.
Неизвестный
Skew4eg
Новичок
Дата регистрации:
11.05.2014 19:28:52
Сообщений: 10
Skew4eg
Новичок
Дата регистрации:
11.05.2014 19:28:52
Сообщений: 10
public function redirect($link) {
header("Location: $link"
exit;
}
dima9595
Продвинутый
Дата регистрации:
02.12.2012 18:14:26
Сообщений: 57
Skew4eg
Новичок
Дата регистрации:
11.05.2014 19:28:52
Сообщений: 10
dima9595
Продвинутый
Дата регистрации:
02.12.2012 18:14:26
Сообщений: 57
Skew4eg
Новичок
Дата регистрации:
11.05.2014 19:28:52
Сообщений: 10
Skew4eg
Новичок
Дата регистрации:
11.05.2014 19:28:52
Сообщений: 10
<?php
require_once "config_class.php";
class CheckValid {
private $config;
public function __construct() {
$this->config = new Config();
}
public function validID($id) {
if (!$this->isIntNumber($id)) return false;
if ($id <= 0) return false;
return true;
}
public function validLogin($login) {
if ($this->isContainQuotes($login)) return false;
if (preg_match("/^\d*$", $login)) return false;
return $this->validString($login, $this->config->min_login, $this->config->max_login);
}
public function validHash($hash) {
if (!$this->validString($hash, 32, 32)) return false;
if (!$this->isOnlyLettersAndDigits($hash)) return false;
return true;
}
public function validTimeStamp($time) {
return $this->isNoNegativeInteger($time);
}
private function isIntNumber($number) {
if (!is_int($number) && !is_string($number)) return false;
if (!preg_match("/^-?(([1-9][0-9]*|0))$/", $number)) return false;
return true;
}
private function isNoNegativeInteger($number) {
if (!$this->isIntNumber($number)) return false;
if ($number < 0) return false;
return true;
}
private function isOnlyLettersAndDigits($string) {
if (!is_int($string) && (!is_string($string))) return false;
if (!preg_match("/[a-zа-я0-9]*/i", $string)) return false;
return true;
}
private function validString($string, $min_length, $max_length) {
if (!is_string($string)) return false;
if (strlen($string) < $min_length) return false;
if (strlen($string) > $max_length) return false;
return true;
}
private function isContainQuotes($string) {
$array = array("\"", "'", "`", """, "'"
foreach ($array as $key => $value) {
if (strpos($string, $value) !== false) return true;
}
return false;
}
}
?>
DATABASE_CLASS.PHP
<?php
require_once "config_class.php";
require_once "checkvalid_class.php";
class DataBase {
private $config;
private $mysqli;
private $valid;
public function __construct() {
$this->config = new Config();
$this->valid = new CheckValid();
$this->mysqli = new mysqli($this->config->host, $this->config->user, $this->config->password, $this->config->db);
$this->mysqli->query("SET NAMES 'utf8'"
}
private function query($query) {
return $this->mysqli->query($query);
}
private function select($table_name, $fields, $where = "", $order = "", $up = true, $limit = "" {
for ($i = 0; $i < count($fields); $i++) {
if ((strpos($fields[$i], "(" === false) && ($fields[$i] != "*") $fields[$i] = "`".$fields[$i]."`";
}
$fields = implode(",", $fields);
$table_name = $this->config->db_prefix.$table_name;
if (!$order) $order = "ORDER BY `id`";
else {
if ($order != "RAND()" {
$order = "ORDER BY `$order`";
if (!$up) $order .= " DESC";
}
else $order = "ORDER BY $order";
}
if ($limit) $limit = "LIMIT $limit";
if ($where) $query = "SELECT $fields FROM $table_name WHERE $where $order $limit";
else $query = "SELECT $fields FROM $table_name $order $limit";
$result_set = $this->query($query);
if (!$result_set) return false;
$i = 0;
while ($row = $result_set->fetch_assoc()) {
$data[$i] = $row;
$i++;
}
$result_set->close();
return $data;
}
public function insert($table_name, $new_values) {
$table_name = $this->config->db_prefix.$table_name;
$query = "INSERT INTO $table_name (";
foreach ($new_values as $field => $value) $query .= "`".$field."`,";
$query = substr($query, 0, -1);
$query .= " VALUES (";
foreach ($new_values as $value) $query .= "'".addslashes($value)."',";
$query = substr($query, 0, -1);
$query .= "";
return $this->query($query);
}
private function update($table_name, $upd_fields, $where) {
$table_name = $this->config->db_prefix.$table_name;
$query = "UPDATE $table_name SET ";
foreach ($upd_fields as $field => $value) $query .= "`$field` = '".addslashes($value)."',";
$query = substr($query, 0, -1);
if ($where) {
$query .= " WHERE $where";
return $this->query($query);
}
else return false;
}
public function delete($table_name, $where = "" {
$table_name = $this->config->db_prefix.$table_name;
if ($where) {
$query = "DELETE FROM $table_name WHERE $where";
return $this->query($query);
}
else return false;
}
public function deleteAll($table_nae) {
$table_name = $this->config->db_prefix.$table_name;
$query = "TRUNCATE TABLE `$table_name`";
return $this->query($query);
}
public function getField($table_name, $field_out, $field_in, $value_in) {
$data - $this->select($table_name, array($field_out), "`$field_in`='".addslashes($value_in)."'"
if (count($data) != 1) return false;
return $data[0][$field_out];
}
public function getFieldOnID($table_name, $id, $field_out) {
if (!$this->existsID($table_name, $id)) return false;
return $this->getField($table_name, $field_out, "id", $id);
}
public function getAll($table_name, $order, $up) {
return $this->select($table_name, array("*", "", $order, $up);
}
public function getAllOnField($table_name, $field, $value, $order, $up) {
return $this->select($table_name, array("*", "`$field`='".addslashes($value)."'", $order, $up);
}
public function getLastID($table_name) {
$data = $this->select($table_name, array("MAX(`id`)");
return $data[0]["MAX(`id`)"];
}
public function deleteOnID($table_name, $id) {
if (!$this->existsID($table_name, $id)) return false;
return $this->delete($table_name, "`id` = '$id'"
}
public function setField($table_name, $field, $field, $value, $field_in, $value_in) {
return $this->update($table_name, array($field => $value), "`$field_in` = '".addslashes($value_in)."'"
}
public function setFieldOnID($table_name, $id, $field, $value) {
if (!$this->existsID($table_name, $id)) return false;
return $this->setField($table_name, $field, $value, "id", $id);
}
public function getElementOnID($table_name, $id) {
if (!$this->existsID($table_name, $id)) return false;
$arr = $this->select($table_name, array("*", "`id` = '$id'"
return $arr[0];
}
public function getRandomElements($table_name, $count) {
return $this->select($table_name, array("*", "", "RAND()", true, $count);
}
public function getCount($table_name) {
$data = $this->select($table_name, array("COUNT(`id`)");
return $data[0]["COUNT(`id`)"];
}
public function isExists($table_name, $field, $value) {
$data = $this->select($table_name, array("id", "`$field` = '".addslashes($value)."'"
if (count($data) === 0) return false;
return true;
}
private function existsID($table_name, $id) {
if (!$this->valid->validID($id)) return false;
$data = $this->select($table_name, array("id", "`id` = '".addslashes($id)."'"
if (count($data) === 0) return false;
return true;
}
public function __desctruct() {
if ($this->mysqli) $this->mysqli->close();
}
}
?>
MANAGE_CLASS.PHP
<?php
require_once "config_class.php";
require_once "user_class.php";
class Manage {
private $config;
private $user;
private $data;
public function __construct($db) {
//session_start();
$this->config = new Config();
$this->user = new User($db);
$this->data = $this->secureData(array_merge($_POST, $_GET));
}
private function secureData($data) {
foreach($data as $key => $value) {
if (is_array($value)) $this->secureData($value);
else $data[$key] = htmlspecialchars($value);
}
return $data;
}
public function redirect($link) {
header("Location: $link"
exit;
}
public function regUser() {
$link_reg = $this->config->address."?view=reg";
$captcha = $this->data["captcha"];
if (($_SESSION["rand"] != $captcha) && ($_SESSION["rand"] != "") {
return $this->returnMessage("ERROR_CAPTCHA", $link_reg);
}
$login = $this->data["login"];
if ($this->user->isExistsUser($login)) return $this->returnMessage("EXISTS_LOGIN", $link_reg);
$password = $this->data["password"];
if ($password == "" return $this->unknownError($link_reg);
$password = $this->hashPassword($password);
$result = $this->user->addUser($login, $password, time());
if ($result) return $this->returnPageMessage("SUCCESS_REG", $this->config->address."?view=message"
else return $this->unknownError($link_reg);
}
private function hashPassword($password) {
return md5($password.$this->config->secret);
}
private function unknownError($r) {
return $this->returnMessage("UNKNOWN_ERROR", $r);
}
private function returnMessage($message, $r) {
$_SESSION["message"] = $message;
return $r;
}
private function returnPageMessage($message, $r) {
$_SESSION["page_message"] = $message;
return $r;
}
}
?>
Perri1986
Новичок
Дата регистрации:
14.07.2014 22:59:34
Сообщений: 1
Skew4eg
Новичок
Дата регистрации:
11.05.2014 19:28:52
Сообщений: 10