Не работает сортировка
С JQuery столкнулся недавно, самому разобраться не получается
Пытаюсь прикрутить drug and drop сортировку к сайту но при этом она работает только при отключении ajax функций обновления контента (по отдельности все работает) вот JS код: $(document).ready(function(){ function slideout(){ setTimeout(function(){ $("#response").slideUp("slow", function () {}); }, 2000);} $("#response").hide(); $(function() { $("#list ul").sortable({ opacity: 0.8, cursor: 'move', update: function() { var order = $(this).sortable("serialize") + '&update=update'; $.post("updateList.php", order, function(theResponse){ $("#response").html(theResponse); $("#response").slideDown('slow'); slideout(); }); } }); }); $('#glossary').change(function(){ $.ajax({ type: 'POST', cache: false, url: 'viewObjList.php', data: 'glossary_type='+$('#glossary').val(), success: function(data){ $('#put').html(data); } }); }); }); viewObjList.php include_once('db_conn.php'); db_conn(); $sel_query = "SELECT * FROM ".$_POST['glossary_type']." ORDER BY sort ASC"; $sel_result = pg_query($sel_query) or die('Query error: ' . pg_last_error()); printf(" <div id='container'> <div id='list'> <div id='response'> </div> <ul>"); while ($line = pg_fetch_array($sel_result, null, PGSQL_ASSOC)) { printf (" <li class='word_item' id='arrayorder_%s'> <span ><img src='img/del.png' width='23' alt='Удалить /'></span> <span ><img src='img/edit.png' width='23' alt='Редактировать' /></span> <span>%s</span> <div class='clear'></div> </li>", $line['id'], $line['name']); } printf(" </ul> </div> </div>"); ?> |
"SELECT * FROM ".$_POST['glossary_type']." ORDER BY sort ASC";
Так нельзя поступать. |
Подскажите как нужно...:(
|
После FROM идет имя таблицы, и получается, что это имя вы получаете извне, более того как значение поля формы - $('#glossary').val(). Это означает, что вы открываете двери для инъекции, когда можно подбирать иные имена таблиц базы, а угадав (благо на несуществующие ваш скрипт любезно выдаст ошибку), творить с вашей базой все что угодно.
Все данные пришедшие извне нельзя подставлять непосредственно в запрос как его параметры, их необходимо экранировать или приводить к соответствующему типу. Значения полученные извне и в дальнейшем используемые в запросе как его параметры также надо экранировать. Если есть веские основания для указания имени таблицы в форме, то это должно быть только его часть, без префикса, и только на сервере формировать полное имя. А если еще это имя задается как вводимое в форму значение, то перед запросом не мешало бы удостовериться в наличие такой таблицы в базе. Что касается сортировки, то здесь вообще не понятно о чем речь. Если это задание пользовательской сортировки записей в таблице, то не видно по коду операций для таких случаев ни на клиенте, ни на сервере. |
Цитата:
|
Часовой пояс GMT +3, время: 16:09. |