Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы. Краева / Web-технологии. Отчет №7

.pdf
Скачиваний:
1
Добавлен:
25.11.2025
Размер:
2.28 Mб
Скачать

<br><br>

<input type="submit" value="Отправить в базу данных"> <input type="reset" value="Очистить">

</form>

<?php

// Показываем пользователей с хэшированными паролями $servername = "localhost";

$username = "root"; $password_db = "mysql"; $dbname = "users_1lab";

$conn = new mysqli($servername, $username, $password_db, $dbname);

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>Город</th><th>Email</th><th>Возраст</th><th>Хобби</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 title='" . $row['password'] . "'>" . $short_hash . "</td>"; echo "<td>" . $row["country"] . "</td>";

echo "<td>" . $row["mail"] . "</td>"; echo "<td>" . $row["age"] . "</td>"; echo "<td>" . $row["hobby"] . "</td>"; echo "</tr>";

}

echo "</table>"; } else {

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

}

$conn->close();

}

?>

</body>

</html>

Приложение 3.

Итог

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

10

Приложение

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.// соединение

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

11.if (!$conn) {

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

13.}

14.

15.// запрос

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

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

18.

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

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

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

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

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

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

25.}

26.echo "</table>";

27.} else {

28.echo "0 results";

29.}

30.mysqli_close($conn);

31.?>

32.

33.

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'];

11

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.

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

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

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

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

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

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

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

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

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

43.</form>

44.

45.<?php

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

47.$servername = "localhost";

48.$username = "root";

49.$password = "mysql";

50.$dbname = "users_1lab";

51.

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

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

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

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

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

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

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

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

63.echo "<tr>";

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

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

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

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

68.echo "</tr>";

69.}

70.echo "</table>";

71.} else {

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

73.}

74.

75.$conn->close();

76.}

77.?>

78.

Users3.php

1. <?php

12

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.// Обработка формы

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

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

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

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

23.

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

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

27.if (empty($validationErrors)) {

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

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

31.if ($conn->connect_error) {

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

33.}

34.

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

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

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

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

40.

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

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

43.} else {

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

45.}

46.

47.$conn->close();

48.} else {

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

50.foreach ($validationErrors as $error) {

51.echo " $error<br>";

52.}

53.echo "<br>";

54.}

55.}

56.?>

57.

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

59.

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

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

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

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

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

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

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

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

13

71. </form>

72.

73.<?php

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

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

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

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

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

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

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

83.echo "<tr><th>ID</th><th>Логин</th><th>Хэш

пароля</th><th>Email</th></tr>";

84.

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

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

87.echo "<tr>";

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

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

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

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

92.echo "</tr>";

93.}

94.echo "</table>";

95.}

96.

97.$conn->close();

98.}

99.?>

100.

14