12 subscribers
182 photos
3 videos
212 links
Programmer - Курсы программирования. Канал для тех, кто не хочет остаться на задворках цивилизации.
Download Telegram
📘 Полное руководство по PHP – Глава 4: Исключения, пространства имён и автозагрузка классов 🐘

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

---

### 1. Исключения
Исключения позволяют обрабатывать ошибки в коде, не прерывая выполнение программы.

#### Базовый пример
<?php
function divide($a, $b) {
if ($b == 0) {
throw new Exception("Деление на ноль!");
}
return $a / $b;
}

try {
echo divide(10, 0);
} catch (Exception $e) {
echo "Ошибка: " . $e->getMessage();
}
?>


#### Пользовательские исключения
<?php
class DivideByZeroException extends Exception {}

function divide($a, $b) {
if ($b == 0) {
throw new DivideByZeroException("Деление на ноль!");
}
return $a / $b;
}

try {
echo divide(10, 0);
} catch (DivideByZeroException $e) {
echo "Поймано исключение: " . $e->getMessage();
}
?>


---

### 2. Пространства имён
Пространства имён (namespaces) помогают избежать конфликтов имён классов и функций.

#### Пример использования
<?php
namespace MyProject;

class User {
public function greet() {
return "Привет из MyProject!";
}
}

$user = new User();
echo $user->greet();
?>


#### Импорт классов
<?php
namespace AnotherProject;

use MyProject\User;

$user = new User();
echo $user->greet();
?>


---

### 3. Автозагрузка классов
Автозагрузка классов позволяет автоматически подключать классы, когда они используются, без необходимости вручную подключать файлы.

#### Использование spl_autoload_register
<?php
spl_autoload_register(function ($class_name) {
include $class_name . '.php';
});

$user = new User(); // Автоматически подключит файл User.php
echo $user->greet();
?>


#### Автозагрузка с пространствами имён
<?php
spl_autoload_register(function ($class_name) {
$file = str_replace('\\', '/', $class_name) . '.php';
if (file_exists($file)) {
include $file;
}
});

use MyProject\User;

$user = new User(); // Автоматически подключит файл MyProject/User.php
echo $user->greet();
?>


---

### 4. Composer и PSR-4
Composer — это менеджер зависимостей для PHP, который также поддерживает автозагрузку классов по стандарту PSR-4.

#### Пример composer.json
{
"autoload": {
"psr-4": {
"MyProject\\": "src/"
}
}
}


#### Использование
1. Создайте структуру каталогов:

   src/
User.php

2. Запустите команду для генерации автозагрузчика:

   composer dump-autoload

3. Используйте классы:

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

use MyProject\User;

$user = new User();
echo $user->greet();
?>


---

### 5. Работа с файлами и директориями
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);
?>


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


---

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

#PHP #ООП #Программирование #ВебРазработка #Телеграм
👉 Изучаем HTML5 урок 1

Отлично, что вы начали изучать HTML5! Давайте разберем основы первого урока.

### Введение в HTML5

HTML (HyperText Markup Language) — это язык разметки, который используется для создания структуры веб-страниц. HTML5 — это последняя версия HTML, которая включает в себя множество новых элементов и атрибутов, упрощающих создание современных веб-приложений.

### Базовая структура HTML-документа

Каждый HTML-документ начинается с объявления типа документа, которое помогает браузеру понять, как интерпретировать страницу. Для HTML5 это выглядит так:

<!DOCTYPE html>


После этого следует элемент <html>, который является корневым элементом всего документа. Внутри него находятся два основных раздела: <head> и <body>.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Моя первая страница</title>
</head>
<body>
<h1>Привет, мир!</h1>
<p>Это моя первая веб-страница.</p>
</body>
</html>


### Разбор структуры

1. `<!DOCTYPE html>`: Объявление типа документа. Указывает браузеру, что это документ HTML5.

2. `<html lang="ru">`: Корневой элемент документа. Атрибут lang указывает язык содержимого (в данном случае русский).

3. `<head>`: Содержит метаинформацию о документе, такую как кодировка, заголовок страницы, ссылки на стили и скрипты.
- `<meta charset="UTF-8">`: Указывает кодировку документа (UTF-8 поддерживает большинство символов).
- `<meta name="viewport" content="width=device-width, initial-scale=1.0">`: Обеспечивает корректное отображение на мобильных устройствах.
- `<title>`: Заголовок страницы, который отображается вкладке браузера.

4. `<body>`: Содержит основное содержимое страницы, которое отображается в браузере.
- `<h1>`: Заголовок первого уровня.
- `<p>`: Параграф текста.

### Основные элементы HTML5

- Заголовки: <h1>, <h2>, <h3>, <h4>, <h5>, <h6> — используются для создания заголовков разного уровня.
- Параграфы: <p> — для текстовых абзацев.
- Ссылки: <a href="URL">Текст ссылки</a> — для создания гиперссылок.
- Изображения: <img src="URL изображения" alt="Описание"> — для вставки изображений.
- Списки:
- Нумерованные: <ol><li>Элемент 1</li><li>Элемент 2</li></ol>
- Маркированные: <ul><li>Элемент 1</li><li>Элемент 2</li></ul>
- Разделы: <div>, <section>, <article>, <header>, <footer>, <nav> — для структурирования содержимого.

### Пример простой страницы

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Моя первая страница</title>
</head>
<body>
<header>
<h1>Добро пожаловать на мою страницу!</h1>
<nav>
<ul>
<li><a href="#about">Обо мне</a></li>
<li><a href="#contact">Контакты</a></li>
</ul>
</nav>
</header>

<section id="about">
<h2>Обо мне</h2>
<p>Привет! Меня зовут [Ваше имя], и это моя первая веб-страница.</p>
</section>

<section id="contact">
<h2>Контакты</h2>
<p>Свяжитесь со мной по email: <a href="mailto:example@example.com">example@example.com</a></p>
</section>

<footer>
<p>&copy; 2023 Моя первая страница</p>
</footer>
</body>
</html>


### Заключение

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

Удачи в изучении HTML5!
👉Своя Web-студия за 55 дней
Большинство тех, кто занимается созданием сайтов, хочет на этом хорошо зарабатывать. Более того, в 21-м веке при этом желательно не ходить на работу, тем более, что профессия это позволяет.

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

Поэтому я для себя решил, что лучшим вариантом будет - открыть свою Web-студию. Но у меня нет такого опыта. И тут мне попадается совершенно удивительный курс: "Своя Web-студия за 55 дней". И это даже не курс, а целая система.

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

При этом система построена так, что нет никакого информационного перегруза. Ежедневно Вы будете тратить не более 1-го часа в день. А уже через 55 дней при выполнении заданий у Вас будет:

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

Кстати, автор курса - Михаил Русаков, являющийся известным специалистом в области создания сайтов на заказ. И он уже много лет имеет свою успешную Web-студию.

Я уже приобрёл этот курс, и пока безумно доволен. Описание полностью соответствует содержимому: https://Hottab.programsite.ru/web55

Полное описание курса, информацию об авторе, ссылки на его Web-студию и Web-студию, созданную в курсе, находятся здесь: https://Hottab.programsite.ru/web55

Там же можно получить доступ к этой системе.
📘 Полное руководство по PHP – Глава 5: Работа с базами данных (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, и вы сможете создавать мощные в
Отлично, что вы продолжаете изучать HTML5! В этом уроке мы рассмотрим более продвинутые темы, такие как формы, таблицы, мультимедиа и семантические элементы. Давайте начнем!

### Формы в HTML5

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

#### Пример формы:

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Форма регистрации</title>
</head>
<body>
<h1>Форма регистрации</h1>
<form action="/submit" method="post">
<label for="username">Имя пользователя:</label>
<input type="text" id="username" name="username" required><br><br>

<label for="email">Email:</label>
<input type="email" id="email" name="email" required><br><br>

<label for="password">Пароль:</label>
<input type="password" id="password" name="password" required><br><br>

<label for="gender">Пол:</label>
<select id="gender" name="gender">
<option value="male">Мужской</option>
<option value="female">Женский</option>
<option value="other">Другой</option>
</select><br><br>

<label for="newsletter">Подписаться на рассылку:</label>
<input type="checkbox" id="newsletter" name="newsletter"><br><br>

<input type="submit" value="Зарегистрироваться">
</form>
</body>
</html>


### Таблицы в HTML5

Таблицы используются для отображения данных в строках и столбцах. Основные элементы таблицы: <table>, <tr>, <th>, <td>.

#### Пример таблицы:

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Пример таблицы</title>
</head>
<body>
<h1>Пример таблицы</h1>
<table border="1">
<tr>
<th>Имя</th>
<th>Фамилия</th>
<th>Возраст</th>
</tr>
<tr>
<td>Иван</td>
<td>Иванов</td>
<td>25</td>
</tr>
<tr>
<td>Мария</td>
<td>Петрова</td>
<td>30</td>
</tr>
</table>
</body>
</html>


### Мультимедиа в HTML5

HTML5 предоставляет встроенную поддержку мультимедиа, такую как аудио и видео.

#### Пример аудио:

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Аудио пример</title>
</head>
<body>
<h1>Аудио пример</h1>
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
Ваш браузер не поддерживает аудио элемент.
</audio>
</body>
</html>


#### Пример видео:

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Видео пример</title>
</head>
<body>
<h1>Видео пример</h1>
<video controls width="320" height="240">
<source src="video.mp4" type="video/mp4">
Ваш браузер не поддерживает видео элемент.
</video>
</body>
</html>


### Семантические элементы HTML5

Семантические элементы помогают лучше структурировать содержимое страницы и улучшить её доступность для поисковых систем и вспомогательных технологий.

#### Пример использования семантических элементов:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Семантические элементы</title>
</head>
<body>
<header>
<h1>Заголовок сайта</h1>
<nav>
<ul>
<li><a href="#home">Главная</a></li>
<li><a href="#about">О нас</a></li>
<li><a href="#contact">Контакты</a></li>
</ul>
</nav>
</header>

<main>
<article>
<h2>Статья 1</h2>
<p>Содержание статьи 1.</p>
</article>

<article>
<h2>Статья 2</h2>
<p>Содержание статьи 2.</p>
</article>
</main>

<aside>
<h3>Дополнительная информация</h3>
<p>Здесь может быть дополнительная информация.</p>
</aside>

<footer>
<p>&copy; 2023 Мой сайт</p>
</footer>
</body>
</html>


### Заключение

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

Удачи в изучении HTML5!
Урок 1: Введение в CSS3 — Основы стилизации

Привет, друзья! 👋 Сегодня мы начинаем наш увлекательный путь в мир CSS3 — технологии, которая делает веб-страницы красивыми и современными. Давайте разберем основы!

---

### Что такое CSS3?
CSS (Cascading Style Sheets) — это язык стилей, который используется для описания внешнего вида HTML-документов. CSS3 — это последняя версия, которая добавляет множество новых возможностей, таких как анимации, градиенты, тени и многое другое.

---

### Как подключить CSS к HTML?
Есть три способа подключения стилей:
1. Внутри тега `<style>`

   <style>
body {
background-color: lightblue;
}
</style>


2. Через внешний файл
Создайте файл styles.css и подключите его в HTML:

   <link rel="stylesheet" href="styles.css">


3. Инлайн-стили (внутри тегов)

   <p style="color: red;">Этот текст красный.</p>


---

### Основы синтаксиса CSS
CSS состоит из селекторов и правил.
Пример:
селектор {
свойство: значение;
}



- Селектор — указывает, к какому элементу применяются стили (например, h1, .class, #id).
- Свойство — что именно мы меняем (например, color, font-size, background).
- Значение — как мы это меняем (например, red, 20px, #ffffff).

Пример:
h1 {
color: blue;
font-size: 24px;
}



---

### Популярные свойства CSS3
1. Цвет текста

   color: red;


2. Размер шрифта

   font-size: 16px;


3. Фон элемента

   background-color: yellow;


4. Границы

   border: 2px solid black;


5. Тени

   box-shadow: 5px 5px 10px gray;


---

### Практика
Попробуйте создать простой HTML-документ и добавить стили:
1. Задайте цвет фона страницы.
2. Измените цвет заголовка.
3. Добавьте тень к параграфу.

---

В следующем уроке мы разберем селекторы и каскадность в CSS. Оставайтесь с нами! 🚀

Если есть вопросы, пишите в комментариях! 😉

#CSS #ВебРазработка #УрокиCSS #Программирование
👉Сайт на Joomla за 7 часов
Если сайт нужен был ещё вчера?

Часто бывает так что сайт создаётся очень долго. Есть люди кто создаёт сайт по нескольку месяцев и всё никак его не закончат.

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

Также за это время сайт мог бы получить позиции по определённым запросам и слегка продвинуться.

Но постоянное откладывание, доделывание, улучшение затягивают запуск сайта. Поэтому если вам срочно нужен сайт, то рекомендую пройти бесплатный видеокурс «Сайт на Joomla за 7 часов»: https://Hottab.programsite.ru/freejoomla.

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


Курс предназначен для начинающих веб-строителей, а также для тех, кто хочет быстро освоить CMS Joomla 3 версии.


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

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

И, в конце концов, запустите полностью рабочий проект в боевое плавание. Поэтому перейдите по ссылке и скачайте этот ускоренный курс по созданию сайта на Joomla 3: https://Hottab.programsite.ru/freejoomla
📘 Полное руководство по PHP – Глава 6: Работа с API (RESTful API) 🐘

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

---

### 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, и вы сможете создавать мощные веб-приложения!
🐍Изучаем Python урок 1

Изучаем Python: Урок 1 — это первый шаг в мир программирования на одном из самых популярных и мощных языков. Python известен своей простотой и читаемостью, что делает его идеальным выбором для начинающих. В этом уроке мы рассмотрим основы Python: установку, синтаксис, переменные и типы данных.

---

### ⚠️ Важно!
Python — это язык программирования, который используется для решения широкого круга задач, от веб-разработки до анализа данных. Убедитесь, что вы используете его в законных и этических целях.

---

### Шаг 1: Установка Python
1. Для Windows:
- Скачайте установщик с официального сайта: [python.org](https://www.python.org/downloads/).
- Убедитесь, что вы отметили галочку Add Python to PATH во время установки.

2. Для Linux:
- Установите Python с помощью пакетного менеджера:

     sudo apt update
sudo apt install python3


3. Для macOS:
- Установите Python с помощью Homebrew:

     brew install python3


4. Проверьте установку:

   python3 --version

Вы должны увидеть что-то вроде:

   Python 3.x.x


---

### Шаг 2: Первая программа на Python
1. Откройте текстовый редактор (например, Notepad++, VS Code или PyCharm).
2. Создайте файл с именем hello.py.
3. Добавьте следующий код:

   print("Привет, мир!")

4. Сохраните файл и запустите его:

   python3 hello.py

Вы увидите:

   Привет, мир!


---

### Шаг 3: Переменные и типы данных
1. Переменные — это контейнеры для хранения данных. В Python не нужно указывать тип переменной, он определяется автоматически.

   name = "Алексей"
age = 25
height = 1.75
is_student = True


2. Типы данных:
- Строки (str): "Привет, мир!"
- Целые числа (int): 42
- Дробные числа (float): 3.14
- Логические значения (bool): True, False

3. Пример:

   name = "Алексей"
age = 25
print("Меня зовут", name, "и мне", age, "лет.")


---

### Шаг 4: Ввод и вывод данных
1. Ввод данных:
Используйте функцию input() для получения данных от пользователя.

   name = input("Введите ваше имя: ")
print("Привет,", name)


2. Форматированный вывод:
Используйте f-строки для удобного форматирования.

   name = "Алексей"
age = 25
print(f"Меня зовут {name} и мне {age} лет.")


---

### Шаг 5: Основные операции
1. Арифметические операции:

   a = 10
b = 3
print(a + b) # Сложение
print(a - b) # Вычитание
print(a * b) # Умножение
print(a / b) # Деление
print(a // b) # Целочисленное деление
print(a % b) # Остаток от деления
print(a ** b) # Возведение в степень


2. Сравнение:

   print(a > b)  # Больше
print(a < b) # Меньше
print(a == b) # Равно
print(a != b) # Не равно


---

### Шаг 6: Условные операторы
1. if-else:

   age = 18
if age >= 18:
print("Вы совершеннолетний.")
else:
print("Вы несовершеннолетний.")


2. elif:

   score = 85
if score >= 90:
print("Отлично!")
elif score >= 70:
print("Хорошо!")
else:
print("Попробуйте еще раз.")


---

### Шаг 7: Циклы
1. Цикл for:

   for i in range(5):
print("Итерация:", i)


2. Цикл while:

   count = 0
while count < 5:
print("Счетчик:", count)
count += 1


---

### Заключение
Этот урок познакомил вас с основами Python: установкой, синтаксисом, переменными, типами данных, вводом/выводом, операциями, условными операторами и циклами. В следующих уроках мы углубимся в более сложные темы, такие как функции, списки, словари и модули.

---

Если у вас есть вопросы или вы хотите узнать больше, пишите в комментариях! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
Отлично! пост посвящен третьему уроку по изучению HTML5. В этом уроке мы сосредоточимся на более продвинутых темах, таких как работа с мультимедиа (аудио, видео), использование iframe для встраивания внешнего контента, а также познакомимся с элементами для создания интерактивных элементов, таких как <details> и <summary>.

---

🚀 Изучаем HTML5 | Урок 3: Продвинутые возможности HTML5

Привет, друзья! Продолжаем наше путешествие в мир HTML5. В этом уроке мы разберем, как работать с мультимедиа, встраивать внешний контент и создавать интерактивные элементы. Поехали! 🎉

---

### 🎧 Мультимедиа: аудио и видео
HTML5 позволяет легко добавлять аудио и видео на вашу страницу без использования сторонних плагинов.

#### Пример аудио:
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
Ваш браузер не поддерживает аудио.
</audio>


#### Пример видео:
<video controls width="600">
<source src="video.mp4" type="video/mp4">
Ваш браузер не поддерживает видео.
</video>


- `controls`: Добавляет элементы управления (воспроизведение, пауза, громкость).
- `<source>`: Указывает источник файла и его тип.

---

### 🌐 Встраивание контента с помощью `<iframe>`
С помощью <iframe> можно встраивать на страницу внешний контент, например, карты, видео с YouTube или другие веб-страницы.

#### Пример встраивания YouTube-видео:
<iframe 
width="560"
height="315"
src="https://www.youtube.com/embed/dQw4w9WgXcQ"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen>
</iframe>


---

### 🛠 Интерактивные элементы: `<details>` и `<summary>`
Эти элементы позволяют создавать раскрывающиеся блоки, которые полезны для FAQ, спойлеров и других интерактивных элементов.

#### Пример:
<details>
<summary>Что такое HTML5?</summary>
<p>HTML5 — это последняя версия языка разметки HTML, которая добавляет новые элементы и возможности для создания современных веб-приложений.</p>
</details>


- `<details>`: Контейнер для скрытого контента.
- `<summary>`: Заголовок, который отображается всегда.

---

### 🎯 Практическое задание
1. Добавьте на свою страницу видео с YouTube с помощью <iframe>.
2. Создайте раскрывающийся блок с использованием <details> и <summary>.
3. Попробуйте добавить аудиоплеер на страницу.

---

💡 Совет: Используйте семантические теги (<header>, <main>, <footer>) для улучшения структуры вашей страницы. Это не только сделает код чище, но и поможет поисковым системам лучше понять ваш контент.

---

В следующем уроке мы начнем изучать CSS, чтобы ваши страницы стали стильными и красивыми! 🎨

Удачи в изучении HTML5! 🚀

#HTML5 #вебразработка #урокиHTML #программирование

---
Урок 2: Селекторы и каскадность в CSS3

Привет, друзья! 👋 Продолжаем изучать CSS3. Сегодня мы разберем селекторы и каскадность — ключевые понятия, которые помогут вам управлять стилями на вашей веб-странице. Поехали! 🚀

---

### Что такое селекторы?
Селекторы — это шаблоны, которые позволяют выбрать элементы HTML для применения стилей. Вот основные типы селекторов:

1. Селектор по тегу
Применяет стили ко всем элементам с указанным тегом.

   p {
color: green;
}


2. Селектор по классу
Используется для элементов с определенным классом (указывается через точку).

   .text-red {
color: red;
}



   <p class="text-red">Этот текст красный.</p>


3. Селектор по ID
Применяется к элементу с уникальным идентификатором (указывается через решетку).

   #header {
font-size: 30px;
}



   <h1 id="header">Заголовок</h1>


4. Универсальный селектор
Применяет стили ко всем элементам на странице.

   * {
margin: 0;
padding: 0;
}


5. Комбинированные селекторы
Можно комбинировать селекторы для более точного выбора:
- Вложенные элементы:

     div p {
color: blue;
}


- Несколько классов:

     .text-bold.text-large {
font-weight: bold;
font-size: 20px;
}


- Дочерние элементы:

     ul > li {
list-style: none;
}


---

### Каскадность в CSS
Каскадность — это механизм, который определяет, какие стили будут применены к элементу, если на него влияют несколько правил. Вот основные принципы:

1. Приоритеты:
- Стили, указанные через !important, имеют наивысший приоритет.
- Инлайн-стили (внутри тега) имеют приоритет над внешними стилями.
- Селекторы по ID имеют больший вес, чем классы, а классы — больше, чем теги.

Пример:

   p {
color: blue !important; /* Этот стиль применится */
}
p {
color: red;
}


2. Порядок объявления:
Если приоритеты равны, применяется последнее объявленное правило.

---

### Практика
1. Создайте HTML-документ с несколькими элементами: заголовками, параграфами и списками.
2. Используйте разные типы селекторов для стилизации:
- Измените цвет всех параграфов.
- Добавьте класс для изменения шрифта заголовка.
- Используйте ID для задания фона определенному блоку.

---

### Домашнее задание
Попробуйте создать страницу с использованием всех типов селекторов. Поделитесь результатами в комментариях! 😉

В следующем уроке мы разберем блочную модель CSS и научимся работать с отступами и границами. Оставайтесь с нами! 💪

#CSS #ВебРазработка #УрокиCSS #Программирование
👉Видеокурс по основам PHP 7
Не секрет, что PHP - это самый популярный язык Web-программирования. По этой причине его должен знать любой, кто планирует создавать мало-мальски серьёзные сайты. Так же те, кто планирует устроиться на работу Web-программистом, должны помнить, что самый основной и самый требуемый язык - это PHP.

Не секрет, что 21 век - это век IT, и очень хорошо, если Вы освоите Web-программирование, тогда в 21-м веке Вы уже без работы не останетесь.

Но как освоить PHP? В Интернете тонны информации, начиная с сотен тысяч статей и заканчивая тысячами книг. Как новичку разобраться?

Хочу порекомендовать Вам курс по PHP 7 от Михаила Русакова. Михаил Русаков - это многолетний практик, и он, в отличие от многих авторов книг, знает, что нужно знать, а что совсем не обязательно. Его курс содержит всё то, что нужно и ничего лишнего. И самое главное, что курс бесплатный!

Курс состоит из 28 видеоуроков по всем базовым вещам в PHP 7, и это будет уже отличной базой для дальнейшего развития. Я этот курс уже посмотрел, и остался очень доволен, поэтому рекомендую всем. Ссылка на курс: https://Hottab.programsite.ru/freephp7
📘 Полное руководство по PHP – Глава 7: Работа с файлами и загрузка данных на сервер 🐘

В этой главе мы рассмотрим, как работать с файлами в 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 #Файлы #Загрузка #Программирование #Телеграм
Изучаем Python: Урок 2 — это продолжение нашего путешествия в мир программирования на Python. В этом уроке мы рассмотрим более сложные темы, такие как функции, списки, словари и работа с файлами. Эти концепции являются ключевыми для написания более структурированных и мощных программ.

---

### ⚠️ Важно!
Python — это язык программирования, который используется для решения широкого круга задач. Убедитесь, что вы используете его в законных и этических целях.

---

### Шаг 1: Функции
Функции позволяют организовать код в блоки, которые можно повторно использовать.

1. Создание функции:
Используйте ключевое слово def для определения функции.

   def greet(name):
print(f"Привет, {name}!")


2. Вызов функции:

   greet("Алексей")

Вывод:

   Привет, Алексей!


3. Функции с возвращаемым значением:
Используйте return для возврата значения.

   def add(a, b):
return a + b

result = add(3, 5)
print(result) # Вывод: 8


---

### Шаг 2: Списки
Списки — это упорядоченные коллекции элементов, которые могут содержать данные разных типов.

1. Создание списка:

   fruits = ["яблоко", "банан", "вишня"]


2. Доступ к элементам:

   print(fruits[0])  # Вывод: яблоко
print(fruits[-1]) # Вывод: вишня


3. Изменение элементов:

   fruits[1] = "груша"
print(fruits) # Вывод: ["яблоко", "груша", "вишня"]


4. Методы списков:
- append(): Добавляет элемент в конец списка.

     fruits.append("апельсин")

- remove(): Удаляет элемент по значению.

     fruits.remove("груша")

- len(): Возвращает количество элементов.

     print(len(fruits))  # Вывод: 3


---

### Шаг 3: Словари
Словари — это неупорядоченные коллекции пар "ключ-значение".

1. Создание словаря:

   person = {
"имя": "Алексей",
"возраст": 25,
"город": "Москва"
}


2. Доступ к значениям:

   print(person["имя"])  # Вывод: Алексей


3. Изменение значений:

   person["возраст"] = 26


4. Добавление новых пар:

   person["профессия"] = "программист"


5. Методы словарей:
- keys(): Возвращает список ключей.

     print(person.keys())  # Вывод: dict_keys(['имя', 'возраст', 'город', 'профессия'])

- values(): Возвращает список значений.

     print(person.values())  # Вывод: dict_values(['Алексей', 26, 'Москва', 'программист'])


---

### Шаг 4: Работа с файлами
Python позволяет легко работать с файлами для чтения и записи данных.

1. Чтение из файла:

   with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)


2. Запись в файл:

   with open("example.txt", "w", encoding="utf-8") as file:
file.write("Привет, мир!")


3. Добавление в файл:

   with open("example.txt", "a", encoding="utf-8") as file:
file.write("\nНовая строка.")


---

### Шаг 5: Практические примеры
1. Функция для работы со списком:

   def print_list(items):
for item in items:
print(item)

fruits = ["яблоко", "банан", "вишня"]
print_list(fruits)


2. Функция для работы со словарем:

   def print_person_info(person):
for key, value in person.items():
print(f"{key}: {value}")

person = {"имя": "Алексей", "возраст": 25}
print_person_info(person)


3. Чтение и запись файла:

   def read_and_write_file(filename):
with open(filename, "r", encoding="utf-8") as file:
content = file.read()
with open("output.txt", "w", encoding="utf-8") as file:
file.write(content.upper())

read_and_write_file("example.txt")


---

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

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

---

🚀 Изучаем HTML5 | Урок 4: Формы и элементы ввода

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

---

### 📝 Основы форм
Формы создаются с помощью тега <form>. Они могут содержать различные элементы ввода, такие как текстовые поля, кнопки, флажки и многое другое.

#### Пример простой формы:
<form action="/submit" method="post">
<label for="name">Имя:</label>
<input type="text" id="name" name="name" required>

<label for="email">Email:</label>
<input type="email" id="email" name="email" required>

<button type="submit">Отправить</button>
</form>


- `action`: Указывает URL, на который отправляются данные формы.
- `method`: Определяет метод отправки данных (GET или POST).
- `required`: Обязательное поле для заполнения.

---

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

#### Примеры:
<label for="color">Выберите цвет:</label>
<input type="color" id="color" name="color">

<label for="date">Дата:</label>
<input type="date" id="date" name="date">

<label for="range">Уровень удовлетворения:</label>
<input type="range" id="range" name="range" min="0" max="10">

<label for="file">Загрузите файл:</label>
<input type="file" id="file" name="file">


- `type="color"`: Поле для выбора цвета.
- `type="date"`: Поле для выбора даты.
- `type="range"`: Ползунок для выбора значения в диапазоне.
- `type="file"`: Поле для загрузки файлов.

---

### 🔍 Валидация форм
HTML5 упрощает валидацию данных с помощью встроенных атрибутов.

#### Пример:
<label for="phone">Телефон:</label>
<input type="tel" id="phone" name="phone" pattern="[0-9]{10}" required>


- `pattern`: Указывает регулярное выражение для проверки ввода.
- `type="tel"`: Поле для ввода номера телефона.

---

### 🎯 Практическое задание
1. Создайте форму регистрации с полями для имени, email, пароля и даты рождения.
2. Добавьте поле для выбора цвета и ползунок для оценки.
3. Используйте атрибуты валидации, чтобы сделать поля обязательными.

---

💡 Совет: Используйте семантические теги, такие как <fieldset> и <legend>, для группировки элементов формы. Это улучшит читаемость и доступность вашего кода.

---

Удачи в изучении HTML5! 🚀

#HTML5 #вебразработка #урокиHTML #программирование

---
Урок 3: Блочная модель CSS — Отступы, границы и размеры

Привет, друзья! 👋 Сегодня мы погрузимся в одну из самых важных тем в CSS — блочную модель. Это основа верстки, которая поможет вам контролировать размеры, отступы и границы элементов. Давайте разбираться! 🚀

---

### Что такое блочная модель?
Каждый элемент на веб-странице представляет собой прямоугольный блок. Блочная модель описывает, как вычисляются размеры этого блока, включая:
1. Содержимое (content) — область, где отображается текст или другие элементы.
2. Внутренние отступы (padding) — пространство между содержимым и границей.
3. Границы (border) — рамка вокруг элемента.
4. Внешние отступы (margin) — пространство между элементом и другими элементами.

---

### Свойства блочной модели

1. Ширина и высота (width, height)
Задают размеры содержимого элемента.

   div {
width: 300px;
height: 200px;
}


2. Внутренние отступы (padding)
Добавляют пространство внутри элемента, вокруг содержимого.

   div {
padding: 20px; /* Отступы со всех сторон */
padding-top: 10px; /* Индивидуально */
}


3. Границы (border)
Задают рамку вокруг элемента.

   div {
border: 2px solid black; /* Толщина, стиль, цвет */
border-radius: 10px; /* Закругленные углы */
}


4. Внешние отступы (margin)
Создают пространство между элементами.

   div {
margin: 15px; /* Отступы со всех сторон */
margin-bottom: 30px; /* Индивидуально */
}


---

### Как рассчитывается общий размер элемента?
По умолчанию общий размер элемента складывается из:
- Ширина = width + padding + border
- Высота = height + padding + border

Чтобы изменить это поведение, можно использовать свойство box-sizing:
- box-sizing: content-box; (по умолчанию) — размеры учитывают только содержимое.
- box-sizing: border-box; — размеры включают padding и border.

Пример:
div {
width: 300px;
padding: 20px;
border: 5px solid black;
box-sizing: border-box; /* Общая ширина останется 300px */
}


---

### Практика
1. Создайте блок с заданными размерами (width, height).
2. Добавьте внутренние отступы (padding) и границу (border).
3. Поэкспериментируйте с внешними отступами (margin), чтобы расположить блоки на странице.
4. Используйте box-sizing: border-box;, чтобы упростить расчеты.

---

### Домашнее задание
Создайте макет из нескольких блоков:
- Заголовок с отступами и границей.
- Текстовый блок с внутренними отступами.
- Изображение с внешними отступами.

Поделитесь результатами в комментариях! 😉

В следующем уроке мы разберем позиционирование элементов — как управлять расположением блоков на странице. Оставайтесь с нами! 💪

#CSS #ВебРазработка #УрокиCSS #Программирование
👉PHP и MySQL с Нуля до Гуру 2.0
Основой подавляющего большинства мало-мальски сложных сайтов является PHP. Именно с помощью PHP делается весь функционал сайта: формы обратной связи, регистрация, авторизация, поиск по сайту, добавление в корзину, оформление заказа, админка всех сайтов и многое-многое другое. Поэтому любой, кто планирует заниматься сайтостроением, а оно, кстати, весьма прибыльно, должен изучить PHP.

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

И вот недавно я узнал, что Михаил Русаков выпустил свой новый Видеокурс "PHP и MySQL с Нуля до Гуру 2.0". Это продолжение бестселлера "PHP и MySQL с Нуля до Гуру". В новом курсе он с нуля обучает языку PHP, причём разбирается именно свежая версия PHP 7: https://Hottab.programsite.ru/php7

В курсе он разбирает установку локального сервера, все базовые вещи языка PHP, стандартные функции и классы, ООП, компоненты, расширения, работа с базой данных, MySQL, PDO - в общем, целый ворох важнейших вещей.

Курсы Михаила Русакова я уже смотрю давно, и все они сделаны качественно, видно, что он является большим практиком в сайтостроении, и при этом у него, по моему мнению, дар преподавателя.

Подробности о курсе по ссылке: https://Hottab.programsite.ru/php7.
📘 Полное руководство по PHP – Глава 8: Работа с сессиями и куками 🐘

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

---

### 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 #Сессии #Куки #Программирование #Телеграм