Kuzirashi
ASP.NET MVC, JS-SPA, PHP, NODE
- Joined
- Jul 24, 2010
- Messages
- 772
- Reaction score
- 157
System pozwalaj?cy zarz?dza? osobami zbanowanymi na IP na stron?. Nic doda?, nic uj??.
Najpierw tworzymy tabel? `banned_ips` kodem SQL w PhpMyAdmin:
Tworzymy folder w /system/application/views i nazwijmy go admin. Tworzymy tam plik o nazwie banned.php, czyli pe?na lokalizacja twojego pliku powinna wygl?da? tak: /system/application/views/banned.php, ustawiamy formatowanie na UTF8 i wklejamy tam kod:
Kolejno, edytujemy plik admin.php w /system/application/controllers/ i na samym dole przed:
upewniamy si?, ?e kodowanie tego pliku to UTF8 dodajemy kod:
Nast?pnie, tworzymy nowy plik o nazwie banned_model.php w /system/application/models, z formatowaniem UTF8, i wklejamy do niego kod:
Teraz, b?dziemy edytowa? plik w index.php w g??wnym katalogu, szukamy w naszym edytorze fragmentu:
i pod nim wklejamy kod:
Jeszcze jedna rzecz. Tworzycie plik refresh.php w /system/application/views/ i je?eli mamy ju? na stronie za?adowane JQuery, to lajcik wklejamy po prostu kod:
Je?li natomiast nie mamy JQuery, to musimy doda? jeszcze jedn? linijk? w pliku refresh.php, powy?ej kodu, kt?ry wklejali?my:
A wi?c to by by?o na tyle. Pozdrawiam i mi?ego dnia.
Reput mile widziany.
Zabraniam kopiowania zawarto?ci na inne fora/serwisy.
Najpierw tworzymy tabel? `banned_ips` kodem SQL w PhpMyAdmin:
PHP:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Baza danych: `xxx`
--
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `banned_ips`
--
CREATE TABLE IF NOT EXISTS `banned_ips` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`adres_ip` int(11) unsigned NOT NULL COMMENT 'Adres IP zbanowanego.',
`pow?d` varchar(64) DEFAULT NULL COMMENT 'Pow?d banicji.',
`data` datetime NOT NULL COMMENT 'Data nadania bana.',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Zbanowani na IP na stronie.' AUTO_INCREMENT=0 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Tworzymy folder w /system/application/views i nazwijmy go admin. Tworzymy tam plik o nazwie banned.php, czyli pe?na lokalizacja twojego pliku powinna wygl?da? tak: /system/application/views/banned.php, ustawiamy formatowanie na UTF8 i wklejamy tam kod:
PHP:
<?php
// ZABEZPIECZENIE
if ( !defined('BASEPATH')) header('Location: ../../../../../../');
#region Wst?p
########## KUZIRASHI'S BANNED SCRIPT ##########
########## GG: 4760316 KUZIRASHI@INTERIA.PL ##########
/* http://tibia.net.pl/members/281422-Kuzirashi */
/* BEGIN -- USER INTERFACE -- */
#endregion
#region Obs?uga Banowania
if ($_POST) {
ban($_POST['adres_ip'], $_POST['powod']);
}
#endregion
alert('System pozwalaj?cy zarz?dza? osobami zbanowanymi na IP przez stron?.');
?>
<table class="online guilds">
<thead>
<th>Adres IP</th>
<th>Pow?d</th>
<th>Data</th>
<th>Usu?</th>
</thead>
<tbody>
<?php foreach ($lista as $zbanowany) { ?>
<tr class="tablerow">
<td><?php echo $zbanowany['ip'] ?></td>
<td><?php echo $zbanowany['pow?d'] ?></td>
<td><?php echo $zbanowany['data'] ?></td>
<td align="center"><a href="<?php echo WEBSITE . 'index.php/admin/banned/1/' . $zbanowany['id']; ?>">Klik!</a></td>
</tr>
<?php } ?>
</tbody>
</table>
<br />
<br />
<hr />
<div style="text-align: center;">
<form method="POST" action="">
<input name="adres_ip" type="text" placeholder="Adres IP" />
<br />
<textarea name="powod" placeholder="Tutaj wpisz pow?d bana..."></textarea>
<br />
<button name="submit" type="submit">Zbanuj</button>
</form>
</div>
<hr />
<a href="<?php echo WEBSITE . 'index.php/admin/'; ?>"><?php echo htmlentities('<~~'); ?> Wr?? do Admin</a>
Kolejno, edytujemy plik admin.php w /system/application/controllers/ i na samym dole przed:
PHP:
}
?>
upewniamy si?, ?e kodowanie tego pliku to UTF8 dodajemy kod:
PHP:
// KUZIRASHI
public function banned ($action = null, $id = null) {
$action = (int)$action;
$id = (int)$id;
// WYMAGAJ ADMINA
$ide = new IDE;
$ide->requireAdmin();
// ZA?ADUJ MODEL
$this->load->model('banned_model');
switch ($action) {
default:
function ban ($ip, $pow?d) {
$CI =& get_instance();
$CI->load->model('banned_model');
$CI->banned_model->banIP($ip, $pow?d);
}
// WE? LIST? ZBANOWANYCH Z MODELU I PRZYPISZ DO ZMIENNEJ {$lista}
$data['lista'] = $this->banned_model->getBannedIPS();
// ZA?ADUJ WIDOK Z NASZYMI DANYMI {$data}
$this->load->view('admin/banned.php', $data);
break;
// ODBANUJ
case 1:
if ($id != null && $this->banned_model->exists($id)) {
if ($this->banned_model->unban($id)) {
success('Z powodzeniem usun??e? dane IP z listy zbanowanych.');
}
// PRZEKIEROWANIE -- {!} ABY TEGO U?Y? MUSICIE MIE? ZA?ADOWANE JQUERY
$this->load->view('refresh');
} else {
header('Location: ../');
}
break;
}
}
Nast?pnie, tworzymy nowy plik o nazwie banned_model.php w /system/application/models, z formatowaniem UTF8, i wklejamy do niego kod:
PHP:
<?php
########## KUZIRASHI'S BANNED SCRIPT ##########
########## GG: 4760316 KUZIRASHI@INTERIA.PL ##########
/* http://tibia.net.pl/members/281422-Kuzirashi */
/* BEGIN -- MODEL -- */
class Banned_Model extends Model {
function __construct () {
parent::__construct();
$this->load->database();
}
function getBannedIPS() {
return $this->db->query('SELECT `id`, `pow?d`, INET_NTOA(`adres_ip`) AS "ip", data FROM `banned_ips`;')->result_array();
}
function banIP($ip, $pow?d) {
if ($this->db->query('INSERT INTO `banned_ips`(`pow?d`, `adres_ip`, `data`) VALUES("' . $pow?d . '", INET_ATON("' . $ip . '"), "' . date("Y-m-d H:i:s", strtotime("now")) . '");')) {
return true;
} else {
return false;
}
}
function isBanned($ip) {
if ($q = $this->db->query('SELECT INET_NTOA(`adres_ip`) AS "ip" FROM `banned_ips` WHERE `adres_ip` = INET_ATON("' . $ip . '");')->row_array()) {
return true;
} else {
return false;
}
}
function getReason($ip) {
$q = $this->db->query('SELECT `pow?d` FROM `banned_ips` WHERE `adres_ip` = INET_ATON("' . $ip . '");')->row_array();
return $q['pow?d'];
}
function unban($id) {
if ($this->db->query('DELETE FROM `banned_ips` WHERE `id` = ' . $id)) {
return true;
} else {
return false;
}
}
function exists($id) {
if($q = $this->db->query('SELECT `id` FROM `banned_ips` WHERE `id` = ' . $id)->num_rows()) {
if ($q > 0) {
return true;
} else {
return false;
}
} else {
return false;
}
}
}
?>
Teraz, b?dziemy edytowa? plik w index.php w g??wnym katalogu, szukamy w naszym edytorze fragmentu:
PHP:
$smarty->assign('admin', '');
i pod nim wklejamy kod:
PHP:
/* KUZIRASHI BANNED IPS */
$CI->load->model('banned_model');
if ($CI->banned_model->isBanned($_SERVER['REMOTE_ADDR'])) {
die('Sorry, you are banned because of: ' . $CI->banned_model->getReason($_SERVER['REMOTE_ADDR']) . '. For contact write to e-mail: memsoria@tlen.pl');
}
/* -- END -- */
Jeszcze jedna rzecz. Tworzycie plik refresh.php w /system/application/views/ i je?eli mamy ju? na stronie za?adowane JQuery, to lajcik wklejamy po prostu kod:
HTML:
<script type="text/javascript">
$(function () {
setInterval(function(){
location.reload();
},3000);
});
</script>
Je?li natomiast nie mamy JQuery, to musimy doda? jeszcze jedn? linijk? w pliku refresh.php, powy?ej kodu, kt?ry wklejali?my:
HTML:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
A wi?c to by by?o na tyle. Pozdrawiam i mi?ego dnia.
Reput mile widziany.
Zabraniam kopiowania zawarto?ci na inne fora/serwisy.
Notka moderatorska: |
+40pkt do konkursu! |