Принимаем вопросы от населения
Sergey |
|
---|---|
http://wm-help.net/my-articles/article/use-post-and-get-in-php.htm Это надо прочитать, это основа, это общие знания. Теперь будем разбирать ход программы, начнем с части user.edit.php 257 $mskin = cot_tplfile(array('users', 'edit', $usr['maingrp']), 'module'); Обратите внимание на array это массив возможных частей имен. Имеется своя дилемма подбора, это как раз функция cot_tplfile она находит файл шаблона, будет найден шаблон user.edit.tpl а мог быть user.edit.название_группы.tpl и другие комбинации. Важно, что получили имя файла шаблона. теперь переходим дальше, на $t = new XTemplate($mskin); этот оператор создает новый экземпляр класса типа шаблон XTemplate В этом классе есть две главные функции это $t->parse('MAIN'); $t->out('MAIN'); Первая производит замену {USERS_EDIT_DELETE} на выражение, которое находится в классе t вторая out, выводит шаблон, после замены, в выходной поток, который своим способом попадает в браузер клиента, читателя Для того, чтобы поместить в USERS_EDIT_DELETE выражение имеется стандартное назначение: $t->assign(array( ..... 'USERS_EDIT_DELETE' => ($sys['user_istopadmin']) ? cot_radiobox(0, 'ruserdelete', array(1, 0), array($L['Yes'], $L['No'])) . $delete_pfs : $L['na'], тут вопрос, этот юзер $sys['user_istopadmin']) имеет право администрирования? Да, тогда мы создаем форму радиобатон с наименование ruserdelete это создает функция cot_radiobox обратите внимание, что радиобатон имеет два состояние 1- TRUE и 0 -FALSE, следовательно элемент массива $_POST, будет ассоциативный элемент ruserdelete Клиент получил форму, заполнил форму и нажал <input type="submit" value="{PHP.L.Update}" class="submit" /> ответ пошел на сервер, надо знать, что еще был сформирован и ответ в шаблоне: <form action="{USERS_EDIT_SEND}" method="post" name="useredit"><input type="hidden" name="id" value="{USERS_EDIT_ID}" /> а там 'USERS_EDIT_SEND' => cot_url('users', 'm=edit&a=update&'.cot_xg().'&id='.$urr['user_id']), где формируются урл с двумя ключами m=edit a=update и ключом идентификатора пользователя id= эти ключи мы можем достать по запросу $_GET там будет массив из элементов: m, a и id. как форма отправилась опять загрузится модуль user.edit.php. В части common.php обрабатываются общие ключи, строки с 481 $m = cot_import('m', 'G', 'ALP', 24); $n = cot_import('n', 'G', 'ALP', 24); $a = cot_import('a', 'G', 'ALP', 24); $b = cot_import('b', 'G', 'ALP', 24); нам интересна функция в строке $a = cot_import('a', 'G', 'ALP', 24); она обрабатывает ответ $_GET - 'G', 'a', - это наименование элемента ассоциативного массива из $_GET, 'ALP' - это значит, что символы будут типа букв цифр и некоторых знаков. Надо знать, что серверная глобальная переменная ${_SERVER['QUERY_STRING'] как раз содержит все эти ключи, т.е. то что мы отмечаем от ? по & так устроен сервер, надо знать вот это http://www.php.su/articles/?cat=vars&page=015 команда Котонти уже позаботилась с правилами работы с этими глобальными. Опять возвращаемся к user.edit.php строка с 48 if ($a == 'update') { cot_check_xg(); /* === Hook === */ foreach (cot_getextplugins('users.edit.update.first') as $pl) { include $pl; } /* ===== */ $ruserdelete = cot_import('ruserdelete','P','BOL'); вот и имя ассоциативно массива $_POST - входное 'P', элемент ruserdelete о котором вы переживали. 'BOL' это как раз тип элемент битная логика: 1 или 0, помните вначале мы его задавали, а сейчас проверяем. получили $ruserdelete и начинаем обрабатывать если $ruserdelete это 1 или TRUE if ($ruserdelete) { $sql = $db->delete($db_users, "user_id=$id"); $sql = $db->delete($db_groups_users, "gru_userid=$id"); надо признать, тут могут движок поломать через user_id=$id надо проверять на sql инъекцию (может проверка и есть, а может и нет), но без проверки такое делать не надо, нельзя набранное юзером совать в sql запрос, не при каких вариантах. Примерно так. - 2 часа жизни из моей шагреневой кожи. www.cotonti.mobi
|