Подскажите пожалуйста, уважаемые мастера, правильно ли я отфильтровал данные? Новичок, и вот разбираюсь, как фильтровать данные перед добавление их в БД и выводом пользователям. Вот собственно мой код: Код (PHP): <meta charset="UTF-8"> <?php $login = 'root'; $pass = '111111'; $dbname = 'new'; $hostname = 'localhost'; $db = new mysqli($hostname, $login, $pass, $dbname); if ($db -> connect_error) die ($db -> connect_error); echo ' <table><tr><th>Your Name:</th><th>Your text:</th></tr> <form method="POST" action="strip_tags.php"> <tr><th><input type="text" name="name"></th> <th><textarea cols=30 rows=5 name="text"></textarea></th></tr> <th><input type="submit" name="submit" value="SEND"></th></table> </form> '; if (isset($_POST['submit'])) { $name = filter($_POST['name']); $text = filter($_POST['text']); if ($name == '') echo 'Вы оставили пустое полу name<br>'; if ($text == '') echo 'Вы оставили пустое поле text<br>'; if (($name != '') AND ($text != '')) { $name = $db -> real_escape_string($name); $text = $db -> real_escape_string($text); $query = "INSERT INTO `users` VALUES('-', '".$name."', '".$text."')"; $result = $db -> query($query); echo $name.'<br>'. $text . '<br>'; if (!$result) echo $db -> error; if ($result) echo 'Успешное добавление новых данных'; } } echo '<br><br>'; $result = $db -> query("SELECT * FROM `users`"); $row = $result -> num_rows; for ($i = 0; $i < $row; $i++) { $result -> data_seek($i); $rows = $result -> fetch_array(MYSQLI_ASSOC); echo 'User id - ' . $rows['id'] . '<br>'; echo 'User name - ' . $rows['name'] . '<br>'; echo 'User text - ' . $rows['text'] . '<br><hr>'; } $result -> close(); $db -> close(); function filter($var) { if (get_magic_quotes_gpc()) $var = stripslashes($var); $var = htmlspecialchars($var); return $var; } ?>
имхо не правильно. не надо ломать данные при добавлении. эскейпа достаточно. и отучись итерировать результат через фор до кол-ва строк - сама по себе операция вычисления кол-ва строк порой ресурсоемкая. делай while($row = mysqli_fetch_array()) или как тебе удобнее
кодировку не установил в подключении к бд $db->set_charset(кодировка) - раз. два - не экранировал вывод в html, там тожно можно вставить ченить типа <script> или <img> в $rows['name'] или $rows['text'] и т.п.