Лабораторные работы. Краева / Web-технологии. Отчет №7
.pdf
<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
