<?php
function
validateCredentials($login, $password) {
$errors
= [];
//
Проверка логина (3-15 символов)
if
(strlen($login) < 3 || strlen($login) > 15) {
$errors[]
= "Логин должен содержать от 3 до 15
символов";
}
//
Проверка пароля (10-15 символов)
if
(strlen($password) < 10 || strlen($password) > 15) {
$errors[]
= "Пароль должен содержать от 10 до
15 символов";
}
return
$errors;
}
-
//
Обработка формы
if
($_SERVER["REQUEST_METHOD"] == "POST") {
$login
= $_POST['login'];
$password
= $_POST['password'];
$email
= $_POST['email'];
//
Валидация данных
$validationErrors
= validateCredentials($login, $password);
if
(empty($validationErrors)) {
//
Подключение к базе данных
$conn
= new mysqli("localhost", "root", "mysql",
"users_1lab");
if
($conn->connect_error) {
die("Ошибка
подключения:
" . $conn->connect_error);
}
//
ХЭШИРОВАНИЕ ПАРОЛЯ
$hashed_password
= password_hash($password, PASSWORD_DEFAULT);
//
SQL запрос с хэшированным паролем
$sql
= "INSERT INTO users (login, password, email) VALUES
('$login', '$hashed_password', '$email')";
if
($conn->query($sql) === TRUE) {
echo
" Пользователь добавлен! Пароль
хэширован.<br><br>";
}
else {
echo
" Ошибка: " . $conn->error;
}
$conn->close();
}
else {
//
Показываем ошибки валидации
foreach
($validationErrors as $error) {
echo
" $error<br>";
}
echo
"<br>";
}
}
?>
-
<h2>Упражнение
6: Хэширование паролей</h2>
-
<form
method="post" action="">
<label>Логин
(3-15 символов):</label><br>
<input
type="text" name="login" required><br><br>
<label>Пароль
(10-15 символов):</label><br>
<input
type="password" name="password"
required><br><br>
<label>Email:</label><br>
<input
type="email" name="email" required><br><br>
<input
type="submit" value="Добавить
пользователя">
</form>
-
<?php
//
Показываем пользователей с хэшированными
паролями
$conn
= new mysqli("localhost", "root", "mysql",
"users_1lab");
-
if
(!$conn->connect_error) {
$result
= $conn->query("SELECT * FROM users");
if
($result->num_rows > 0) {
echo
"<h3>Пользователи с хэшированными
паролями:</h3>";
echo
"<table border='1'>";
echo
"<tr><th>ID</th><th>Логин</th><th>Хэш
пароля</th><th>Email</th></tr>";
while($row
= $result->fetch_assoc()) {
$short_hash
= substr($row['password'], 0, 20) . '...';
echo
"<tr>";
echo
"<td>" . $row["id"] . "</td>";
echo
"<td>" . $row["login"] . "</td>";
echo
"<td>" . $short_hash . "</td>";
echo
"<td>" . $row["email"] . "</td>";
echo
"</tr>";
}
echo
"</table>";
}
$conn->close();
}
?>
-