При добавлении данных в бд, для предотвращения SQL-инъекции, все данные пропускаем через
mysql_real_escape_string:
function sanitize($string) {
return "'" . mysql_real_escape_string($string) . "'";
}
$query = sql_sprintf(
"SELECT * FROM users WHERE user=%s AND mail=%s",
sanitize($_POST['login']),
sanitize($_POST['mail'])
);
Для предотвращения XSS, в артибутах используем
htmlentities(), в остальных местах
htmlspecialchars():
<div data-attr="<?= htmlentities($var)?>"><?= htmlspecialchars($var)?></div>
Но, как уже сказал
@Fesor, для работы с базой данных нужно использовать
PDO или DBAL, но не функции mysql_*, которые не рекомендуется использовать (даже специальные красные предупреждающие плашки на страницах документации есть).
Для проверки загруженной картинки используй функцию
getimagesize().