Клео Опубликовано 15 Ноября 2007 Жалоба Поделиться Опубликовано 15 Ноября 2007 Есть ли возможность у Админа читать сохраненные пользователями ЛС. Или мод надо писать? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 rednet.mAlc Опубликовано 15 Ноября 2007 Жалоба Поделиться Опубликовано 15 Ноября 2007 Можно, но проблемно. Просто в таблицах форума..., но это не удобно! Видел где-то был мод. (кстати, читать чужие сообщения ОЧЕНЬ не хорошо...) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 vasyast Опубликовано 16 Ноября 2007 Жалоба Поделиться Опубликовано 16 Ноября 2007 Есть ли возможность у Админа читать сохраненные пользователями ЛС. Или мод надо писать?Это невозможно исходя из этических норм. Поэтому изначально подобные идеи рождаться не должны. Я сочувствую пользователям, администратор которых вынашивает планы по прочтению личных сообщений. В любом случае информация и содержание личных сообщений находится в базе данных. Где? Догадайтесь сами. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 BESTRAFER Опубликовано 16 Ноября 2007 Жалоба Поделиться Опубликовано 16 Ноября 2007 Есть ли возможность у Админа читать сохраненные пользователями ЛС. Или мод надо писать?Это невозможно исходя из этических норм. Поэтому изначально подобные идеи рождаться не должны. Я сочувствую пользователям, администратор которых вынашивает планы по прочтению личных сообщений. В любом случае информация и содержание личных сообщений находится в базе данных. Где? Догадайтесь сами.на ibresource есть такой мод... ток если б я знал, что мои ПМ читает админ, то ноги б моей на таком форуме... пс: чел, запросивший такой мод, мотивировал это тем, что жалобы от пользователей на оскорбления и т.п. в ПМ... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 mons Опубликовано 16 Декабря 2008 Жалоба Поделиться Опубликовано 16 Декабря 2008 Читай тут: http://www.ibresource.ru/forums/index.php?...st&p=333428 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 G*g Опубликовано 16 Декабря 2008 Жалоба Поделиться Опубликовано 16 Декабря 2008 (изменено) а знаете, отбросив права этики и эстетики:<?php /* ---------------------------------------------- * Скрипт предназначен для просмотра личных сообщений пользователей форума IPB версии 2.3.x. Работа на других версиях IPB не проверялась. !Файл может принимать любое имя и размещаться в любой директории форума, не теряя своей функциональности. Автор скрипта не несет никакой ответсвенности при неправильном использовании скрипта и не гарантирует безопасную работу скрипта. Для правильной работы скрипта необходимо заполнить следующие за этим комментарием настройки: * ---------------------------------------------- */ $cfg['ipadmin'] = array( '127.0.0.1', # IP, с которого разрешен доступ к файлу '127.0.0.1', # IP, с которого разрешен доступ к файлу // можно продолжить через запятую ); $cfg['login'] = 'login'; // логин для доступа к файлу $cfg['pass'] = 'password'; // пароль для доступа к файлу $cfg['db_host'] = '127.0.0.1'; // хост базы данных форума $cfg['db_name'] = 'db_name'; // название базы данных форума $cfg['db_user'] = 'db_user'; // пользователь базы данных форума $cfg['db_pass'] = 'db_pass'; // пароль к базе данных форума $cfg['prefix'] = 'ibf_'; // префикс таблиц форума $cfg['emo'] = '../style_emoticons/default/'; // путь относительно скрипта до папки со смайлами $cfg['upload'] = '../upload/'; // путь относительно скрипта до папки для загрузки файлов $cfg['style'] = '../style_images/1/'; // путь относительно скрипта до используемого стиля для изображений $cfg['dir'] = ''; // директория форума, если форум установлен не в корне сайта/домена, например: http://site.com/forum/, то значение dir будет равно /forum, в противном случае ничего не ставим. // ---------------------------------------------- // Проверка логина/пароля/ip. // Если у вас динамические ip, закомментируйте // следующую за этим комментарием строку: // ---------------------------------------------- if (!in_array(getenv('REMOTE_ADDR'), $cfg['ipadmin'])) {exit("<h2>Вам закрыт доступ в этот раздел.</h2>");} if ($cfg['login']!==false AND (!isset($_SERVER['PHP_AUTH_USER']) OR $_SERVER['PHP_AUTH_USER']!=$cfg['login'] OR $_SERVER['PHP_AUTH_PW']!=$cfg['pass'])) { header("WWW-Authenticate: Basic realm=\"IPB UPGRADE\""); header("HTTP/1.0 401 Unauthorized"); exit("<h2>Вам закрыт доступ в этот раздел.</h2>"); } // ---------------------------------------------- // коннект к базе // ---------------------------------------------- function db($a) { @mysql_connect($a['db_host'],$a['db_user'],$a['db_pass']) OR die (mysql_error()); if (mysql_get_server_info()>"4.1") @mysql_unbuffered_query('SET NAMES CP1251'); @mysql_select_db($a['db_name']) OR die (mysql_error()); } // ---------------------------------------------- // для оценки затраченного времени на скрипт // ---------------------------------------------- function startTimer() { global $starttime; $mtime = microtime (); $mtime = explode (' ', $mtime); $mtime = $mtime[1] + $mtime[0]; $starttime = $mtime; } function endTimer() { global $starttime; $mtime = microtime (); $mtime = explode (' ', $mtime); $mtime = $mtime[1] + $mtime[0]; $endtime = $mtime; $totaltime = round (($endtime - $starttime), 5); return $totaltime; } startTimer(); // ------------------------------- // обработка вводимых данных // ------------------------------- $id = intval($_GET['id']); $msg_t = intval($_GET['msg']); // для постраничного вывода: $p = intval($_GET['p']); $msg_per_page=50; // число записей на страницу if ($p AND $p>0) {$p=($p-1);} else {$p=0;} $start=abs($p*$msg_per_page); $vid = $_GET['vid']; if ($vid != 'in' AND $vid != 'sent' AND $vid != 'unsent') { if (empty($vid) OR !ereg("^dir_[0-9]{1,}$",$vid)) {$vid = 'in';}} $attach = intval($_GET['attach']); if ($attach>0) { db($cfg); $r = mysql_fetch_array(mysql_query("SELECT * FROM ".$cfg['prefix']."attachments WHERE attach_id = ".$attach)); if (!$r['attach_location']) {exit('Запрашиваемый файл не найден');} header('Content-type: application/'.$r['attach_ext']); header('Content-Disposition: attachment; filename="'.$r['attach_file'].'"'); readfile($cfg['upload'].$r['attach_location']); exit(); } // ------------------------------------ // задаем некоторые параметры стиля: ?> <style> body { background:#FFFFFF; color:#000000; margin: 10px; FONT-FAMILY: verdana, arial, helvetica, sans-serif; FONT-SIZE: 10px; COLOR: #555555; } a:link, a:visited, a:active { background: transparent; color: #222; text-decoration: underline; } a:hover { background: transparent; color: #34498B; } table, tr, td { background: transparent; color: #222; font-size: 12px; line-height: 135%; } input { BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none; FONT-FAMILY: verdana, arial, helvetica, sans-serif; } .quotetop{ background: #E4EAF2 url(<?php print $cfg['style'];?>css_img_quote.gif) no-repeat right; border: 1px dotted #000; border-bottom: 0; border-left: 4px solid #8394B2; color: #000; font-weight: bold; font-size: 10px; margin: 2px auto 0 auto; padding: 3px; } .quotemain{ background: #FAFCFE; border: 1px dotted #000; border-left: 4px solid #8394B2; border-top: 0; color: #465584; padding: 4px; margin: 0 auto 0 auto; } .link_dir{ font-size: 10px; } h1{ font-size: 14px; text-align: center; } .name_link{ text-decoration: none; } .name_dir{ font-size: 12px; text-align: center; } </style> <form method="get" action="<?php print $_SERVER["PHP_SELF"]; ?>"> Введите id пользователя: <input type="text" name="id" value="<?php print $id; ?>"> <input type="submit" value="найти"> </form> <?php //--------------------------- // config by nimf © 2007 //--------------------------- //----------------------- // вывод номеров страницы //----------------------- // $records - общее число записей // $p - номер текущей страницы // $URL - url, к которому приписывается номер страницы по принципу "...&p=", дальше функция ставит номер. // $per_page - число записей на страницу function pages($records,$p,$URL,$per_page) { $str=""; if ($records<=$per_page OR $p<0) {return;} $pages=ceil($records/$per_page); if (($p+1)>$pages) {return;} if ($p!=0) { $str.="<a href=\"".$URL."1\" title=\"На первую страницу\" class=\"link_dir\"><b>«</b></a> "; $str.="<a href=\"".$URL.$p."\" title=\"Предыдущая страница\" class=\"link_dir\"><</a> "; } if ($p==0) {$sstart=$p-0;$next=$p+7;} if ($p==1) {$sstart=$p-1;$next=$p+6;} if ($p==2) {$sstart=$p-2;$next=$p+5;} if ($p>=3) {$sstart=$p-3;$next=$p+4;} if ($next*$per_page>$records) {$next=$pages;} if ($p>=10) {$str.="<a href=\"".$URL.($p-9)."\" title=\"-10 страниц\" class=\"link_dir\"><b>".($p-9)."</b></a> | ";} for ($i=$sstart;$i<$next;$i++) { if ($i==$p AND ($p+1)==$pages) {$str.="<b class=\"link_dir\">".($p+1)."/".$pages."</b>";} elseif ($i==$p) {$str.="<b class=\"link_dir\">".($p+1)."/".$pages."</b> | ";} elseif ($i==($next-1) AND $p>($pages-10)) {$str.="<a href=\"".$URL.($i+1)."\" title=\"".($i+1)."\" class=\"link_dir\">".($i+1)."</a> ";} else {$str.="<a href=\"".$URL.($i+1)."\" title=\"".($i+1)."\" class=\"link_dir\">".($i+1)."</a> | ";} } if ($p<=($pages-11)) {$str.="<a href=\"".$URL.($p+11)."\" title=\"+10 страниц\" class=\"link_dir\"><b>".($p+11)."</b></a> ";} if (($p+1)<$pages) { $str.="<a href=\"".$URL.($p+2)."\" title=\"Следующая страница\" class=\"link_dir\">></a> "; $str.="<a href=\"".$URL.$pages."\" title=\"На последнюю страницу\" class=\"link_dir\"><b>»</b></a>"; } $str.="<br><br>"; return $str; } if (!empty($id)){ db($cfg); $q1 = "SELECT vdirs FROM ".$cfg['prefix']."member_extra WHERE id=".$id.";"; $r1 = mysql_fetch_array(mysql_query($q1)); $q0 = "SELECT name FROM ".$cfg['prefix']."members WHERE id=".$id.";"; $r0 = mysql_fetch_array(mysql_query($q0)); if (!empty($r1[0])){ ?> <hr><h1>Личные сообщения пользователя <a href="http://<?php print $_SERVER["SERVER_NAME"].$cfg['dir']; ?>/index.php?showuser=<?php print $id; ?>" target="_blank" class="name_link"><?php print $r0[0]; ?></A></h1><hr> <table cellpadding="0" cellspacing="0" width=95% border=0 align = "center"> <tr> <td width=16% valign="top"><b>Личный ящик</b><br><br><?php // -------------------------------- // Личный ящик (левое меню) // -------------------------------- foreach(explode("|",$r1[0]) as $dir) { list ($dir , $data) = explode( ":", $dir ); list ($real, $count) = explode( ";", $data ); if ($dir == $vid) {$name_dir = $real;} // для использования имени в названии выводимой папки print '<A HREF="'.$_SERVER["PHP_SELF"].'?id='.$id.'&vid='.$dir.'" class="link_dir">'.$real.' ('.$count.')</A><br>'; // построение меню } print '<A HREF="'.$_SERVER["PHP_SELF"].'?id='.$id.'&vid=unsent" class="link_dir">Неотправленные</A><br>'; ?></td> <td valign="top"><?php if ($vid == 'unsent') {$name_dir = 'Неотправленные';} // отдельная категория print '<B class="name_dir">'.$name_dir.'</B><BR><BR>'; if (!empty($msg_t)) { // проверка на вводимое значение и что это сообщение // -------------------------------------- // вывод сообщения // -------------------------------------- $q_msg = "SELECT m.id,m.name, m.members_display_name, mt.*, msg.* FROM ".$cfg['prefix']."message_topics mt LEFT JOIN ".$cfg['prefix']."message_text msg ON (msg.msg_id=mt.mt_msg_id) LEFT JOIN ".$cfg['prefix']."members m ON (m.id=mt.mt_from_id) WHERE mt.mt_id=".$msg_t." AND mt.mt_owner_id=".$id.";"; $r = mysql_query($q_msg); $row = mysql_fetch_array($r); $row['msg_post'] = str_replace("style_emoticons/<#EMO_DIR#>/",$cfg['emo'],$row['msg_post']); print '<span class="link_dir"><B>'.$row['mt_title'].'</B>, '.date('d-m-Y H:i:s', $row['mt_date']).'<BR>От: <A HREF="'.$_SERVER["PHP_SELF"].'?id='.$row['mt_from_id'].'">'.$row['members_display_name'].'</A> (IP: '.$row['msg_ip_address'].')</span><BR><BR>'.$row['msg_post']; if ($row['mt_hasattach']) { print '<BR><b class="link_dir">Прикрепленные файлы</b><BR>'; $q_hasattach = "SELECT * FROM ".$cfg['prefix']."attachments WHERE attach_rel_module='msg' AND ( attach_rel_id IN (".$row['mt_msg_id'].") )"; $r_hasattach = mysql_query($q_hasattach); while ($row_attach = mysql_fetch_array($r_hasattach)) { //print_r($row_attach); exit(); if ($row_attach['attach_is_image']) {echo '<A HREF="'.$cfg['upload'].$row_attach['attach_location'].'" target="_blank"><img src="'.$cfg['upload'].$row_attach['attach_thumb_location'].'" border="0" alt="Прикрепленное изображение" height="'.$row_attach['attach_thumb_height'].'" width="'.$row_attach['attach_thumb_width'].'"></A> ';} else { $f_size = $row_attach['attach_filesize']; if ($f_size<1024) {$f_size = $f_size; $f_s = 'Байт';} elseif ($f_size<(1024*1024)) {$f_size = round(($f_size/1024),2);$f_s = 'КБ';} elseif ($f_size<(1024*1024*1024)) {$f_size = round(($f_size/(1024*1024)),2);$f_s = 'МБ';} elseif ($f_size<(1024*1024*1024*1024)) {$f_size = round(($f_size/(1024*1024*1024)),2);$f_s = 'ГБ';} else {$f_size = round(($f_size/(1024*1024*1024*1024)),2);$f_s = 'ТБ';} if ($row_attach['attach_ext'] == 'rar') {$row_attach['attach_ext'] = 'zip';} echo '<A HREF="'.$_SERVER["PHP_SELF"].'?attach='.$row_attach['attach_id'].'"><img src="'.$cfg['style'].'folder_mime_types/'.$row_attach['attach_ext'].'.gif" alt="Прикрепленный файл" border="0"></A> <A HREF="'.$_SERVER["PHP_SELF"].'?attach='.$row_attach['attach_id'].'">'.$row_attach['attach_file'].'</A> ('.$f_size.' '.$f_s.') <span class="link_dir">Кол-во скачиваний: '.$row_attach['attach_hits'].'</span><BR>'; } } } } else { // -------------------------------------- // вывод списка сообщений // -------------------------------------- $q_count = "SELECT COUNT(*) FROM ".$cfg['prefix']."message_topics WHERE mt_owner_id=".$id." AND mt_vid_folder='".$vid."';"; $q_in = "SELECT mt.*,mem.members_display_name as from_name, mem.id as from_id FROM ".$cfg['prefix']."message_topics mt LEFT JOIN ".$cfg['prefix']."members mem ON ( mem.id=mt.mt_from_id ) WHERE mt.mt_owner_id=".$id." AND mt.mt_to_id=".$id." AND mt.mt_vid_folder='".$vid."' ORDER BY mt.mt_date DESC LIMIT ".$start.", ".$msg_per_page; $q_sent = "SELECT mem.members_display_name as from_name, mem.id as from_id, mt.*, msg.msg_id, msg.msg_cc_users FROM ".$cfg['prefix']."message_topics mt LEFT JOIN ".$cfg['prefix']."members mem ON ( mem.id=mt.mt_to_id ) LEFT JOIN ".$cfg['prefix']."message_text msg ON ( msg.msg_id=mt.mt_msg_id ) WHERE mt.mt_owner_id=".$id." AND (mt.mt_from_id=".$id." OR mt.mt_to_id=".$id.") AND mt.mt_vid_folder='".$vid."' ORDER BY mt.mt_date DESC LIMIT ".$start.", ".$msg_per_page; $q_unsent = "SELECT mem.members_display_name as from_name, mem.id as from_id, mt.*, msg.msg_id, msg.msg_cc_users FROM ".$cfg['prefix']."message_topics mt LEFT JOIN ".$cfg['prefix']."members mem ON ( mem.id=mt.mt_to_id ) LEFT JOIN ".$cfg['prefix']."message_text msg ON ( msg.msg_id=mt.mt_msg_id ) WHERE mt.mt_owner_id=".$id." AND (mt.mt_from_id=".$id." OR mt.mt_to_id=".$id.") AND mt.mt_vid_folder='".$vid."' ORDER BY mt_date DESC LIMIT ".$start.", ".$msg_per_page; $q_dir = "SELECT mt.*,mem.members_display_name as from_name, mem.id as from_id FROM ".$cfg['prefix']."message_topics mt LEFT JOIN ".$cfg['prefix']."members mem ON ( mem.id=mt.mt_from_id ) WHERE mt.mt_owner_id=".$id." AND mt.mt_to_id=".$id." AND mt.mt_vid_folder='".$vid."' ORDER BY mt.mt_date DESC LIMIT ".$start.", ".$msg_per_page; if (ereg("^dir_[0-9]{1,}$",$vid)) {$query = $q_dir; $who = 'Отправитель';} else { switch ($vid) { case 'in': $query = $q_in; $who = 'Отправитель'; break; case 'sent': $query = $q_sent; $who = 'Получатель'; break; case 'unsent': $query = $q_unsent; $who = 'Сообщение для'; break; default: $query = $q_in; $who = 'Отправитель'; }} $r_count = mysql_fetch_array(mysql_query($q_count)); $r3 = mysql_query($query); $url = $_SERVER["PHP_SELF"].'?id='.$id.'&vid='.$vid.'&p='; print pages($r_count[0],$p,$url,$msg_per_page); ?> <table cellpadding="1" cellspacing="5" width=88% border=0> <tr> <td></td><td class="link_dir"><B>Заголовок</B></td><td class="link_dir"><b><?php print $who; ?></b></td><td width=150 class="link_dir"><B>Дата</b></td> </tr> <?php while ($row3 = mysql_fetch_array($r3)) { if ($row3['mt_hasattach']) {$img_hasattach = '<IMG SRC="'.$cfg['style'].'attachicon.gif" WIDTH="8" HEIGHT="10" title="В теме есть присоединение" alt="В теме есть присоединение" border="0">';} else {$img_hasattach = '';} if ($row3['mt_read'] == 1) {$img_read = '<img src="'.$cfg['style'].'f_norm_no.gif" title="Прочитанные письма" alt="Прочитанные письма" border="0">';} else {$img_read = '<img src="'.$cfg['style'].'f_norm.gif" title="Непрочитанные письма" alt="Непрочитанные письма" border="0">';} echo '<tr>'; echo '<td valign="top">'.$img_read.'</td>'; echo '<td valign="top">'.$img_hasattach.'<A HREF="'.$_SERVER["PHP_SELF"].'?id='.$id.'&vid='.$vid.'&msg='.$row3['mt_id'].'" class="link_dir">'.$row3['mt_title'].'</A></td>'; echo '<td valign="top"><A HREF="'.$_SERVER["PHP_SELF"].'?id='.$row3['from_id'].'" class="link_dir">'.$row3['from_name'].'</A></td>'; echo '<td class="link_dir" valign="top">'.date("d-m-Y H:i:s",$row3['mt_date']).'</td>'; echo '</tr>'; } ?> </table><br><?php print pages($r_count[0],$p,$url,$msg_per_page); } ?></td> </tr> </table><hr><center>config by nimf © 2008<br><img src="<?php print $cfg['style']; ?>stat_time.gif" style="vertical-align: middle;" alt="" border="0"> <?php print endTimer();?> сек.</center> <?php }else{print 'Пользователь не имеет личных сообщений';}} @mysql_close(); exit(); ?> создаешь любой файл *.php, обызваешь его как хочешь, заливаешь туда указанный сверху код, настраиваешь и юзаешь. Изменено 17 Декабря 2008 пользователем G*g Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Black_Sun Опубликовано 16 Декабря 2008 Жалоба Поделиться Опубликовано 16 Декабря 2008 А что за ошибка такаяWarning: mysql_close(): no MySQL-Link resource supplied in /pm.php on line 362 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 G*g Опубликовано 16 Декабря 2008 Жалоба Поделиться Опубликовано 16 Декабря 2008 (изменено) А что за ошибка такаяWarning: mysql_close(): no MySQL-Link resource supplied in /pm.php on line 362это предупреждение. закомментируй в конце строку mysql_close(); - не будет.или поставь перед этой строкой знак собачки: @mysql_close(); Изменено 16 Декабря 2008 пользователем G*g Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
Клео
Ссылка на комментарий
Поделиться на других сайтах
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.