Обучение/Помощь новичкам | Закрыл дыру верно?
[KENT] , Понимать там не чего, вот тебе инфа https://php.net/manual/ru/book.filter.php
$form = [
'test1' => isset($_POST['test1']) ? mysql_real_escape_string(trim($_POST['test1'])) : null,
'test2' => isset($_POST['test2']) ? mysql_real_escape_string(trim($_POST['test2'])) : null,
'test3' => isset($_POST['test3']) ? mysql_real_escape_string(trim($_POST['test3'])) : null,
];
Mr.Max (29.07.2019 в 14:55)
Ну и олени. Это же насколько тупыми нужно быть
Для цыфр
$test = abs(intval($_POST['test']));
Для текстовых переменных
$test = htmlspecialchars(trim($_POST['test']));
mysql_real_escape_string устарела уже. Нафиг не юзать вообще .
И не
$test = $_POST['test'];
$test = htmlspecialchars($test);
$test = trim($test);
$test = mysql_real_escape_string($test);
А если на то пошло
$test = htmlspecialchars(trim(mysql_real_escape_string($_POST['test'])));
Хотя
$test = htmlspecialchars(trim($_POST['test']));
Достаточно
И лучше не переменную присваивать а передавать напрямую тем самым сокращая и не писать кучу Г кода
Ну и олени. Это же насколько тупыми нужно быть
Для цыфр
$test = abs(intval($_POST['test']));
Для текстовых переменных
$test = htmlspecialchars(trim($_POST['test']));
mysql_real_escape_string устарела уже. Нафиг не юзать вообще .
И не
$test = $_POST['test'];
$test = htmlspecialchars($test);
$test = trim($test);
$test = mysql_real_escape_string($test);
А если на то пошло
$test = htmlspecialchars(trim(mysql_real_escape_string($_POST['test'])));
Хотя
$test = htmlspecialchars(trim($_POST['test']));
Достаточно
И лучше не переменную присваивать а передавать напрямую тем самым сокращая и не писать кучу Г кода
Зачем POST переменную заворачивать в abs, intval?
Если GET, тогда фильтровать нужно. И дочтаточно всего лишь (int)$_GET['id'] без всяких там abs и intval.
VaDoSiQ , С pdo С этим можно не париться?
TuT (29.07.2019 в 15:43)
[KENT] , Вот используй фильтрацию, заодно погугли эти функции
[KENT] , Вот используй фильтрацию, заодно погугли эти функции
<?
$test = filter_input(INPUT_POST, 'test', FILTER_SANITIZE_STRING); А вообще автор!
Не используй MySQL, это устаревший и не безопасный драйвер. Начинай сразу с PDO, тут все легко.
Пишем форму
$form = [
'test' => isset($_POST['test']) ? trim($_POST['test']) : null,
'error' => [],
]; Проверяем существует ли переменная, если да, обьявляем ее и функцией trim убираем лишние пробелы. Далее массив error, он будет содержать ошибки формы, если к примеру ты не заполнил ее.
Проверяем, заполнена ли форма
if(empty($form['test'])) {
$form['error']['test'] = 'Переменная test не заполнена.';
} И смотрим был ли вызван массив error
if(count($form['error']) == 0) {
$stmt = $db->prepare('INSERT INTO `products` SET `test` = :test');
$stmt->bindParam(':test', $form['test'], PDO::PARAM_STR);
$stmt->execute();
} Если вызван, код в условии не выполнится, если же все переменные определены и заполнены, код выполнится.
Mr.Max (29.07.2019 в 14:55)
$test = htmlspecialchars(trim($_POST['test'])); И зачем тут htmlspecialchars? Откуда ты знаешь что он в базу писать будет?
Если он html теги будет записывать, тогда да. И выводить с помощью htmlspecialchars_decode().
достаточно всего trim()