Снизу вверх.
Цитата |
mysql_real_escape_string вырезает только '\n', '\r', '\', ''', '"'. Почему нельзя вырезать ещё пробелы и хтмл теги?. |
Вопервых эта функция ничего не вырезает, а только экранирует. Во вторых, я ни слова не написал, что нельзя. Это зависит от потребностей, которых тут невидно. Может и требует логика приложения их вырезать, только к безопасности это отношения не имеет.
Дальше. Я почему и написал, что не вижу защиты от F5, а вижу геморрой, который ни тебе ни юзеру не даст ничего хорошего. Делается это простым редиректом. А если нужен флуд-контроль, то это гораздо сложнее, чем проверить и убить сессию.
Про кодировки. Если это маленький сайтец для побаловаться, то вопросов нет, можно и так. Это дело привычки. Просто потом не станет работать аякс к примеру или с почтой вечно неурядицы. И так далее. Если уж заниматься серьёзно, то нужно сразу привыкать к нормальной кодировке.
Экзит можно заменить логикой. иф... ельзе. И выводить отформатированную, с дизайном, красивую страницу. А на ней вывести предупреждение о ошибке.
А переменные должны быть объявлены. Вот у тебя идет прямое обращение к массиву POST. А если в нем нет такого элемента, то есть поле не заполнено? Это не просто пустое поле, это отсутствие переменной. То есть интерпретатор обращается вникуда. Если есть переменная, но она пустая - это одно. А когда её нет - это другое. И это очень плохо. Нужно сначала проверить, есть ли такой элемент. А потом, если по логике нужно обращение к переменной, объявить её. То есть записать начальное значение. Пусть даже пустоту. Вот так:
PHP |
if(!empty($_POST['name'])) $name = $_POST['name']; else $name = NULL; |
Либо тернарным оператором.
PHP |
$name = !empty($_POST['name'])?$_POST['name']:NULL; |
А уже после засовывать её в кучу функций, которые на мой взгляд тут совсем ни к месту. По крайней мере strip_tags().
Но это дело уже хозяйское.