Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Пройдите все испытания в игре кальмара второго сезона

Игра в кальмара 2: новые испытания

Аркады, Казуальные, Для мальчиков

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

IT + Mysql

С этим тегом используют

Программирование IT юмор Программист Юмор Работа Картинка с текстом Разработка PHP SQL База данных Postgresql Oracle Все
33 поста сначала свежее
Mr.Ducks
Mr.Ducks
8 месяцев назад
Серия PHP и веб-разработка: полезные руководства и совет

Регистрация на PHP с использованием PDO и MySQL: Полное Руководство⁠⁠

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

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

Регистрация на PHP с использованием PDO и MySQL: Полное Руководство PHP, Mysql, Регистрация, HTML, Безопасность, База данных, Веб-разработка, Персональные данные, IT, Программа, Длиннопост

Шаг 1: Создание HTML-формы для регистрации

Начнем с базовой HTML-формы, которая будет собирать имя пользователя, электронную почту и пароль. Эта форма отправляет данные методом POST на PHP-скрипт (register.php), который будет обрабатывать информацию.

<!DOCTYPE html>

<html lang="ru">

<head>

<meta charset="UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Регистрация</title>

</head>

<body>

<h2>Форма регистрации</h2>

<form action="register.php" method="post">

<label for="username">Имя пользователя:</label><br>

<input type="text" id="username" name="username" required><br><br>

<label for="email">Email:</label><br>

<input type="email" id="email" name="email" required><br><br>

<label for="password">Пароль:</label><br>

<input type="password" id="password" name="password" required><br><br>

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

</form>

</body>

</html>

Шаг 2: PHP-скрипт для обработки данных с использованием PDO

Теперь перейдем к созданию PHP-скрипта (register.php), который будет принимать данные из формы и сохранять их в базе данных MySQL. Мы будем использовать PDO (PHP Data Objects) для подключения и работы с базой данных, что обеспечивает безопасность и удобство работы.

<?php

// Настройки подключения к базе данных

$host = 'localhost'; // Имя хоста

$dbname = 'my_database'; // Имя базы данных

$username_db = 'root'; // Имя пользователя БД

$password_db = ''; // Пароль БД (если есть)

// Подключение к базе данных через PDO

try {

$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8";

$pdo = new PDO($dsn, $username_db, $password_db, [

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Включаем обработку ошибок

PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Массивы по умолчанию

PDO::ATTR_EMULATE_PREPARES => false, // Отключаем эмуляцию подготовленных выражений

]);

} catch (PDOException $e) {

die("Ошибка подключения к базе данных: " . $e->getMessage());

}

// Проверка отправки формы

if ($_SERVER["REQUEST_METHOD"] == "POST") {

// Получаем данные из формы

$username = $_POST['username'];

$email = $_POST['email'];

$password = password_hash($_POST['password'], PASSWORD_DEFAULT); // Хэшируем пароль

// SQL-запрос для вставки данных

$sql = "INSERT INTO users (username, email, password) VALUES (:username, :email, :password)";

// Подготовка и выполнение запроса через PDO

try {

$stmt = $pdo->prepare($sql);

$stmt->execute([

':username' => $username,

':email' => $email,

':password' => $password

]);

echo "Регистрация прошла успешно!";

} catch (PDOException $e) {

echo "Ошибка при выполнении запроса: " . $e->getMessage();

}

}

// Закрытие соединения (необязательно в PDO, но можно сделать для аккуратности)

$pdo = null;

?>

Пояснение к коду:

  • Подключение через PDO: Мы подключаемся к базе данных через PDO. Этот способ работы с базой данных считается безопасным, так как поддерживает подготовленные выражения, защищающие от SQL-инъекций.

  • Хэширование пароля: Использование функции password_hash() позволяет безопасно хранить пароли, применяя современный алгоритм хэширования. Это значительно увеличивает уровень защиты пользовательских данных.

  • Подготовленные запросы: Мы используем подготовленные запросы для передачи данных в базу. Это защищает от SQL-инъекций, так как данные передаются отдельно от структуры SQL-запроса.

Шаг 3: Создание таблицы в MySQL

Перед тем, как вы сможете зарегистрировать пользователей, вам нужно создать таблицу для хранения информации о них. Вот пример SQL-запроса для создания таблицы users в базе данных:

CREATE TABLE users (

id INT AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(50) NOT NULL,

email VARCHAR(100) NOT NULL,

password VARCHAR(255) NOT NULL,

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);

Пояснение к таблице:

  • id: Автоматически увеличивающийся идентификатор для каждого пользователя.

  • username: Имя пользователя, которое должно быть уникальным и не пустым.

  • email: Электронная почта, которая также должна быть уникальной и валидной.

  • password: Хэшированный пароль пользователя.

  • created_at: Автоматическая отметка времени, когда пользователь зарегистрировался.

Преимущества использования PDO:

  1. Безопасность: PDO поддерживает подготовленные выражения, которые защищают от SQL-инъекций, одной из наиболее распространенных атак на базы данных.

  2. Кросс-базовая поддержка: PDO позволяет легко менять драйверы для работы с разными базами данных (например, MySQL, PostgreSQL, SQLite).

  3. Обработка ошибок: PDO легко настраивается для выброса исключений в случае ошибок, что помогает отлавливать и решать проблемы на ранних стадиях.

Хэширование паролей в PHP

Хэширование пароля с помощью password_hash() делает вашу систему более безопасной. Это важно, так как хранение паролей в открытом виде крайне небезопасно. При хэшировании создается "отпечаток" пароля, который невозможно восстановить до оригинала, даже если данные будут скомпрометированы.

$password = password_hash($_POST['password'], PASSWORD_DEFAULT);

Для проверки пароля при авторизации можно использовать функцию password_verify().

Заключение

Создание системы регистрации с использованием PHP и PDO — это простой, но мощный способ начать работу с безопасной аутентификацией пользователей. Мы рассмотрели основные аспекты: создание формы, работу с базой данных через PDO, использование подготовленных запросов для защиты от SQL-инъекций, а также хэширование паролей.

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

Убедитесь, что ваш сервер настроен на работу с PHP и MySQL, а также что конфигурация базы данных соответствует вашим требованиям.

Показать полностью 1
PHP Mysql Регистрация HTML Безопасность База данных Веб-разработка Персональные данные IT Программа Длиннопост
11
IliaHohlov
IliaHohlov
9 месяцев назад
Лига программистов

Задача-тест с собеседования по SQL⁠⁠

Задача-тест с собеседования по SQL Программирование, IT, Собеседование, Тестирование, Программист, SQL, База данных, Oracle, Ms SQL, Mysql, Postgresql, Задача

Здравствуй, уважаемый читатель!

Как насчёт очередной задачи с собеседования по SQL? Задача базового курса, поэтому поставил одну звезду уровня сложности из пяти.

Дана схема данных (рисунок выше). Необходимо создать представление (VIEW) с названием CLIENTS_INFO, содержащее следующую информацию о клиентах: INN, NAME, PHONE.

Какая ошибка допущена в следующей SQL команде?

CREATE VIEW CLIENTS_INFO
AS SELECT INN, NAME, PHONE
FROM CLIENTS, CLIENT_CONTACTS
WHERE CLIENTS.CLIENT_ID = CLIENT_CONTACTS.CLIENT_ID

Задача-тест с собеседования по SQL Программирование, IT, Собеседование, Тестирование, Программист, SQL, База данных, Oracle, Ms SQL, Mysql, Postgresql, Задача

Посмотреть правильный ответ и найти еще больше интересных задач можно в моем Телеграм-канале.

Показать полностью 2
[моё] Программирование IT Собеседование Тестирование Программист SQL База данных Oracle Ms SQL Mysql Postgresql Задача
49
J0HNSS0N
J0HNSS0N
9 месяцев назад
Лига программистов

Ответ на пост «Задачи с собеседования по SQL»⁠⁠1

Example Answer Structure

Question: What value will the following query return?

SELECT COUNT(*) FROM TMP_TABLE;

Answer:

To determine the result of the query SELECT COUNT(*) FROM TMP_TABLE;, we need to understand what the COUNT(*) function does in SQL. The COUNT(*) function counts the number of rows in a table, regardless of whether they contain NULL values or not.

Let's look at the data in the table TMP_TABLE:

column1column21212NULL131214NULLNULL1315

There are 5 rows in the table. The COUNT(*) function will count all these rows, including those with NULL values.

Therefore, the query:

SELECT COUNT(*) FROM TMP_TABLE;

will return the value 5.

This value is the total number of rows in the table TMP_TABLE, without any consideration of the content of the columns or whether they contain NULL values.
______
ChatGPT4o. Простите.

Программирование Собеседование IT SQL Задача Аналитика База данных Ms SQL Oracle Postgresql Postgres Mysql Тестирование Telegram (ссылка) Ответ на пост Текст
1
14
IliaHohlov
IliaHohlov
10 месяцев назад
Лига программистов

Задача по SQL с неочевидным решением⁠⁠

Задача по SQL с неочевидным решением IT, Программирование, Собеседование, Тестирование, Фриланс, SQL, Oracle, Программист, Ms SQL, Mysql, Postgresql, Postgres, База данных, Длиннопост

Здравствуй, уважаемый читатель! Спасибо, что заходишь ко мне на канал и изучаешь SQL со мной!

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

В базе данных есть таблица анализов Analysis, имеющая следующие столбцы: an_id — ID анализа; an_name — название анализа; an_price — цена анализа; an_group — группа анализов. Есть, также, таблица заказов Orders: ord_id — ID заказа; ord_datetime — дата и время заказа; ord_an — ID анализа. Необходимо вывести название и цену для всех анализов, которые продавались 5 февраля 2020 и всю следующую неделю.

Тут сделай паузу и попробуй сначала сам решить задачу.

Итак, надеюсь, ты делал паузу и составил SQL-запрос. Далее будем решать вместе.

Напомню, что нужно было вывести список анализов и их цену, которые продавались 05.02.2022 и всю следующую неделю.

Первым решением напрашивается соединение таблицы анализов и таблицы продаж с применением условия на период. Кстати, именно это и указано в качестве ответа на задачу.

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

select  a.an_name, a.an_cost from  analysis a where  exists (select 1 from orders  where ord_an = a.an_id  and ord_datetime between to_date('05.02.2022', 'dd.mm.yyyy') and to_date('05.02.2022', 'dd.mm.yyyy') + 7)

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

Задача по SQL с неочевидным решением IT, Программирование, Собеседование, Тестирование, Фриланс, SQL, Oracle, Программист, Ms SQL, Mysql, Postgresql, Postgres, База данных, Длиннопост

а не:

Задача по SQL с неочевидным решением IT, Программирование, Собеседование, Тестирование, Фриланс, SQL, Oracle, Программист, Ms SQL, Mysql, Postgresql, Postgres, База данных, Длиннопост

В примере, что я нашёл в интернете (ссылка ниже), помимо названий анализов и их стоимостей, выведен ещё и столбец с датами заказов. По условиям задачи вывод этого столбца не запрашивался. Не требовался вывод никакой информации о заказах/продажах. Поэтому и надобности в соединении я не усмотрел. Наоборот, это и потенциально замножит вывод анализов, которые покупали в запрашиваемый период, и прибавит лишнюю работу СУБД.

Ссылка на источник: https://tproger.ru/articles/5-zadanij-po-sql-s-realnyh-sobesedovanij

Поддержи статью лайком или подпиской!

Ещё больше интересных практических задач по SQL и задач с собеседований в нашем Телеграмм-канале и в интернете :)

Показать полностью 3
[моё] IT Программирование Собеседование Тестирование Фриланс SQL Oracle Программист Ms SQL Mysql Postgresql Postgres База данных Длиннопост
8
2
IliaHohlov
IliaHohlov
10 месяцев назад
Лига программистов

Задачи с собеседования по SQL⁠⁠1

Всем привет!

Продолжаем разбирать SQL задачи с собеседований с нашего Телеграм-канала!

В базе данных есть таблица TMP_TABLE, имеющая всего два столбца и содержащая следующие данные:

TMP_TABLE

column1 column2

-----------------------------------------

12 12

NULL 13

12 14

NULL NULL

13 15

Какое значение вернёт следующий запрос?

SELECT COUNT(*) FROM TMP_TABLE

Задачи с собеседования по SQL Программирование, Собеседование, IT, SQL, Задача, Аналитика, База данных, Ms SQL, Oracle, Postgresql, Postgres, Mysql, Тестирование, Telegram (ссылка)
Показать полностью 1
[моё] Программирование Собеседование IT SQL Задача Аналитика База данных Ms SQL Oracle Postgresql Postgres Mysql Тестирование Telegram (ссылка)
68
0
IliaHohlov
IliaHohlov
10 месяцев назад
Лига программистов

ЗАДАЧИ ПО SQL⁠⁠

Всем доброго понедельника!

Как насчёт очередной небольшой задачи по SQL с нашего Телеграм-канала?

В таблице INVOICES две строки. В первой строке в столбце QTY число 25, во второй строке в этом же столбце лежит NULL.

Какой будет результат запроса?

SELECT SUM(QTY) FROM INVOICES

ЗАДАЧИ ПО SQL Программирование, IT, Собеседование, SQL, Oracle, Postgresql, Mysql, Тестирование, Программист, Telegram (ссылка)
Программирование IT Собеседование SQL Oracle Postgresql Mysql Тестирование Программист Telegram (ссылка)
35
IliaHohlov
IliaHohlov
11 месяцев назад
Лига программистов

ЗАДАЧА-ТЕСТ ПО SQL⁠⁠

Всем привет!

Как насчет небольшой задачи по SQL с нашего Телеграм-канала? По сложности назначаю 1 звёздочку из пяти! Проверьте себя, ничего не забыли из основы основ? И внимательно читаем условие задачи, ато обидно будет ответить не правильно на достаточно простой задаче 😉

Таблица PERS определена следующим образом:

(ID NUMBER NOT NULL PRIMARY KEY,

NAME VARCHAR(100) NOT NULL)

Запрос

SELECT COUNT(*) FROM PERS WHERE NAME = 'Иванов Иван Иванович'

возвращает число 2.

Сколько строк вернёт следующий запрос?

SELECT DISTINCT ID, NAME FROM PERS WHERE NAME = 'Иванов Иван Иванович'

ЗАДАЧА-ТЕСТ ПО SQL IT, Собеседование, Программирование, SQL, Oracle, Mysql, База данных, Telegram (ссылка)
Показать полностью 1
IT Собеседование Программирование SQL Oracle Mysql База данных Telegram (ссылка)
33
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
4
lookingaround
lookingaround
1 год назад
Серия Стек PHP/MySQL на реальных примерах

Изучение стека PHP/MySQL на реальном проекте⁠⁠

Всем привет.

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

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

Чтобы начать выполнять этого задания, вам придется самим изучить синтаксис PHP и HTML. Благо, там нет ничего сложного.

Да, это задание не даст вам глубокого понимания всего происходящего, но это позволит нырнуть в реальную разработку и не бояться кода.

Если реально будет интерес, то могу составить детальное задание с тасками, в которых также будут использоваться паттерны ООП. Это займет какое-то время.

Благодарю за внимание!

P.S. никакого подвоха, просто мне заняться нечем

[моё] Программирование Обучение Разработка IT PHP Mysql Текст
18
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии