наименование переменных в URL=наименование полей таблиц базы

Фанат

oncle terrible
Команда форума
слава богу - родил

-~{}~ 31.03.05 15:37:

PHP:
$w=array(); //обязательно!!!
if ($_GET['field1']) $w[]="field1='".adds($_GET['field1'])."'"; 
if ($_GET['field2']) $w[]="field2='".adds($_GET['field2'])."'"; 
if (count($w)) $where="where ".implode(" AND ",$w);
$query="select * from table $where";
имена полей можешь делать похожими на бд, можешь не делать - это неважно
про Adds читай здесь PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.
 

frk

Новичок
Автор оригинала: Фанат
.............
Если толком не можешь задать вопрос - и не надо задавать
все, беру свои слова обратно......проблему описал снова...более подробно

-~{}~ 31.03.05 16:01:

Автор оригинала: Фанат
слава богу - родил

-~{}~ 31.03.05 15:37:

...........
имена полей можешь делать похожими на бд, можешь не делать - это неважно
про Adds читай здесь PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.
большое спасибо

впредь постараюсь задавать вопросы более развернуто

ЗЫ
--------------------------------------
все таки важно иногда прислушиваться к мнению других
 

vafel

Новичок
Мутник

просто у меня все само собирается и с БД работает ... время экономит

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

-~{}~ 31.03.05 16:09:

Фанат
if ($_GET['field1']) $w[]="field1=".adds($_GET['field1']);
на 25-м поле уже сдохнуть можно )
 

Фанат

oncle terrible
Команда форума
vafel
если у тебя все поля однообразные, то нет проблем - крути в цикле.
но у меня в формах поиска такого никогда не бывало.
где-то берется диапазон, где-то наличие, где-то - отсутствие, где-то борльше или меньше. где-то точное соответствие, а где-то - лайк.
так что, только руками.
 

vafel

Новичок
можно так еще
PHP:
$keys = array('key_query_string' =>  'key_db' ..)
$w=array();
$where = '1';
forech ($_GET['obj'] as $key => $value){
    if (isset($keys[$key])) $w[] = $keys[$key]."='".adds($value)."'";
}
if (count($w)) $where="where ".implode(" AND ",$w); 
$query="select * from table $where";
-~{}~ 31.03.05 16:21:

Фанат
а ну при поиске то согласен, я просто думал автора вопрос интересует в общем.
 

t3[0one]

Новичок
PHP:
<?
function clean_var($input=''){
	if(!is_array($input)){
		$result = trim(stripcslashes(strip_tags($input)));
		$result = eregi_replace("[']", '', $result);
                                $result = eregi_replace("[-]", '', $result);
                                $result = eregi_replace('["]', '', $result);
		$result = eregi_replace('[/]', '', $result);
		$result = eregi_replace("[\\]", '', $result);
		$result = eregi_replace("[;]", '', $result);
		$result = eregi_replace("[>]", '', $result);
		$result = eregi_replace("[<]", '', $result);
		return $result;
	}else{
		foreach($input as $key => $value){
			return clean_var($value);
		}
	}
}
?>
я так данные фильтрую от пользователя. Единственный минус есле в переменной нужны эти симвалы их не будет =))
 

Фанат

oncle terrible
Команда форума
ну так вот ВООБЩЕ - это у меня.
а у тебя как раз частный случай.
 

frk

Новичок
Автор оригинала: Фанат
имена полей можешь делать похожими на бд
т/е я могу передавать в URL переменные с идентичным названием полей в БД? я правильно понял?.... - для меня это важно!
 

vafel

Новичок
а что будешь делаьб если фанат запретит ?)) шутка
мое мнение - если так тебе удобно и не создаст угроз бузопаности то почемубы нет
 

Фанат

oncle terrible
Команда форума
frk, передавать - можешь.
главное - не использовать переданные названия напрямую, подставляя в запрос.

объясни - почему важно?
теоретически, конечно, структура таблицы может помочь хакеру. Но взломать тебя, имея только имена полей - невозможно, конечно же.

я не понимаю смысла твоего вопроса про безопасность.
поскольку ты им озаботился явно раньше, чем безопасным составлением запросов, что в 100 раз важнее
 

frk

Новичок
Автор оригинала: vafel
а что будешь делаьб если фанат запретит ?)) шутка
мое мнение - если так тебе удобно и не создаст угроз бузопаности то почемубы нет
мне интересно мнение опытных программеров - и это правильно, лучше учиться на чужих ошибках.

-~{}~ 31.03.05 17:48:

Автор оригинала: Фанат
frk, передавать - можешь.
главное - не использовать переданные названия напрямую, подставляя в запрос.

объясни - почему важно?
теоретически, конечно, структура таблицы может помочь хакеру. Но взломать тебя, имея только имена полей - невозможно, конечно же.

я не понимаю смысла твоего вопроса про безопасность.
поскольку ты им озаботился явно раньше, чем безопасным составлением запросов, что в 100 раз важнее
Важно, потому что это первый мой online-проект(наверное это характерно для новичков). Безопасное составление запросов я уже не первый раз использую( имею ввиду слэширование, проверка приходящих переменных), тем более что на эту тему много рассказано в ФАК-е;
почему меня заинтересовала тема с наименованием полей?.....сложный вопрос.....чисто интуитивно понимаю что безопасность превыше всего........у меня это на параноидальном уровне...я считаю что для пользователя структура приложения должна быть прозрачна.....поэтому и задался таким вот вопросом, хотя может быть и глупым, только лучше предусмотреть все возможные дырки в приложении сначала, чем потом начальству объяснять что ты не ...."редиска".
 
Сверху