Тут вот в чём у меня проблема: читал статью про анти sql-inj, написал там, но никто ничего не написал. Я пытаюсь понять минусы использования такого метода выборки из базы данных. PHP: $myid=intval($_GET['id']); $q="SELECT * FROM mytable WHERE id=".myid; ... и передачи параметра id строкой(даже если поле id числовое): PHP: $myid=mysql_real_escape_string($_GET['id']); $q="SELECT * FROM mytable WHERE id=' ".myid." ' ";//без пробелов ... Идёт всё равно конвертация в числовой тип, обрезая строку начиная с символа с которого не удалось преобразование. Какой смысл разделять строковые и числовые параметры, если можно строкой. (скрипт довольно простой, без проверки на magic_quotes, но не в этом смысл)
ну я понимаю, но если у меня в скрипте, например, используется как текстовые, так и числовые колонки, так какой смысл мне использовать intval(), если я могу просто отправлять всё строкой, что, по моему, безопастней(хотя может я не очень хорошо знаю нюансы intval'а)
to Seravin, intval() получает целочисленное значение переменной. То есть в запросе нужно 100% иметь число, а не строку что-нибудь ещё. А какое там поле (если вы про html) это не важно. Пользователь всегда может подсунуть левые данные. addslashes() экранирует спецсимволы в строке. Это из другой серии функция. К числам никакого отношения не имеет и не спасет от подсовывания в запрос строки, там где должна быть цифра.
Seravin тогда уж mysql_real_escape_string() потому что addslashes() обходиться при мультибайтовых кодировках в бд, кроме UTF-8
Ты мне мануал по функциям написал??? я это знаю, но если ты читал бы внимательно, то не писал бы этого