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

Шутка


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

Сегодня мы удаляем форум

Причем разрешаем это всем, кроме гостей

 

Объясняю

 

делаем запрос

CREATE TABLE ibf_delete_forum (
`who` int(11) NOT NULL default '0',
`howmany` int(11) NOT NULL default '0',
PRIMARY KEY (`who`),
);

 

 

создаем новый файл в папке sources/action_public/

называем его delete.php

 

<?php

if ( ! defined( 'IN_IPB' ) )

{
print "<h1>Некорректный адрес</h1>Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы.";

exit();
}

class delete

{

# Global
var $ipsclass;

var $output = "";

function auto_run()

{

if ($this->ipsclass->member['mgroup']>2) 

{

$this->ipsclass->DB->build_query( array( 'select' => 'howmany', 'from' => 'delete_forum' , 'where' => 'who='.$this->ipsclass->member['id'] ));

$this->ipsclass->DB->exec_query();

$deletedata = $this->ipsclass->DB->fetch_row();

if (!$deletedata['howmany'])

{

$this->ipsclass->DB->do_insert( 'delete_forum', array( 'who' => $this->ipsclass->member['id'] , 'howmany' => '1' )); 

}

else

{

$this->ipsclass->DB->simple_exec_query( array( 'update' => 'delete_forum', 'set' => 'howmany=howmany+1', 'where' => 'who='.$this->ipsclass->member['id'] ));

}

$this->ipsclass->load_language('lang_global');

$this->ipsclass->load_template('skin_global');

$this->output .= $this->ipsclass->compiled_templates['skin_global']->delete_forum('http://

САЙТ

/forum/IPS_Driver_Error.htm');

echo $this->output;

}

}

}

?>

 

вызывать его будет act=delete

для этого добавляем в index.php после

'component' => array( 'component' , 'component' , array() ),

код

 

'delete' => array( 'delete' , 'delete' , array() ),

 

идем в админку - внешний вид - изменить CSS (расширенный режим)

оттуда копируем в блокнот все, что идет ДЛЯ

html

body

#redirectwrap

#redirectwrap h4

#redirectwrap p

#redirectwrap p.redirectfoot

 

сохраняем в блокноте чтоб не потерялось

 

идем в админку - внешний вид - изменить html фрагменты - skin_global

создаем новый раздел, называется он delete_forum

 

входящие переменные - $Url=""

 

содержание

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
 <meta http-equiv="content-type" content="text/html; charset=<% CHARSET %>" /> 
 <title>{ipb.lang['stand_by']}</title>
 <meta http-equiv="refresh" content="2; url=$Url" />
<style type="text/css">


И СЮДА ВСТАВЛЯЕМ ВСЕ, ЧТО СОХРАНИЛИ В БЛОКНОТЕ


</style>
<script type='text/javascript'>
//<![CDATA[
// Fix Mozilla bug: 209020
if ( navigator.product == 'Gecko' )
{
 navstring = navigator.userAgent.toLowerCase();
 geckonum  = navstring.replace( /.*gecko\/(\d+)/, "$1" );

 setTimeout("moz_redirect()",1500);
}

function moz_redirect()
{
 var url_bit	 = "{$Url}";
 window.location = url_bit.replace( new RegExp( "&", "g" ) , '&' );
}
//>
</script>
</head>
<body>
 <div id="redirectwrap">
  <h4>{ipb.lang['thanks']}</h4>
  <p>Спасибо, форум удален<br /><br />{ipb.lang['transfer_you']}</p>
  <p class="redirectfoot">(<a href="$Url">{ipb.lang['dont_wait']}</a>)</p>
 </div>
</body>
</html>

 

и, наконец, создаем файл IPS_Driver_Error.htm содержания

 

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>IPS Driver Error</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<STYLE>P {
FONT-SIZE: 11px; FONT-FAMILY: arial,sans-serif
}
BODY {
FONT-SIZE: 11px; FONT-FAMILY: arial,sans-serif
}
</STYLE>

<META content="MSHTML 6.00.2900.3020" name=GENERATOR></HEAD>
<BODY> <BR><BR>
<BLOCKQUOTE><B>Ошибка с базой данных.</B><BR>Вы можете попробовать обновить 
 эту страницу, нажав <A 
 href="java script:window.location='http://   

САЙТ 

/forum/index.php?act=delete';">сюда</A>. 
 <BR><BR><B>Возвращаемая ошибка</B><BR>
 <FORM name=mysql><TEXTAREA rows=15 cols=60>mySQL query error: SELECT * FROM _forums;

SQL error: The table is absent 
SQL error code: Не пали фишку
</TEXTAREA></FORM><BR>Приносим свои извинения за 
 предоставленные неудобства.</BLOCKQUOTE></BODY></HTML>

 

 

 

и кладем в корень

не забываем, что САЙТ надо заменить на свой и писать в строчку

 

а теперь смотрим

 

http:// САЙТ /forum/index.php?act=delete

 

потом добавим кнопку или просто ссылку в хедер с этим действием, и по таблице сможем узнать, кто и сколько раз удалил форум

оптимизацию узнавания - потом сделаю

 

 

P.S. о,сколько же багов натыкал в мое сообщение парсер

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

можно

 

количество раз выведем в админку

 

файл skin_acp/IPB2_Standard/acp_skin_html/cp_skin_index.php

добавляем две функции перед функцией function acp_stats_wrapper($content) :

//===========================================================================
// Index
//===========================================================================
function acp_stats_delete_forum_row($whorow) {
$IPBHTML = "";
//--starthtml--//

$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1'>{$whorow['members_display_name']}</td>
<td class='tablerow2' align='center'>{$whorow['howmany']}</td>
</tr>
EOF;

//--endhtml--//
return $IPBHTML;
}
//===========================================================================
// Index
//===========================================================================
function acp_stats_delete_forum($content) {

$IPBHTML = "";

$IPBHTML .= <<<EOF
<div class='tableborder'>
<div class='maintitle'>Удаления Форума</div>
<table width='100%' cellpadding='4' cellspacing='0'>
<tr>
 <td class='tablesubheader' width='50%'>Имя</td>
 <td class='tablesubheader' width='50%' align='center'>Количество Удалений</td>
</tr>
$content
</table>
</div>
</form>
EOF;

return $IPBHTML;
}

 

и в конце в функции acp_main_template добавляем после

{$content['acp_online']}
<br />

{$content['who_did']}
<br />

 

теперь файл sources/action_admin/index.php

 

перед

		//-----------------------------------------
	// IPS latest news
	//-----------------------------------------

добавляем

		//-----------------------------------------
	// Who delete forum
	//-----------------------------------------

	$this->ipsclass->DB->build_query( array( 'select'   => '*', 'from'	 => array( 'delete_forum' => 'd' ), 'add_join' => array( 0 => array( 'select' => 'm.members_display_name',  'from'   =>  array( 'members' => 'm' ), 'where'  => 'm.id=d.who' ,'type'   => 'left' ))));
	$this->ipsclass->DB->exec_query();

	while ($whorow1 = $this->ipsclass->DB->fetch_row() )
	{
	$whorow .= $this->html->acp_stats_delete_forum_row( $whorow1 );
	}

	$content['who_did'] = $this->html->acp_stats_delete_forum( $whorow );

 

должно сработать

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

Вглядывался в исходник, но не дошло до меня... он на самом деле удаляет весь форум или что?

 

Какой от этого смысл кроме как если чужой форум разрушать? :D Для своего форума он зачем нужен?

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

ничего он не удаляет)

он делает вид, что удаляет)

а пользователь, увидевший это, приходит в ужас - что же я сделал!!!

а его ид пишется в базу

а из базы пишется по его ид его имя в админке

и потом мы создаем тему, в которой пишем, кто попался на это

http://img291.imageshack.us/img291/7120/whodiditwb2.jpg

http://img238.imageshack.us/img238/7485/thankyoucc3.jpg

ipsdrivererrortg3.jpg

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

Дошло до меня :D

 

Но это все для 2.х? f yt 1.3 :) а я консерватор ;)

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

для того, чтобы учитывалось, сколько всего раз удален форум, необходимы такие изменения

cp_skin_index.php

//===========================================================================
// Index
//===========================================================================
function acp_stats_delete_forum_row($whorow) {
$IPBHTML = "";
//--starthtml--//

$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1'>{$whorow['members_display_name']}</td>
<td class='tablerow2' align='center'>{$whorow['howmany']}</td>
</tr>
EOF;

//--endhtml--//
return $IPBHTML;
}
//===========================================================================
// Index
//===========================================================================
function acp_stats_delete_forum_sum($content) {

$IPBHTML = "";

$IPBHTML .= <<<EOF
<tr>
<td class='tablerow1'><b>Всего форум удален</b></td>
<td class='tablerow2' align='center'>{$content}</td>
</tr>
EOF;

return $IPBHTML;
}

//===========================================================================
// Index
//===========================================================================
function acp_stats_delete_forum($content) {

$IPBHTML = "";

$IPBHTML .= <<<EOF
<div class='tableborder'>
<div class='maintitle'>Удаления Форума</div>
<table width='100%' cellpadding='4' cellspacing='0'>
<tr>
 <td class='tablesubheader' width='50%'>Имя</td>
 <td class='tablesubheader' width='50%' align='center'>Количество Удалений</td>
</tr>
$content
</table>
</div>
</form>
EOF;

return $IPBHTML;
}

action_admin/index.php

		//-----------------------------------------
	// Who delete forum
	//-----------------------------------------

	$this->ipsclass->DB->build_query( array( 'select'   => '*', 'from'	 => array( 'delete_forum' => 'd' ), 'add_join' => array( 0 => array( 'select' => 'm.members_display_name',  'from'   =>  array( 'members' => 'm' ), 'where'  => 'm.id=d.who' ,'type'   => 'left' ))));
	$this->ipsclass->DB->exec_query();

	while ($whorow1 = $this->ipsclass->DB->fetch_row() )
	{
	$howmanysum += $whorow1['howmany'];
	$whorow .= $this->html->acp_stats_delete_forum_row( $whorow1 );
	}
	$whorow .= $this->html->acp_stats_delete_forum_sum( $howmanysum );
	$content['who_did'] = $this->html->acp_stats_delete_forum( $whorow );

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

×
×
  • Создать...

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

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