software:development:web:docs:learn:mariadb:вatabase_creation_pdo
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| software:development:web:docs:learn:mariadb:вatabase_creation_pdo [2026/02/23 10:00] – [Удаление данных в PDO] VladPolskiy | software:development:web:docs:learn:mariadb:вatabase_creation_pdo [2026/02/23 11:53] (текущий) – [Дополнения и Файлы] VladPolskiy | ||
|---|---|---|---|
| Строка 824: | Строка 824: | ||
| </ | </ | ||
| Для удаления данных также может применяться метод **%%exec()%%** объекта **PDO**. Например, | Для удаления данных также может применяться метод **%%exec()%%** объекта **PDO**. Например, | ||
| + | <code sql SQL> | ||
| + | CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), | ||
| + | </ | ||
| + | Рассмотрим следующий пример удаления пользователя со значением **id = 5** | ||
| + | <code sql delete_user.php> | ||
| + | <?php | ||
| + | try { | ||
| + | $conn = new PDO(" | ||
| + | $sql = " | ||
| + | $affectedRowsNumber = $conn-> | ||
| + | echo " | ||
| + | } | ||
| + | catch (PDOException $e) { | ||
| + | echo " | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | Результат метода **%%$conn-> | ||
| + | \\ | ||
| + | </ | ||
| + | Итак, определим для вывода всех объектов из БД скрипт **index_test.php**: | ||
| + | <code php index_test.php> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <meta charset=" | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | <?php | ||
| + | try { | ||
| + | $conn = new PDO(" | ||
| + | $sql = " | ||
| + | $result = $conn-> | ||
| + | echo "< | ||
| + | foreach($result as $row){ | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | <input type=' | ||
| + | <input type=' | ||
| + | </ | ||
| + | echo "</ | ||
| + | } | ||
| + | echo "</ | ||
| + | } | ||
| + | catch (PDOException $e) { | ||
| + | echo " | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | В таблицы для каждой строки определена форма, которая посылает данные в **%%POST%%**-запросе скрипту **%%delete.php%%**. Чтобы передать в **%%delete.php%%** идентификатор удаляемого объекта, | ||
| + | |||
| + | Обратите внимание, | ||
| + | |||
| + | <code html exsample.html> | ||
| + | <a href=" | ||
| + | </ | ||
| + | |||
| + | которая оправляет данные в GET-запросе, | ||
| + | |||
| + | <code html exsample.html> | ||
| + | <img src=" | ||
| + | </ | ||
| + | |||
| + | В итоге при открытии письма 1-я запись в таблице может быть удалена. Уязвимость касается не только писем, но может проявляться и в других местах, | ||
| + | |||
| + | Теперь определим сам скрипт **delete_user.php**, | ||
| + | <code sql delete_user.php> | ||
| + | <?php | ||
| + | if(isset($_POST[" | ||
| + | { | ||
| + | try { | ||
| + | $conn = new PDO(" | ||
| + | $sql = " | ||
| + | $stmt = $conn-> | ||
| + | $stmt-> | ||
| + | $stmt-> | ||
| + | header(" | ||
| + | } | ||
| + | catch (PDOException $e) { | ||
| + | echo " | ||
| + | } | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | В данном случае скрипт получает через POST-запрос значение id и по этому идентификатору выполняет удаление. После чего происходит переадресация на скрипт index_test.php. | ||
| + | \\ | ||
| + | http:// | ||
| + | <note shadow> | ||
| + | {{: | ||
| + | </ | ||
| + | Результат работы скрипта, | ||
| + | <note shadow> | ||
| + | {{: | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Заключение ===== | ||
| + | Изменим пути переадресации в файлах **delete_user** и **update_user** | ||
| + | <code php exsample.php> | ||
| + | header(" | ||
| + | </ | ||
| + | Также добавим данный код в строку | ||
| + | <code php create_user_form.php> | ||
| + | if($affectedRowsNumber > 0 ){ | ||
| + | echo " | ||
| + | header(" | ||
| + | </ | ||
| + | И наконец создадим файл **setting_user** который будет объединять вышенаписанное в один файл управления пользователями | ||
| + | <code php setting_user.php> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <meta charset=" | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | <?php | ||
| + | echo "< | ||
| + | try { | ||
| + | $conn = new PDO(" | ||
| + | $sql = " | ||
| + | $result = $conn-> | ||
| + | echo "< | ||
| + | foreach($result as $row){ | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | echo "< | ||
| + | <input type=' | ||
| + | <input type=' | ||
| + | </ | ||
| + | echo "</ | ||
| + | } | ||
| + | echo "</ | ||
| + | } | ||
| + | catch (PDOException $e) { | ||
| + | echo " | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | http:// | ||
| + | <note shadow> | ||
| + | {{: | ||
| + | </ | ||
| ===== Дополнения и Файлы ===== | ===== Дополнения и Файлы ===== | ||
| + | * [[https:// | ||
| + | <note shadow> | ||
| + | {{ : | ||
| + | </ | ||
| + | <note shadow> | ||
| + | {{ : | ||
| + | </ | ||
software/development/web/docs/learn/mariadb/вatabase_creation_pdo.1771830027.txt.gz · Последнее изменение: — VladPolskiy
