12 subscribers
182 photos
3 videos
212 links
Programmer - Курсы программирования. Канал для тех, кто не хочет остаться на задворках цивилизации.
Download Telegram
WordPress 4. Пример создания блога
Известно ли Вам, что для создания качественного сайта вовсе не нужно знать кучу всяких языков по типу HTML, CSS, JavaScript, PHP и прочих премудростей?

Пожалуй, самый простой способ создания сайта, при этом занимающий минимум времени и при этом не требующий особых знаний, это создание сайта на готовом движке - CMS. Различных CMS очень много, но я рекомендую Вам использовать WordPress, поскольку он самый популярный, а потому постоянно обновляется, имеет десятки тысяч расширений и огромную аудиторию, которая Вам поможет и подскажет, если вдруг возникнут какие-то вопросы.

Возможно, у Вас остался 1 вопрос: "А как мне научиться создавать сайты на WordPress, ведь я раньше никогда этого не делал?".

Информации в Интернете очень много, поэтому если покопаться, то можете и найти. А для тех, кому дорого время, и он хочет получить всё и сразу, рекомендую вот этот курс: https://Hottab.programsite.ru/wp

Автор данного курса уже зарекомендовал себя как отличного специалиста в области создания сайтов. Что касается курса, то он идёт всего несколько часов и посмотреть его можно за 1 вечер. А вот после просмотра Вы уже легко сможете создавать любые сайты на WordPress.

Я этот курс уже приобрёл и посмотрел, и остался очень и очень доволен, чего и Вам желаю: https://Hottab.programsite.ru/wp.
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 25: Работа с базами данных (PDO и ORM) 🐘

В этой главе мы углубимся в работу с базами данных в PHP. Вы узнаете, как использовать PDO (PHP Data Objects) для безопасного взаимодействия с базами данных, а также познакомитесь с основами ORM (Object-Relational Mapping).

---

### 1. PDO: Подключение к базе данных
PDO — это универсальный интерфейс для работы с различными СУБД (MySQL, PostgreSQL, SQLite и др.).

#### Подключение к MySQL
<?php
$host = 'localhost';
$dbname = 'my_database';
$username = 'root';
$password = '';

try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Подключение успешно!";
} catch (PDOException $e) {
echo "Ошибка подключения: " . $e->getMessage();
}
?>


---

### 2. Выполнение запросов
#### SELECT
<?php
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "Имя: " . $row['name'] . ", Возраст: " . $row['age'] . "<br>";
}
?>


#### INSERT
<?php
$name = "Иван";
$age = 25;

$stmt = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
$stmt->execute(['name' => $name, 'age' => $age]);
echo "Запись добавлена!";
?>


#### UPDATE
<?php
$id = 1;
$newAge = 30;

$stmt = $pdo->prepare("UPDATE users SET age = :age WHERE id = :id");
$stmt->execute(['age' => $newAge, 'id' => $id]);
echo "Запись обновлена!";
?>


#### DELETE
<?php
$id = 1;

$stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");
$stmt->execute(['id' => $id]);
echo "Запись удалена!";
?>


---

### 3. Транзакции
Транзакции позволяют выполнять несколько запросов как единое целое. Если один запрос завершится ошибкой, все изменения откатываются.

Пример:
<?php
try {
$pdo->beginTransaction();

$stmt1 = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
$stmt1->execute(['name' => 'Иван', 'age' => 25]);

$stmt2 = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
$stmt2->execute(['name' => 'Мария', 'age' => 30]);

$pdo->commit();
echo "Транзакция успешно завершена!";
} catch (Exception $e) {
$pdo->rollBack();
echo "Ошибка: " . $e->getMessage();
}
?>


---

### 4. ORM: Введение
ORM (Object-Relational Mapping) — это технология, которая позволяет работать с базой данных как с объектами в коде. Популярные ORM для PHP: Eloquent (Laravel), Doctrine.

#### Пример с Eloquent
1. Установите Eloquent через Composer:

   composer require illuminate/database

2. Настройка:

   <?php
require 'vendor/autoload.php';

use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;

$capsule->addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'my_database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
]);

$capsule->setAsGlobal();
$capsule->bootEloquent();
?>

3. Создание модели:

   <?php
class User extends Illuminate\Database\Eloquent\Model {
protected $table = 'users';
}

$users = User::all();
foreach ($users as $user) {
echo "Имя: " . $user->name . ", Возраст: " . $user->age . "<br>";
}
?>


---

### 5. Миграции
Миграции позволяют управлять структурой базы данных через код.

#### Пример с Eloquent
1. Создайте миграцию:

   <?php
use Illuminate\Database\Capsule\Manager as Capsule;

Capsule::schema()->create('users', function ($table) {
$table->increments('id');
$table->string('name');
$table->integer('age');
$table->timestamps();
});
?>

2. Примените миграцию:

   <?php
Capsule::schema()->create('users', function ($table) {
$table->increments('id');
$table->string('name');
$table->integer('age');
$table->timestamps();
});
?>


---
🎯 Что дальше?
В следующей главе мы изучим работу с API, включая создание и использование RESTful API. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения! 🚀

#PHP #БазыДанных #PDO #ORM #Программирование #Телеграм

Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
Пример создания блога на WordPress 4

Недавно передо мной встала задача по освоению WordPress. Я его скачал в Интернете, но что с ним делать, как его устанавливать и что вообще нужно делать дальше, я не знал. Тогда я начал искать информацию в Интернете. Но ничего толкового не нашёл, пока не наткнулся на один видеоурок.

Вот ссылка на него: https://Hottab.programsite.ru/freewp

Видео длится всего 25 минут, но в нём показан полностью процесс установки и настройки WordPress. Причём всё разбирается по шагам, и поймут материал вообще все, кто хотя бы умеет читать и писать.

Автор просто показал в видеоформате процесс создания блога на WordPress. И мне оставалось лишь повторять всё за ним.

В общем, если Вы хотите изучить WordPress и научиться создавать на нём сайты, как это было нужно мне, то Вам понравится это видео: https://Hottab.programsite.ru/freewp

Тем более, что оно абсолютно бесплатное.

Успехов!
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 26: Создание и использование RESTful API 🐘

В этой главе мы рассмотрим, как создавать и использовать RESTful API на PHP. API (Application Programming Interface) позволяет приложениям взаимодействовать друг с другом. Мы изучим основы REST, создадим простое API и научимся его использовать.

---

### 1. Что такое RESTful API?
REST (Representational State Transfer) — это архитектурный стиль для создания веб-сервисов. RESTful API использует HTTP-методы (GET, POST, PUT, DELETE) для выполнения операций с ресурсами.

---

### 2. Создание простого RESTful API
#### Шаг 1: Настройка маршрутов
Создайте файл index.php и настройте маршруты:
<?php
header("Content-Type: application/json");

$request_method = $_SERVER['REQUEST_METHOD'];
$request_uri = $_SERVER['REQUEST_URI'];

switch ($request_method) {
case 'GET':
if ($request_uri == '/users') {
getUsers();
} elseif (preg_match('/\/users\/(\d+)/', $request_uri, $matches)) {
getUser($matches[1]);
}
break;
case 'POST':
if ($request_uri == '/users') {
createUser();
}
break;
default:
http_response_code(405);
echo json_encode(["message" => "Метод не поддерживается"]);
}
?>


#### Шаг 2: Функции для обработки запросов
<?php
function getUsers() {
$users = [
["id" => 1, "name" => "Иван"],
["id" => 2, "name" => "Мария"]
];
echo json_encode($users);
}

function getUser($id) {
$users = [
1 => ["id" => 1, "name" => "Иван"],
2 => ["id" => 2, "name" => "Мария"]
];
if (isset($users[$id])) {
echo json_encode($users[$id]);
} else {
http_response_code(404);
echo json_encode(["message" => "Пользователь не найден"]);
}
}

function createUser() {
$data = json_decode(file_get_contents("php://input"), true);
if (isset($data['name'])) {
echo json_encode(["message" => "Пользователь создан", "name" => $data['name']]);
} else {
http_response_code(400);
echo json_encode(["message" => "Неверные данные"]);
}
}
?>


---

### 3. Использование API
#### GET-запрос (получение списка пользователей)
curl -X GET http://localhost/users

Ответ:
[
{"id": 1, "name": "Иван"},
{"id": 2, "name": "Мария"}
]


#### GET-запрос (получение одного пользователя)
curl -X GET http://localhost/users/1

Ответ:
{"id": 1, "name": "Иван"}


#### POST-запрос (создание пользователя)
curl -X POST -H "Content-Type: application/json" -d '{"name": "Алексей"}' http://localhost/users

Ответ:
{"message": "Пользователь создан", "name": "Алексей"}


---

### 4. Обработка ошибок
- 404 Not Found: Ресурс не найден.
- 400 Bad Request: Неверные данные.
- 405 Method Not Allowed: Метод не поддерживается.

Пример:
<?php
http_response_code(404);
echo json_encode(["message" => "Ресурс не найден"]);
?>


---

### 5. Работа с JSON
PHP предоставляет функции для работы с JSON:
- json_encode(): Преобразует массив в JSON.
- json_decode(): Преобразует JSON в массив.

Пример:
<?php
$data = ["name" => "Иван", "age" => 25];
$json = json_encode($data);
echo $json; // {"name":"Иван","age":25}

$array = json_decode($json, true);
print_r($array); // Array ( [name] => Иван [age] => 25 )
?>


---

### 6. Авторизация и токены
Для защиты API часто используются токены (например, JWT).

#### Пример с JWT
1. Установите библиотеку для работы с JWT:

   composer require firebase/php-jwt

2. Создайте токен:

   <?php
use Firebase\JWT\JWT;

$key = "your_secret_key";
$payload = [
"user_id" => 1,
"username" => "Иван"
];
$jwt = JWT::encode($payload, $key);
echo $jwt;
?>

3. Проверка токена:

   <?php
try {
$decoded = JWT::decode($jwt, $key, array('HS256'));
print_r($decoded);
} catch (Exception $e) {
http_response_code(401);
echo json_encode(["message" => "Ошибка авторизации"]);
}
?>


---
🎯 Что дальше?
В следующей главе мы изучим работу с файлами и загрузкой данных на сервер. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения! 🚀

#PHP #API #RESTful #Программирование #Телеграм

Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
Заработок на создании сайтов под заказ
У меня часто спрашивают, как можно хорошо зарабатывать, не выходя из дома? Можно, конечно, создать сайт и зарабатывать на рекламе, однако, этот способ сложный, так как раскрутить сайт очень сложно и очень долго.

Поэтому своим друзьям я рекомендую попытаться заработать на фрилансе. Потому что если Вы хороший специалист в своём деле, то раскрутитесь обязательно. Но как ускорить этот процесс? Ведь 99% терпят неудачу.

На мой взгляд, в таких делах могут помочь только те, кто сам раскрутился с нуля. Одним из таких специалистов является Михаил Русаков. И он недавно выпустил курс "Заработок на создании сайтов под заказ", в котором и рассказывает все секреты: как правильно заполнить профиль, как писать заказчику, какие ошибки являются грубейшими и которые допускают практически все. И отличной фишкой курса является то, что в нём рассказываются секреты быстрой раскрутки своего аккаунта на фрилансе. Вот ссылка на этот курс: https://Hottab.programsite.ru/fl

Я курс уже просмотрел, и подтверждаю, что информация в нём содержится уникальная, мега-полезная и основанная на собственном опыте автора: https://Hottab.programsite.ru/fl.
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 27: Работа с файлами и загрузка данных на сервер 🐘

В этой главе мы рассмотрим, как работать с файлами в PHP, включая загрузку файлов на сервер, чтение и запись данных, а также управление файловой системой. Эти навыки необходимы для создания функциональных веб-приложений.

---

### 1. Загрузка файлов на сервер
PHP позволяет загружать файлы на сервер через HTML-форму.

#### HTML-форма
<form action="upload.php" method="post" enctype="multipart/form-data">
Выберите файл: <input type="file" name="file">
<input type="submit" value="Загрузить">
</form>


#### Обработка загрузки (upload.php)
<?php
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
$upload_dir = 'uploads/';
$upload_file = $upload_dir . basename($_FILES['file']['name']);

if (move_uploaded_file($_FILES['file']['tmp_name'], $upload_file)) {
echo "Файл успешно загружен!";
} else {
echo "Ошибка при загрузке файла!";
}
} else {
echo "Ошибка: " . $_FILES['file']['error'];
}
?>


---

### 2. Чтение и запись файлов
PHP предоставляет функции для работы с файлами.

#### Чтение файла
<?php
$file = fopen("example.txt", "r") or die("Не удалось открыть файл!");
echo fread($file, filesize("example.txt"));
fclose($file);
?>


#### Запись в файл
<?php
$file = fopen("example.txt", "w") or die("Не удалось открыть файл!");
$text = "Привет, мир!";
fwrite($file, $text);
fclose($file);
?>


---

### 3. Работа с директориями
PHP позволяет создавать, удалять и переименовывать директории.

#### Создание директории
<?php
if (!file_exists("new_dir")) {
mkdir("new_dir");
echo "Директория создана!";
} else {
echo "Директория уже существует!";
}
?>


#### Удаление директории
<?php
if (file_exists("new_dir")) {
rmdir("new_dir");
echo "Директория удалена!";
} else {
echo "Директория не существует!";
}
?>


#### Переименование директории
<?php
if (file_exists("old_dir")) {
rename("old_dir", "new_dir");
echo "Директория переименована!";
} else {
echo "Директория не существует!";
}
?>


---

### 4. Работа с CSV
CSV (Comma-Separated Values) — это формат для хранения табличных данных.

#### Чтение CSV
<?php
$file = fopen("data.csv", "r");
while (($data = fgetcsv($file, 1000, ",")) !== FALSE) {
print_r($data);
}
fclose($file);
?>


#### Запись в CSV
<?php
$file = fopen("data.csv", "w");
$data = [
["Иван", 25],
["Мария", 30]
];
foreach ($data as $row) {
fputcsv($file, $row);
}
fclose($file);
?>


---

### 5. Работа с JSON
JSON (JavaScript Object Notation) — это популярный формат для обмена данными.

#### Чтение JSON
<?php
$json = '{"name": "Иван", "age": 25}';
$array = json_decode($json, true);
print_r($array);
?>


#### Запись JSON
<?php
$array = ["name" => "Иван", "age" => 25];
$json = json_encode($array);
echo $json;
?>


---

### 6. Управление файловой системой
PHP предоставляет функции для работы с файловой системой.

#### Проверка существования файла
<?php
if (file_exists("example.txt")) {
echo "Файл существует!";
} else {
echo "Файл не существует!";
}
?>


#### Получение размера файла
<?php
echo "Размер файла: " . filesize("example.txt") . " байт";
?>


#### Удаление файла
<?php
if (unlink("example.txt")) {
echo "Файл удалён!";
} else {
echo "Ошибка при удалении файла!";
}
?>


---

🎯 Что дальше?
В следующей главе мы изучим работу с сессиями и куками, а также управление состоянием пользователя. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения! 🚀

#PHP #Файлы #Загрузка #Программирование #Телеграм

Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
Инструкция по заработку на создании сайтов под заказ
У меня часто спрашивают, как можно хорошо зарабатывать, не выходя из дома? Можно, конечно, создать сайт и зарабатывать на рекламе, однако, этот способ сложный, так как раскрутить сайт очень сложно и очень долго.

Поэтому своим друзьям я рекомендую попытаться заработать на фрилансе. Потому что если Вы хороший специалист в своём деле, то раскрутитесь обязательно. Но как ускорить этот процесс? Ведь 99% терпят неудачу.

На мой взгляд, в таких делах могут помочь только те, кто сам раскрутился с нуля. Одним из таких специалистов является Михаил Русаков. И он недавно выпустил бесплатную пошаговую инструкцию по заработку на создании сайтов под заказ: https://Hottab.programsite.ru/freefl

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

Сама инструкция и урок к ней абсолютно бесплатны. Получить их можно здесь: https://Hottab.programsite.ru/freefl
Фреймворк Yii 2.0 с нуля. Пример создания сайта
У меня иногда спрашивают: "А как ты создаёшь свои сайты?". Вариантов создания несколько: воспользоваться готовым движком, создавать всё самому с нуля, использовать фреймворк.

Создавать на готовом движке - самый быстрый и самый худший вариант в плане конечного результата. Низкая безопасность, ограниченная функциональность, постоянная зависимость от разработчиков данного движка.

Свой движок - самый лучший, но ОЧЕНЬ трудозатратный вариант. Да, здесь будет наилучшая производительность, максимальная безопасность, но количество времени, которое будет потрачено на всё это, не так просто будет окупить.

Использование фреймворков - на мой взгляд, золотая середина. И именно с помощью фреймворков я и создаю свои сайты. Здесь и лёгкость создания, и высокая безопасность, и хорошая производительность сайта.

Из всех фреймворков я остановился на Yii - как на наиболее популярном в Рунете (особенно актуально для тех, кто хочет найти работу), а также как на наиболее производительном.

Помню я пытался изучать его самостоятельно, по книгам, но потерпел фиаско. Поскольку это был мой первый фреймворк, мне он давался крайне трудно, и тогда мне на помощь пришёл Видеокурс Михаила Русакова "Фреймворк Yii 2.0. Пример создания сайта": https://Hottab.programsite.ru/yii

Курс проходится за несколько вечеров, а знания, которые там даются, я не смог получить и за 3 месяца обучения по книгам (тем более, что они все устаревшие).

В общем, выражаю свою огромную признательность и благодарность Михаилу Юрьевичу за такой прекрасный курс, и я всем всегда его рекомендую, как наилучший способ научиться создавать сайты на фреймворке Yii: https://Hottab.programsite.ru/yii
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 28: Работа с сессиями и куками 🐘

В этой главе мы рассмотрим, как управлять состоянием пользователя с помощью сессий и кук. Эти технологии позволяют сохранять данные между запросами, что особенно полезно для авторизации, корзин покупок и персонализации.

---

### 1. Сессии
Сессии позволяют хранить данные на сервере для каждого пользователя. Каждая сессия имеет уникальный идентификатор, который передаётся через куки.

#### Начало сессии
<?php
session_start();
?>


#### Сохранение данных в сессии
<?php
session_start();
$_SESSION['username'] = "Иван";
echo "Данные сохранены в сессии!";
?>


#### Получение данных из сессии
<?php
session_start();
if (isset($_SESSION['username'])) {
echo "Привет, " . $_SESSION['username'] . "!";
} else {
echo "Сессия не найдена!";
}
?>


#### Удаление данных из сессии
<?php
session_start();
unset($_SESSION['username']);
echo "Данные удалены из сессии!";
?>


#### Завершение сессии
<?php
session_start();
session_destroy();
echo "Сессия завершена!";
?>


---

### 2. Куки
Куки позволяют хранить данные на стороне клиента. Они могут быть использованы для персонализации или отслеживания пользователей.

#### Установка куки
<?php
setcookie("username", "Иван", time() + 3600, "/");
echo "Кука установлена!";
?>


#### Получение данных из куки
<?php
if (isset($_COOKIE['username'])) {
echo "Привет, " . $_COOKIE['username'] . "!";
} else {
echo "Кука не найдена!";
}
?>


#### Удаление куки
<?php
setcookie("username", "", time() - 3600, "/");
echo "Кука удалена!";
?>


---

### 3. Пример: Авторизация с использованием сессий
#### Форма входа
<form action="login.php" method="post">
Имя пользователя: <input type="text" name="username">
Пароль: <input type="password" name="password">
<input type="submit" value="Войти">
</form>


#### Обработка входа (login.php)
<?php
session_start();

$username = $_POST['username'];
$password = $_POST['password'];

// Проверка логина и пароля (пример)
if ($username === "Иван" && $password === "12345") {
$_SESSION['username'] = $username;
echo "Вход выполнен!";
} else {
echo "Неверные данные!";
}
?>


#### Проверка авторизации
<?php
session_start();

if (isset($_SESSION['username'])) {
echo "Привет, " . $_SESSION['username'] . "!";
} else {
echo "Пожалуйста, войдите в систему.";
}
?>


#### Выход из системы
<?php
session_start();
session_destroy();
echo "Вы вышли из системы!";
?>


---

### 4. Пример: Запоминание пользователя с использованием кук
#### Установка куки при входе
<?php
$username = $_POST['username'];
$password = $_POST['password'];

if ($username === "Иван" && $password === "12345") {
setcookie("username", $username, time() + 3600, "/");
echo "Вход выполнен!";
} else {
echo "Неверные данные!";
}
?>


#### Проверка куки
<?php
if (isset($_COOKIE['username'])) {
echo "Привет, " . $_COOKIE['username'] . "!";
} else {
echo "Пожалуйста, войдите в систему.";
}
?>


---

### 5. Безопасность
- Сессии: Используйте session_regenerate_id() для предотвращения фиксации сессии.
- Куки: Устанавливайте флаг HttpOnly и Secure для защиты от XSS и перехвата.

  setcookie("username", "Иван", time() + 3600, "/", "", true, true);


---

🎯 Что дальше?
В следующей главе мы изучим работу с базами данных, включая PDO и ORM. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения! 🚀

#PHP #Сессии #Куки #Программирование #Телеграм

Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
Создание Интернет-магазина на OpenCart 2.0

Наверняка, многие из Вас хотят создать свой Интернет-магазин, либо, как минимум, интересуются этой темой. И, безусловно, у Вас нет 100-200, а то и более тысяч рублей на его создание у Web-студии. Поэтому в сегодняшней статье я решил рассказать, как это можно сделать с минимальными вложениями.

Наиболее простой способ создать Интернет-магазин - это использовать движок OpenCart, благо он бесплатный. Но им тоже нужно уметь пользоваться, и с этим могут возникнуть проблемы.

Но недавно я натолкнулся на курс от Михаила Русакова: https://Hottab.programsite.ru/im2

Особенностью данного курса является то, что автор рассматривает абсолютно все возможности OpenCart, а потом создаёт на этой системе работающий Интернет-магазин: mob-24.ru.

Полностью пройти этот курс и научиться делать любые Интернет-магазины можно всего за неделю.

Лично я прошёл этот курс на одном дыхании, всего за 1 вечер, а знания и практический опыт, особенно в области маркетинга, получил на всю жизнь: https://Hottab.programsite.ru/im2
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 29: Работа с базами данных (PDO и ORM) 🐘

В этой главе мы углубимся в работу с базами данных в PHP. Вы узнаете, как использовать PDO (PHP Data Objects) для безопасного взаимодействия с базами данных, а также познакомитесь с основами ORM (Object-Relational Mapping).

---

### 1. PDO: Подключение к базе данных
PDO — это универсальный интерфейс для работы с различными СУБД (MySQL, PostgreSQL, SQLite и др.).

#### Подключение к MySQL
<?php
$host = 'localhost';
$dbname = 'my_database';
$username = 'root';
$password = '';

try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Подключение успешно!";
} catch (PDOException $e) {
echo "Ошибка подключения: " . $e->getMessage();
}
?>


---

### 2. Выполнение запросов
#### SELECT
<?php
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "Имя: " . $row['name'] . ", Возраст: " . $row['age'] . "<br>";
}
?>


#### INSERT
<?php
$name = "Иван";
$age = 25;

$stmt = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
$stmt->execute(['name' => $name, 'age' => $age]);
echo "Запись добавлена!";
?>


#### UPDATE
<?php
$id = 1;
$newAge = 30;

$stmt = $pdo->prepare("UPDATE users SET age = :age WHERE id = :id");
$stmt->execute(['age' => $newAge, 'id' => $id]);
echo "Запись обновлена!";
?>


#### DELETE
<?php
$id = 1;

$stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");
$stmt->execute(['id' => $id]);
echo "Запись удалена!";
?>


---

### 3. Транзакции
Транзакции позволяют выполнять несколько запросов как единое целое. Если один запрос завершится ошибкой, все изменения откатываются.

Пример:
<?php
try {
$pdo->beginTransaction();

$stmt1 = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
$stmt1->execute(['name' => 'Иван', 'age' => 25]);

$stmt2 = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
$stmt2->execute(['name' => 'Мария', 'age' => 30]);

$pdo->commit();
echo "Транзакция успешно завершена!";
} catch (Exception $e) {
$pdo->rollBack();
echo "Ошибка: " . $e->getMessage();
}
?>


---

### 4. ORM: Введение
ORM (Object-Relational Mapping) — это технология, которая позволяет работать с базой данных как с объектами в коде. Популярные ORM для PHP: Eloquent (Laravel), Doctrine.

#### Пример с Eloquent
1. Установите Eloquent через Composer:

   composer require illuminate/database

2. Настройка:

   <?php
require 'vendor/autoload.php';

use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;

$capsule->addConnection([
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'my_database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
]);

$capsule->setAsGlobal();
$capsule->bootEloquent();
?>

3. Создание модели:

   <?php
class User extends Illuminate\Database\Eloquent\Model {
protected $table = 'users';
}

$users = User::all();
foreach ($users as $user) {
echo "Имя: " . $user->name . ", Возраст: " . $user->age . "<br>";
}
?>


---

### 5. Миграции
Миграции позволяют управлять структурой базы данных через код.

#### Пример с Eloquent
1. Создайте миграцию:

   <?php
use Illuminate\Database\Capsule\Manager as Capsule;

Capsule::schema()->create('users', function ($table) {
$table->increments('id');
$table->string('name');
$table->integer('age');
$table->timestamps();
});
?>

2. Примените миграцию:

   <?php
Capsule::schema()->create('users', function ($table) {
$table->increments('id');
$table->string('name');
$table->integer('age');
$table->timestamps();
});
?>


---
🎯 Что дальше?
В следующей главе мы изучим работу с API, включая создание и использование RESTful API. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения! 🚀

#PHP #БазыДанных #PDO #ORM #Программирование #Телеграм

Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
Пример создания сайта на фреймворке Yii 2.0

Не секрет, что при устройстве на работу в какую-нибудь Web-студию, да и вообще в любой офис, где так или иначе надо будет заниматься Web-программированием, одним из обязательных условий является знание какого-либо фреймворка. В большинстве случаев, требуют знание Yii.

И всё бы ничего, но изучить его оказалось сложнее, чем я думал, хотя я уже имел неплохой опыт программирования на PHP. Читая документацию на официальном сайте, у меня создавалось впечатление, что её пишут для тех, кто уже знаком с Yii, и читает её лишь для того, чтобы освежить память. Я думал, что меня ждут долгие месяцы обучения, и тут случилось нечто.

Я случайно наткнулся на одно бесплатное видео от Михаила Русакова, где как раз и показан процесс создания сайта на фреймворке Yii: https://Hottab.programsite.ru/freeyii.

Посмотрев это видео, я был в восторге, так как теперь мне всё стало понятно: что, зачем и почему. У Михаила так же есть и полный платный курс по Yii, однако, мне уже даже бесплатного видео хватило, чтобы я начал легко понимать, что написано в документации. Поэтому данное бесплатное видео я рекомендую всем, кому нужно изучить фреймворк Yii: https://Hottab.programsite.ru/freeyii.
This media is not supported in your browser
VIEW IN TELEGRAM
📘 Полное руководство по PHP – Глава 30: Создание и использование RESTful API 🐘

В этой главе мы рассмотрим, как создавать и использовать RESTful API на PHP. API (Application Programming Interface) позволяет приложениям взаимодействовать друг с другом. Мы изучим основы REST, создадим простое API и научимся его использовать.

---

### 1. Что такое RESTful API?
REST (Representational State Transfer) — это архитектурный стиль для создания веб-сервисов. RESTful API использует HTTP-методы (GET, POST, PUT, DELETE) для выполнения операций с ресурсами.

---

### 2. Создание простого RESTful API
#### Шаг 1: Настройка маршрутов
Создайте файл index.php и настройте маршруты:
<?php
header("Content-Type: application/json");

$request_method = $_SERVER['REQUEST_METHOD'];
$request_uri = $_SERVER['REQUEST_URI'];

switch ($request_method) {
case 'GET':
if ($request_uri == '/users') {
getUsers();
} elseif (preg_match('/\/users\/(\d+)/', $request_uri, $matches)) {
getUser($matches[1]);
}
break;
case 'POST':
if ($request_uri == '/users') {
createUser();
}
break;
default:
http_response_code(405);
echo json_encode(["message" => "Метод не поддерживается"]);
}
?>


#### Шаг 2: Функции для обработки запросов
<?php
function getUsers() {
$users = [
["id" => 1, "name" => "Иван"],
["id" => 2, "name" => "Мария"]
];
echo json_encode($users);
}

function getUser($id) {
$users = [
1 => ["id" => 1, "name" => "Иван"],
2 => ["id" => 2, "name" => "Мария"]
];
if (isset($users[$id])) {
echo json_encode($users[$id]);
} else {
http_response_code(404);
echo json_encode(["message" => "Пользователь не найден"]);
}
}

function createUser() {
$data = json_decode(file_get_contents("php://input"), true);
if (isset($data['name'])) {
echo json_encode(["message" => "Пользователь создан", "name" => $data['name']]);
} else {
http_response_code(400);
echo json_encode(["message" => "Неверные данные"]);
}
}
?>


---

### 3. Использование API
#### GET-запрос (получение списка пользователей)
curl -X GET http://localhost/users

Ответ:
[
{"id": 1, "name": "Иван"},
{"id": 2, "name": "Мария"}
]


#### GET-запрос (получение одного пользователя)
curl -X GET http://localhost/users/1

Ответ:
{"id": 1, "name": "Иван"}


#### POST-запрос (создание пользователя)
curl -X POST -H "Content-Type: application/json" -d '{"name": "Алексей"}' http://localhost/users

Ответ:
{"message": "Пользователь создан", "name": "Алексей"}


---

### 4. Обработка ошибок
- 404 Not Found: Ресурс не найден.
- 400 Bad Request: Неверные данные.
- 405 Method Not Allowed: Метод не поддерживается.

Пример:
<?php
http_response_code(404);
echo json_encode(["message" => "Ресурс не найден"]);
?>


---

### 5. Работа с JSON
PHP предоставляет функции для работы с JSON:
- json_encode(): Преобразует массив в JSON.
- json_decode(): Преобразует JSON в массив.

Пример:
<?php
$data = ["name" => "Иван", "age" => 25];
$json = json_encode($data);
echo $json; // {"name":"Иван","age":25}

$array = json_decode($json, true);
print_r($array); // Array ( [name] => Иван [age] => 25 )
?>


---

### 6. Авторизация и токены
Для защиты API часто используются токены (например, JWT).

#### Пример с JWT
1. Установите библиотеку для работы с JWT:

   composer require firebase/php-jwt

2. Создайте токен:

   <?php
use Firebase\JWT\JWT;

$key = "your_secret_key";
$payload = [
"user_id" => 1,
"username" => "Иван"
];
$jwt = JWT::encode($payload, $key);
echo $jwt;
?>

3. Проверка токена:

   <?php
try {
$decoded = JWT::decode($jwt, $key, array('HS256'));
print_r($decoded);
} catch (Exception $e) {
http_response_code(401);
echo json_encode(["message" => "Ошибка авторизации"]);
}
?>


---
🎯 Что дальше?
В следующей главе мы изучим работу с файлами и загрузкой данных на сервер. Продолжайте изучать PHP, и вы сможете создавать мощные веб-приложения! 🚀

#PHP #API #RESTful #Программирование #Телеграм

Подписывайтесь на наш канал: [https://t.me/Safety_Y](https://t.me/Safety_Y)
Пример создания Интернет-магазина на OpenCart 2.0

В последнее время наиболее актуальным способом заработка в Интернете является создание своего Интернет-магазина.

Ещё несколько лет назад это было сделать крайне затруднительно. Во-первых, не было нормальных CMS, во-вторых, не было логистики, в-третьих, были проблемы с поставщиками, да и Интернет был слабо ещё развит, поэтому и клиентов трудно было найти. А вот сейчас просто золотая пора, так как есть прекрасная CMS под названием OpenCart, есть сотни фирм, подключающих всю логистику под ключ, начиная с обзвона клиентов и заканчивая доставкой и расчётно-кассовым обслуживанием. Клиентов в Интернете масса, так как уже все привыкли покупать товары по Интернету.

Осталась лишь одна проблема - качественное создание Интернет-магазина. И вот тут на помощь Вам придёт очень интересное бесплатное видео по OpenCart 2.0 от Михаила Русакова: https://Hottab.programsite.ru/freeim2.

Особенностью данного видео является то, что в нём с нуля создаётся полноценный Интернет-магазин, который останется лишь заполнить товарами. Фактически, те, кто вообще никогда не создавал сайты, после просмотра данного видео с лёгкостью создадут свой собственный Интернет-магазин: https://Hottab.programsite.ru/freeim2.
Создание и продвижение лендинга под ключ

Последнее время появляется всё больше и больше лендингов. И это легко объясняется тем, что на лендингах гораздо проще продавать товары и услуги. Помимо этого, на лендингах гораздо эффективнее собирать данные клиентов/подписчиков. Давно уже было протестировано, что если взять сайт-визитку под какой-то товар и лендинг под тот же товар, то итоговая конверсия будет в несколько раз выше именно у лендинга.

Однако, надо понимать, что создать хороший лендинг - не так-то и просто. Поставьте себя на место клиента, который хочет заказать лендинг. Он вводит соответствующий запрос в поисковик, и ему вываливается несколько десятков лендингов, предлагающие подобные услуги. Как ему выбрать?

Поэтому мы с Вами приходим к выводу, что крайне важно научиться создавать хорошие лендинги. А кто может научить лучше этому делу, чем тот, кто этому посветил 6 лет своей жизни, и все его лендинги были прибыльны всё это время.

И таким человеком является Михаил Русаков. Он записал курс "Создание и продвижение лендинга под ключ": https://Hottab.programsite.ru/landing. Особенностью этого курса является то, что Михаил в нём абсолютно с нуля создаёт лендинг: landing-order.ru - изначально не было даже текста. То есть, написание текста, заказ дизайна на фрилансе, затем вёрстка, программирование клиентской части и Admin-панели, а после размещение в Интернете - всё это Вы увидите в курсе "Создание и продвижение лендинга под ключ". Сам же лендинг посвещён созданию лендингов на заказ.

Более того, созданием и размещением лендинга в Интернете дело не заканчивается. Михаил ещё и начинает продвигать его, в том числе, и через Яндекс.Директ прямо в курсе, рассказывая и показывая всё максимально детально. И, наконец, было произведено тестирование, результаты которого удивили даже Михаила. Оказалось, что заявка в такой конкурентной теме как создание лендингов на заказ, стоит всего 200 рублей! Более того, в день приходит по 1-2 заявки. Сами же цены на создание лендинга начинаются от 15 тысяч рублей. Средняя же составляет где-то 30-40 тысяч рублей. Представьте, Вы получаете клиента за 200 рублей, а он Вам даёт заказ даже пусть всего на 15 000 рублей. Не это ли доказательство качества лендинга? Вот именно такой со всеми комментариями Вы создадите в этом курсе: https://Hottab.programsite.ru/landing.