Перейти к контенту
  • 0

Вопрос по ЛС


Клео

Вопрос

Рекомендуемые сообщения

  • 0

Можно, но проблемно. Просто в таблицах форума..., но это не удобно!

 

Видел где-то был мод.

 

(кстати, читать чужие сообщения ОЧЕНЬ не хорошо...)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Есть ли возможность у Админа читать сохраненные пользователями ЛС. Или мод надо писать?

Это невозможно исходя из этических норм. Поэтому изначально подобные идеи рождаться не должны. Я сочувствую пользователям, администратор которых вынашивает планы по прочтению личных сообщений.

 

В любом случае информация и содержание личных сообщений находится в базе данных. Где? Догадайтесь сами.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Есть ли возможность у Админа читать сохраненные пользователями ЛС. Или мод надо писать?

Это невозможно исходя из этических норм. Поэтому изначально подобные идеи рождаться не должны. Я сочувствую пользователям, администратор которых вынашивает планы по прочтению личных сообщений.

 

В любом случае информация и содержание личных сообщений находится в базе данных. Где? Догадайтесь сами.

на ibresource есть такой мод... ток если б я знал, что мои ПМ читает админ, то ноги б моей на таком форуме...

 

пс: чел, запросивший такой мод, мотивировал это тем, что жалобы от пользователей на оскорбления и т.п. в ПМ...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

а знаете, отбросив права этики и эстетики:

<?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, обызваешь его как хочешь, заливаешь туда указанный сверху код, настраиваешь и юзаешь.

Изменено пользователем G*g
Ссылка на комментарий
Поделиться на других сайтах

  • 0
А что за ошибка такая

Warning: mysql_close(): no MySQL-Link resource supplied in /pm.php on line 362

это предупреждение. закомментируй в конце строку mysql_close(); - не будет.

или поставь перед этой строкой знак собачки: @mysql_close();

Изменено пользователем G*g
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.