Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Редактирование шаблонов показано на рисунке 20
Рисунок 19 Редактирование шаблонов Рис. 20
Код редактирования шаблонов предельно прост и использует возможности визуального JavaScript-редактора кода Edit Area. 31. Администратор может также работать с пользователями: · удалять их, · блокировать, · разблокировать, · редактировать их анкетные данные. Работа с пользователями реализована посредством AJAX. Содержимое всех небольших вспомогательных файлов приведено ниже. · Блокировка: <? session_start(); if (!isset($_SESSION['user_id'])) { header('Location: /soc/index.php?page='.$_SERVER["PHP_SELF"]); //die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>'); } $id = (int)$_POST['id']; if ($id == $_SESSION['user_id']) { echo 'Себя нельзя банить'; exit; } include '../mysql.php'; $q = "update users set status=status+20 where id={$id}"; if (mysql_query($q)) echo 'Успешно забанен'; else echo 'Невозможно забанить'; ?> · Разблокировка: <? session_start(); if (!isset($_SESSION['user_id'])) { header('Location: /soc/index.php?page='.$_SERVER["PHP_SELF"]); //die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>'); } $id = (int)$_POST['id']; if ($id == $_SESSION['user_id']) { echo 'Себя нельзя банить'; exit; } include '../mysql.php'; $q = "update users set status=status-20 where id={$id}"; if (mysql_query($q)) echo 'Успешно разбанен'; else echo 'Невозможно разбанить'; ?> · Редактирование анкеты: <? session_start(); if (!isset($_SESSION['user_id'])) { header('Location: /soc/index.php?page='.$_SERVER["PHP_SELF"]); //die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>'); } $id = (int)$_POST['id']; include '../mysql.php'; include '../options/user_fns.php'; $ud = get_user_details($id); if ($ud!= 0) { ?> <script language="JavaScript" type="text/javascript"> <!-- function get_mess() { data = $('form').serialize(); $("#mu").load('ch_p.php', data); } //--> </script> <h3>Редактирование анкеты</h3> <form name="an_f"> <input type="hidden" name="id" value="<? echo $id;?>"> <table class="profileTable" cellpadding="0" cellspacing="0"> <tbody> <tr> <td colspan="2" class="title"> · Общая информация </td> </tr> <tr> <td class="label">Никнейм</td> <td><input type="text" name="nick" value="<? echo $ud['nick'];?>"></td> </tr> <tr> <td class="label">ФИО</td> <td><input type="text" name="fio" size="40" value="<? echo $ud['fio'];?>"></td> </tr> <tr> <td class="label">Дата рождения</td> <td><input type="text" name="birth" value="<? echo $ud['birth'];?>"></td> </tr> <tr> <td colspan="2" class="title"> · Контактная информация </td> </tr> <tr> <td class="label">ICQ</td> <td><input type="text" name="icq" value="<? echo $ud['icq'];?>"></td> </tr> <tr> <td colspan="2" class="title"> · Персональная информация </td> </tr> <tr> <td class="label">Деятельность</td> <td width="300"><textarea rows="5" cols="30" name="job"><? echo $ud['job'];?></textarea></td> </tr> <tr> <td class="label">Интересы</td> <td width="300"><textarea rows="5" cols="30" name="hobbie"><? echo $ud['hobbie'];?></textarea></td> </tr> </tbody> </table> <input type="button" value="Обновить" onClick="get_mess();> </form> <? } ?> · Удаление пользователя: <? session_start(); if (!isset($_SESSION['user_id'])) { header('Location: /soc/index.php?page='.$_SERVER["PHP_SELF"]); //die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>'); } $id = (int)$_POST['id']; if ($id == $_SESSION['user_id']) { echo 'Себя нельзя удалить'; exit; } include '../mysql.php'; $q = "delete from users where id={$id}"; $q1 = "delete from bookmark where user_id={$id}"; $q2 = "delete from user_details where id={$id}"; if (mysql_query($q) && mysql_query($q2)) { mysql_query($q1); echo 'Удалено успешно'; } else { echo 'Невозможно удалить'; } ?>
Важнейшей функцией администратора является просмотр логов, отфильтрованных специально для системы. Форма просмотра изображена на рисунке 21. Как видно из рисунка, фильтруются различные запросы, в том числе потенциально опасные. Рисунок 20 Форма просмотр логов, отфильтрованных специально для системы
Код сценария представлен ниже: <? session_start(); if (!isset($_SESSION['user_id'])) { header('Location: /soc/index.php?page='.$_SERVER["PHP_SELF"]); //die('Доступ закрыт, даём ссылку на авторизацию. — <a href="login.php">Авторизоваться</a>'); } include '../mysql.php'; include '../head.php'; if ($_SESSION['adm']!= 1) { echo '<div class="errMessage">Вы не являетесь администратором</div>'; echo '</div>'; include '../foot.php'; exit; } $id = $_SESSION['user_id']; $same_user = true; $no_user = false; include '../menu.php'; $pages = $_POST['pages']; if (empty($pages)) $pages = 20; //echo $pages; function replace_month($path){ if(eregi('jan',$path)){$path='1';} elseif(eregi('feb',$path)){$path='2';} elseif(eregi('mar',$path)){$path='3';} elseif(eregi('apr',$path)){$path='4';} elseif(eregi('may',$path)){$path='5';} elseif(eregi('jun',$path)){$path='6';} elseif(eregi('jul',$path)){$path='7';} elseif(eregi('aug',$path)){$path='8';} elseif(eregi('sep',$path)){$path='9';} elseif(eregi('oct',$path)){$path='10';} elseif(eregi('nov',$path)){$path='11';} else{$path='12';} return $path; } $filename = 'z:/usr/local/apache/logs/access.log'; $fd = $pages; // 1 строка 100 bytes - 20 строк $fp = filesize($filename)-$fd*100; if ($pages == 'all') $fp = 0; $fh = fopen($filename, 'r'); fseek($fh, $fp); $arr = array(); $i = 0; $a = 0; while (!feof($fh)) { $line = trim(fgets($fh, 1024)); if(!eregi('.jpg',$line) and!eregi('.gif',$line) and!eregi('.js',$line) and!eregi('.css',$line)) { //echo 'b'; if (strstr($line, '/soc')) { $arr[$i] = $line; //echo 'a'; $i++; } } } fclose($fh); ?> <div id="rightCol"> <form action='access.php' method='post'> <select name="pages"> <? $pp = array(20,50,100,200,500); foreach ($pp as $p) { echo "<option value=$p"; if ($p == $pages) echo " selected"; echo ">Последние $p</option>"; } ?> <option value="all" <? if ($pages == 'all') echo 'selected';?>>Все</option> <input type="submit" value="Просмотреть"> </form> <br /> <table border="1"> <? foreach ($arr as $v) { preg_match("/^(\S+)\s+(\S+)\s+(\S+)\s+\[(.*)\]\s+\"(.*)\"\s+(\S+)\s+(\S+)$/x",$v,$matches); array_shift($matches); // так как 0 элемент содержит всю строку $ip = $matches[0]; $time = $matches[3]; $url = $matches[4]; $succes = $matches[5]; $bytes = $matches[6]; preg_match("@(..)/(...)/(....):(..):(..):(..)@",$time,$matches); array_shift($matches); $matches[1] = replace_month($matches[1]); $time = mktime($matches[3],$matches[4],$matches[5],$matches[1],$matches[0],$matches[2]); if (eregi("(\%27)|(or)|(and)|(union)",$url)) { $hack[$h++] = array($ip, $time, $url, $bytes); } preg_match("/\S+\s+(\S+)/",$url,$matches); $url = $matches[1]; $url = urlencode($url); if($succes=='200') { $success[$i++] = array ($ip,$time,$url,$bytes); } else { $failure[$x++] = array ($ip,$time,$url,$bytes); } } ?> <tr> <td align="center" colspan="4">Корректные запросы</td> </tr> <? if (!empty($success)) { $success = array_reverse($success); foreach ($success as $k=>$v) { echo '<tr>'; foreach ($v as $key=>$val) { if ($key == 1) { $val = date('d.m.Y H:i:s',(int)$val); } if ($key == 2) { $val = urldecode($val); $val = nl2br(wordwrap($val, 40, "\n", 1)); } echo "<td>$val</td>"; } echo '</tr>'; } } else { echo '<tr><td colspan="4">Не обнаружены</td>'; } ?> <tr> <td align="center" colspan="4">Некорректные запросы</td> </tr> <? if (!empty($failure)) { $failure = array_reverse($failure); foreach ($failure as $k=>$v) { echo '<tr>'; foreach ($v as $key=>$val) { if ($key == 1) { $val = date('d.m.Y H:i:s',(int)$val); } if ($key == 2) { $val = urldecode($val); $val = nl2br(wordwrap($val, 40, "\n", 1)); } echo "<td>$val</td>"; } echo '</tr>'; } } else { echo '<tr><td colspan="4">Не обнаружены</td>'; } ?> <tr> <td align="center" colspan="4">Подозрительные запросы</td> </tr> <? if (!empty($hack)) { $hack = array_reverse($hack); foreach ($hack as $k=>$v) { echo '<tr>'; foreach ($v as $key=>$val) { if ($key == 1) { $val = date('d.m.Y H:i:s',(int)$val); } if ($key == 2) { $val = urldecode($val); $val = nl2br(wordwrap($val, 40, "\n", 1));} echo "<td>$val</td>"; } echo '</tr>'; } } else { echo '<tr><td colspan="4">Не обнаружены</td>'; } ?> </table> </div> <div id="bottom"></div> </div> <? include '../foot.php'; ?>
Нажав «Справка», пользователь может прочесть справку по использованию системы, а по нажатию «О сайте» можно увидеть следующую страницу, изображенную на рисунке 22.
Рисунок 21 По нажатию «О сайте» можно увидеть следующую страницу
|