Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы. Краева / Web-технологии. Отчет №7.docx
Скачиваний:
1
Добавлен:
25.11.2025
Размер:
1.84 Mб
Скачать

Приложение

Users.php

  1. <?php

  2. // users.php -

  3. $host = '127.0.0.1'; // или 'localhost'

  4. $port = 3306;        

  5. $user = 'root';

  6. $pass = 'mysql';

  7. $db   = 'SocialSite';

  8. // соединение

  9. $conn = mysqli_connect($host, $user, $pass, $db, $port);

  10. if (!$conn) {

  11.     die("Connection failed: " . mysqli_connect_error());

  12. }

  13. // запрос

  14. $sql = "SELECT id, nickname, login FROM Users";

  15. $result = mysqli_query($conn, $sql);

  16. if ($result && mysqli_num_rows($result) > 0) {

  17.     echo "<table border='1' cellpadding='6'><tr><th>ID</th><th>Nickname</th><th>Login</th></tr>";

  18.     while ($row = mysqli_fetch_assoc($result)) {

  19.         echo "<tr><td>".htmlspecialchars($row['id'])."</td>"

  20.            . "<td>".htmlspecialchars($row['nickname'])."</td>"

  21.            . "<td>".htmlspecialchars($row['login'])."</td></tr>";

  22.     }

  23.     echo "</table>";

  24. } else {

  25.     echo "0 results";

  26. }

  27. mysqli_close($conn);

  28. ?>

Users.2php

  1. <?php

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

  3.     $servername = "localhost";

  4.     $username = "root";

  5.     $password = "mysql";

  6.     $dbname = "users_1lab";

  7.    

  8.     $conn = new mysqli($servername, $username, $password, $dbname);

  9.    

  10.     if ($conn->connect_error) {

  11.         die("Ошибка подключения: " . $conn->connect_error);

  12.     }

  13.    

  14.     $login = $_POST['login'];

  15.     $password = $_POST['password'];

  16.     $email = $_POST['email'];

  17.    

  18.     $sql = "INSERT INTO users (login, password, email) VALUES ('$login', '$password', '$email')";

  19.    

  20.     if ($conn->query($sql) === TRUE) {

  21.         echo " Данные успешно записаны в базу users_1lab!<br><br>";

  22.     } else {

  23.         echo " Ошибка: " . $sql . "<br>" . $conn->error;

  24.     }

  25.    

  26.     $conn->close();

  27. }

  28. ?>

  29. <h2>Упражнение 5: Запись данных в БД users_1lab</h2>

  30. <form method="post" action="">

  31.     <label>Логин:</label><br>

  32.     <input type="text" name="login" required><br><br>

  33.    

  34.     <label>Пароль:</label><br>

  35.     <input type="password" name="password" required><br><br>

  36.    

  37.     <label>Email:</label><br>

  38.     <input type="email" name="email" required><br><br>

  39.    

  40.     <input type="submit" value="Добавить пользователя">

  41. </form>

  42. <?php

  43. // Показываем текущих пользователей из базы

  44. $servername = "localhost";

  45. $username = "root";

  46. $password = "mysql";

  47. $dbname = "users_1lab";

  48. $conn = new mysqli($servername, $username, $password, $dbname);

  49. if (!$conn->connect_error) {

  50.     $result = $conn->query("SELECT * FROM users");

  51.    

  52.     if ($result->num_rows > 0) {

  53.         echo "<h3>Текущие пользователи в базе users_1lab:</h3>";

  54.         echo "<table border='1'>";

  55.         echo "<tr><th>ID</th><th>Логин</th><th>Пароль</th><th>Email</th></tr>";

  56.        

  57.         while($row = $result->fetch_assoc()) {

  58.             echo "<tr>";

  59.             echo "<td>" . $row["id"] . "</td>";

  60.             echo "<td>" . $row["login"] . "</td>";

  61.             echo "<td>" . $row["password"] . "</td>";

  62.             echo "<td>" . $row["email"] . "</td>";

  63.             echo "</tr>";

  64.         }

  65.         echo "</table>";

  66.     } else {

  67.         echo "<p>В базе данных пока нет пользователей.</p>";

  68.     }

  69.    

  70.     $conn->close();

  71. }

  72. ?>

Users3.php

  1. <?php

  2. function validateCredentials($login, $password) {

  3.     $errors = [];

  4.    

  5.     // Проверка логина (3-15 символов)

  6.     if (strlen($login) < 3 || strlen($login) > 15) {

  7.         $errors[] = "Логин должен содержать от 3 до 15 символов";

  8.     }

  9.    

  10.     // Проверка пароля (10-15 символов)

  11.     if (strlen($password) < 10 || strlen($password) > 15) {

  12.         $errors[] = "Пароль должен содержать от 10 до 15 символов";

  13.     }

  14.    

  15.     return $errors;

  16. }

  17. // Обработка формы

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

  19.     $login = $_POST['login'];

  20.     $password = $_POST['password'];

  21.     $email = $_POST['email'];

  22.    

  23.     // Валидация данных

  24.     $validationErrors = validateCredentials($login, $password);

  25.    

  26.     if (empty($validationErrors)) {

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

  28.         $conn = new mysqli("localhost", "root", "mysql", "users_1lab");

  29.        

  30.         if ($conn->connect_error) {

  31.             die("Ошибка подключения: " . $conn->connect_error);

  32.         }

  33.        

  34.         // ХЭШИРОВАНИЕ ПАРОЛЯ

  35.         $hashed_password = password_hash($password, PASSWORD_DEFAULT);

  36.        

  37.         // SQL запрос с хэшированным паролем

  38.         $sql = "INSERT INTO users (login, password, email) VALUES ('$login', '$hashed_password', '$email')";

  39.        

  40.         if ($conn->query($sql) === TRUE) {

  41.             echo " Пользователь добавлен! Пароль хэширован.<br><br>";

  42.         } else {

  43.             echo " Ошибка: " . $conn->error;

  44.         }

  45.        

  46.         $conn->close();

  47.     } else {

  48.         // Показываем ошибки валидации

  49.         foreach ($validationErrors as $error) {

  50.             echo " $error<br>";

  51.         }

  52.         echo "<br>";

  53.     }

  54. }

  55. ?>

  56. <h2>Упражнение 6: Хэширование паролей</h2>

  57. <form method="post" action="">

  58.     <label>Логин (3-15 символов):</label><br>

  59.     <input type="text" name="login" required><br><br>

  60.    

  61.     <label>Пароль (10-15 символов):</label><br>

  62.     <input type="password" name="password" required><br><br>

  63.    

  64.     <label>Email:</label><br>

  65.     <input type="email" name="email" required><br><br>

  66.    

  67.     <input type="submit" value="Добавить пользователя">

  68. </form>

  69. <?php

  70. // Показываем пользователей с хэшированными паролями

  71. $conn = new mysqli("localhost", "root", "mysql", "users_1lab");

  72. if (!$conn->connect_error) {

  73.     $result = $conn->query("SELECT * FROM users");

  74.    

  75.     if ($result->num_rows > 0) {

  76.         echo "<h3>Пользователи с хэшированными паролями:</h3>";

  77.         echo "<table border='1'>";

  78.         echo "<tr><th>ID</th><th>Логин</th><th>Хэш пароля</th><th>Email</th></tr>";

  79.        

  80.         while($row = $result->fetch_assoc()) {

  81.             $short_hash = substr($row['password'], 0, 20) . '...';

  82.             echo "<tr>";

  83.             echo "<td>" . $row["id"] . "</td>";

  84.             echo "<td>" . $row["login"] . "</td>";

  85.             echo "<td>" . $short_hash . "</td>";

  86.             echo "<td>" . $row["email"] . "</td>";

  87.             echo "</tr>";

  88.         }

  89.         echo "</table>";

  90.     }

  91.    

  92.     $conn->close();

  93. }

  94. ?>

Санкт-Петербург

2025