Есть переменная POST. Нужно проверить ее знач. на соответстиве знач. поля в БД. Как?

Camillo

Новичок
Есть переменная POST. Нужно проверить ее знач. на соответстиве знач. поля в БД. Как?

Привет всем.

На самом деле очень для меня актуальный вопрос на данный момент.
У меня есть переменная POST, например $_POST['siteId'].
Также есть БД с таблицей, в которой перечислены все допустимые значения, которые может принимать эта переменная. Например эта переменная может принимать значения 1a,2b,3c,45a,5abc,6s,7,10,20a.

Каким образом проверить входит ли значение этой переменной в вышеуказанный набор?

Пока что ничего кроме такого не приходит в голову:

PHP:
function validateSiteId($var) {
	if (isset($var)) {
		$query = "SELECT * FROM `scms_sitesList`";
		$result = mysql_query($query) or die(mysql_error());
		while ($row = mysql_fetch_array($result)) {
			if ($var == $row['siteId']) {return true;}
		}
		return false;
	}
	else {
		return false;
	}
}
 

sage

Новичок
условие в запросе задай....
WHERE что-то = $_POST['siteId']
 

Camillo

Новичок
Не - я это делаю как раз, чтобы исключить появление переменной $_POST['siteId'] в запросе, т.е. как бы предохраняю себя от того, чтобы появились какие-то посторонние значения этой переменной.
 

sage

Новичок
какие посторонние значения? ты выбираешь строки, у которых совпадают значения, а потом проверяешь на кол-во таких строк.
 

Camillo

Новичок
Ну а допустим запрашиваемый присвоит этой переменной какое-то значение с ковычками - и хоп уже ошибочка SQL запроса... читай инъекция.
...
хотя в принципе согласен - нужно просто ее заэскейпить, предварительно проверив на то, включены magic_quotes или нет.

я прав?

-~{}~ 07.05.06 01:33:

Просто меня запугали всякими этими инъекциями и я теперь проверяю на валидность абсолютно всё, что можно проверить.
 

Camillo

Новичок
sage, Спасибо. Очень полезная ссылка. Прочитал, все понял; необходимый "код защиты" нашел на php.net в соотв. разделе.
 
Сверху