PDA

View Full Version : گفتگو: روش های بلاک کردن آی پی



soroush.r70
پنج شنبه 22 دی 1390, 16:20 عصر
دوستان می تونین بگین از چه روش هایی می شه وقتی داخل آدرس بار عبارت و یا کارکتری رو وارد کردن آی پی طرف به طور اتوماتیک بلاک بشه.

لطفا هر روشی که می تونین بگین.

djsaeedkhan
پنج شنبه 22 دی 1390, 16:55 عصر
با سلام
می تونی با آرایه زیر دستی این کار رو انجام بدی
یا اینکه آی پی ها رو توی دیتابیس ذخیره کنی و با اونا یه آرایه درست کنی و ارایه رو بدی به این کد ها تا اونارو ببنده


<?php
$deny = array("111.111.111", "222.222.222", "333.333.333");
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
header("location: http://www.google.com/");
exit();
} ?>

djsaeedkhan
پنج شنبه 22 دی 1390, 16:59 عصر
برای بدست آوردن اطلاعات بیشتر در مورد کاربر یا خودتون درباره آی پی و ...

<!DOCTYPE html>
<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>What's my IP dude!</title>
<body>
<div id="tools" class="tools">
<p>Your IP:</p>
</div>
<div id="ip-lookup" class="tools">
<?php if ($_SERVER["HTTP_X_FORWARDED_FOR"] != "") {
$IP = $_SERVER["HTTP_X_FORWARDED_FOR"];
$proxy = $_SERVER["REMOTE_ADDR"];
$host = @gethostbyaddr($_SERVER["HTTP_X_FORWARDED_FOR"]);
} else {
$IP = $_SERVER["REMOTE_ADDR"];
$host = @gethostbyaddr($_SERVER["REMOTE_ADDR"]);
} ?>
<h1><?php echo $IP; ?></h1>
</div>
<div id="more" class="tools">
<p><a id="more-link" title="More information" href="javascript:toggle();">More info</a></p>
</div>
<div id="more-info" class="tools">
<ul>
<?php
echo '<li><strong>Remote Port:</strong> <span>'.$_SERVER["REMOTE_PORT"].'</span></li>';
echo '<li><strong>Request Method:</strong> <span>'.$_SERVER["REQUEST_METHOD"].'</span></li>';
echo '<li><strong>Server Protocol:</strong> <span>'.$_SERVER["SERVER_PROTOCOL"].'</span></li>';
echo '<li><strong>Server Host:</strong> <span>'.$host.'</span></li>';
echo '<li><strong>User Agent:</strong> <span>'.$_SERVER["HTTP_USER_AGENT"].'</span></li>';
if ($proxy) echo '<li><strong>Proxy: <span>'.($proxy) ? $proxy : ''.'</span></li>';

$time_start = microtime(true);
usleep(100);
$time_end = microtime(true);
$time = $time_end - $time_start;
?>
</ul>
<p><small>It took <?php echo $time; ?> seconds to share this info.</small></p>
</div>
</body>
</html>

soroush.r70
جمعه 23 دی 1390, 10:40 صبح
حالا روشی هست که وقتی داخل آدرس بار عبارتی مثلا % رو زد به طور اتوماتیک آی پی طرف بلاک بشه.

Yousha
جمعه 23 دی 1390, 11:18 صبح
از این تابع استفاده کن. کاملترین و قویترین تابع client IP:


function Client_IP()
{
static $_Ary_List = array('REMOTE_ADDR', 'HTTP_CLIENT_IP', 'CLIENT_IP', 'HTTP_PROXY_CONNECTION', 'HTTP_FORWARDED', 'HTTP_X_FORWARDED', 'HTTP_X_FORWARDED_HOST', 'HTTP_X_FORWARDED_SERVER', 'FORWARDED_FOR_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED_FOR_IP', 'HTTP_X_FORWARDED_FOR', 'FORWARDED', 'X_FORWARDED_FOR', 'FORWARDED_FOR', 'X_FORWARDED', 'HTTP_VIA', 'VIA');

foreach($_Ary_List as $_Value)
{
if(isset($_SERVER[$_Value]))
{
return $_SERVER[$_Value];
}
elseif(getenv($_Value))
{
return getenv($_Value);
}
elseif(isset($HTTP_SERVER_VARS[$_Value]))
{
return $HTTP_SERVER_VARS[$_Value];
}
else
{
continue;
}
}

return 0;
}

echo Client_IP();


برید حال کنید باهاش :چشمک:

soroush.r70
جمعه 23 دی 1390, 22:23 عصر
حالا از این تابع به چه صورت و چگونه به خوبی باید استفاده کرد.

Yousha
جمعه 23 دی 1390, 22:30 عصر
echo Client_IP() ;

رضا قربانی
جمعه 23 دی 1390, 23:51 عصر
دوستان می تونین بگین از چه روش هایی می شه وقتی داخل آدرس بار عبارت و یا کارکتری رو وارد کردن آی پی طرف به طور اتوماتیک بلاک بشه.

لطفا هر روشی که می تونین بگین.
چون خیلی خوشم میاد ازت و ... :لبخند: گفتم بیام و حالیت کنم جریان چیه و چطوری یک آی پی رو توسط بانک بلاک کنی و نذاری دیگه با اون آی پی وارد سایتت بشه .

بذار یک توضیح کلی بهت بدم :
* اولین کاری که باید بکنی اینه که آی پی طرف رو بگیری .
* دومین کار اینه که آی پی طرف رو به بانک هدایت کنی .
* سومین کار اینه که چک کنی اگر چنین آی پی در بانک وجود داشت بیاد و از ادامه کار و خواندن کدها جلوگیری کنه و یک پیام نمایش بده die() - return

یک صفحه درست کن مثلا به اسم baned.php
آی پی طرف رو می گیریم :


if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}



خب حالا فرض می کنیم که آی در بانک وجود داره و می گیم اگر در بانک چنین آی پی موجود بود بیاد و از ادامه کار جلوگیری کنه :


$link = mysql_connect($dbhost,$dbuser,$dbpass) ;
mysql_select_db($dbname,$link);
$sql="select * from `tbl_ip_ban` where `ip_blocked`='$ip' and `active`='1' ";
$result=mysql_query($sql,$link);
if(mysql_affected_rows($link)>0)
{
$row=mysql_fetch_assoc($result);
$Ban=$row["ip_blocked"] ;
if($Ban==$ip)
{
die('با ارزش پوزش شما از طرف مدیریت سایت بلاک شده اید');
return false;
}
}

خب حالا در ادامه اش می گیم اگر این آی پی در بانک نبود بیاد و در بانک درج کنه و صفحه رو یکبار رفرش کنه که دستور بالایی اجرا بشه ، چون آی پی در بانک قرار می گیره :



$SearchIP = mysql_fetch_array(mysql_query("select * from `tbl_ip_ban` Where `ip_blocked` = '$ip' "));
if($SearchIP['ip_blocked']){
echo'شما اجازه دسترسی دارید .';
die('<meta http-equiv="refresh" content="2;url=index.php" />');
return ;
}
else
{
$sql="INSERT INTO `tbl_ip_ban` (
`RezaId` ,
`ip_blocked` ,
`active`
)
VALUES
(NULL , '$ip', '1');";
$result = mysql_query($sql,$link) or die(mysql_error());

die('هشدار امنیتی === > بلاک شدی آقای روشنایی');
}
mysql_close($link);



خب شما الان یک صفحه داری به نام baned.php که هر کسی بره توش بلاک یا همون آی پیش در بانک ذخیره می شه و از اجازه کار منبع می شه و اگر هم کسی آی پی اش داخل بانک ذخیره بود می گه شما بلاک شده اید .

خب الان شما کامل جزییات بلاک کردن رو دارید حالا باید
وقتی داخل آدرس بار عبارت و یا کارکتری رو وارد کردن آی پی طرف به طور اتوماتیک بلاک بشه.میاییم و می گیم اگر چنین کاراکترهایی در ورودی یا url ها (post OR get) وارد شده به صفحه baned.php هدایت بشه :لبخند:


$symbol_New= array(',', ')', '(', "'", '"','!', '[', ']', '+', '*', ';', ':', '|', '%', '!', '<', '-', '>', '^', '=', '\x00','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a','$', 'هر چی که دوست داری');

foreach($symbol_New as $k => $v){
if(strstr($_POST['q'] , $v)) {
die('<meta http-equiv="refresh" content="2;url=Baned.php" /><center> شما از کاراکتر های غیر مجاز استفاده کرده اید ===> '.$_POST['q'].' </center>');
break;
return ;
}

}

به همین راحتی

یک فانکشنی که توی همه ی صفحاتت اول صفحه فراخوانی می کنی ، این تیکه کد رو بهش اضافه کن تا توی اول تمامی صفحاتت چک بشه :


$sql="select * from `tbl_ip_ban` where `ip_blocked`='$ip' and `active`='1' ";
$result=mysql_query($sql,$link);
if(mysql_affected_rows($link)>0)
{
$row=mysql_fetch_assoc($result);
$Ban=$row["ip_blocked"] ;
if($Ban==$ip)
{
die('شما بلاک شده اید');
return false;
}
}


بانک که تابلوه tbl_ip_ban :
active که اگر یک بگیره یعنی بلاک شده اگر غیر یک باشه می گه شما اجازه دسترسی دارید.
ip_blocked که تمامی آی پی ها در اون ذخیره می شه .
RezaId هم که یک شمارنده به صورت اتوماتیک و کلید .

آره روشنایی جان ، اینطوری کن

امیدوارم بقیه دوستان هم استفاده کرده باشن
موفق باشی

soroush.r70
شنبه 24 دی 1390, 14:03 عصر
آقا دمت گرم فقط در مورد این دو تکه کد بیشتر توضیح می دی و می گی به چه صورت باید قرار بگیره لطفا کامل بگو


$symbol_New= array(',', ')', '(', "'", '"','!', '[', ']', '+', '*', ';', ':', '|', '%', '!', '<', '-', '>', '^', '=', '\x00','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a','$', 'هر چی که دوست داری');

foreach($symbol_New as $k => $v){
if(strstr($_POST['q'] , $v)) {
die('<meta http-equiv="refresh" content="2;url=Baned.php" /><center> شما از کاراکتر های غیر مجاز استفاده کرده اید ===> '.$_POST['q'].' </center>');
break;
return ;
}

}


$sql="select * from `tbl_ip_ban` where `ip_blocked`='$ip' and `active`='1' ";
$result=mysql_query($sql,$link);
if(mysql_affected_rows($link)>0)
{
$row=mysql_fetch_assoc($result);
$Ban=$row["ip_blocked"] ;
if($Ban==$ip)
{
die('شما بلاک شده اید');
return false;
}
}

رضا قربانی
شنبه 24 دی 1390, 16:37 عصر
آقا دمت گرم فقط در مورد این دو تکه کد بیشتر توضیح می دی و می گی به چه صورت باید قرار بگیره لطفا کامل بگو


$symbol_New= array(',', ')', '(', "'", '"','!', '[', ']', '+', '*', ';', ':', '|', '%', '!', '<', '-', '>', '^', '=', '\x00','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a','$', 'هر چی که دوست داری');

foreach($symbol_New as $k => $v){
if(strstr($_POST['q'] , $v)) {
die('<meta http-equiv="refresh" content="2;url=Baned.php" /><center> شما از کاراکتر های غیر مجاز استفاده کرده اید ===> '.$_POST['q'].' </center>');
break;
return ;
}

}


$sql="select * from `tbl_ip_ban` where `ip_blocked`='$ip' and `active`='1' ";
$result=mysql_query($sql,$link);
if(mysql_affected_rows($link)>0)
{
$row=mysql_fetch_assoc($result);
$Ban=$row["ip_blocked"] ;
if($Ban==$ip)
{
die('شما بلاک شده اید');
return false;
}
}

اولین قطعه کد : گت و پست می دونی چیه دیگه ؟ مثلا شما میایی و یک آدرس گت ارسال می کنی و از طرفی هم دریافتش می کنی . اونجایی که دریافت می کنی قطعه کد اولی رو اجرا می کنی تا محتویاتش رو چک کنه که من اینجا از دستور foreach استفاده کردم . اگر چنین کاراکترهایی در آدرس دهی پست یا گت وجود داشت!!!! یک پیام نشون بده و از ادامه کار جلوگیری کن و به صفحه بن کردن آی پی برو.

دومین قطعه کد : گفتم دیگه . بعد از اینکه آی پی رو چک کردی این کدها رو مطابق به ترتیب در زیر هم می نویسی . این کد میاد چک می کنه می گه اگر چنین آی پی داخل بانک بود بگه شما بلاک شده اید و دیگه از ادامه اجرا شدن کدها جلوگیری می کنه و نمی ذاره else اجرا بشه و دوباره آی پی در بانک ذخیره کنه.

soroush.r70
شنبه 24 دی 1390, 20:17 عصر
رضا جون من اومدم این کارو کردم ببین درسته نام جدول ----> tbl_ip

ان کدا کلا داخل banes.php هست.


<?php
require_once("func.php");
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
$sql="select * from `tbl_ip` where `ip`='$ip' and `active`='1' ";
$res=mysql_query($sql);
$row=mysql_fetch_assoc($res);
$Ban=$row["ip"] ;
if($Ban==$ip)
{
die('با ارزش پوزش شما از طرف مدیریت سایت بلاک شده اید');
return false;
}
$SearchIP = mysql_fetch_array(mysql_query("select * from `tbl_ip` Where `ip` = '$ip' "));
if($SearchIP['ip']){
echo'شما اجازه دسترسی دارید .';
die('<meta http-equiv="refresh" content="2;url=index.php" />');
return ;
}
else
{
$sql="INSERT INTO `tbl_ip` (
`Id` ,
`ip` ,
`active`
)
VALUES
(NULL , '$ip', '1');";
$res = mysql_query($sql) or die(mysql_error());

die('هشدار امنیتی === > بلاک شدی آقای روشنایی');
}
?>

اینا رو هم گذاشتم داخل فانکشن به این صورت


$symbol_New= array(',', ')', '(', "'", '"','!', '[', ']', '+', '*', ';', ':', '|', '%', '!', '<', '-', '>', '^', '=', '\x00','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a','$', 'and');
foreach($symbol_New as $k => $v){
if(strstr($_POST['ip'] , $v)) {
die('<meta http-equiv="refresh" content="2;url=Baned.php" /><center> شما از کاراکتر های غیر مجاز استفاده کرده اید ===> '.$_POST['ip'].' </center>');
break;
return ;
}
}
/////////////////////////////////////////////////////////////////////////////////
function ipblock()
{
$sql="select * from `tbl_ip` where `ip`='$ip' and `active`='1' ";
$res=mysql_query($sql);
$row=mysql_fetch_assoc($res);
$Ban=$row["ip"] ;
if($Ban==$ip)
{
die('شما بلاک شده اید');
return false;
}
}


خوب حالا باید فانکشن رو فراخوانی کنم درسته من اومدم اول صفحه index.php اینو نوشتم


<?php
require_once("func.php");
echo $_GET['ip'];
?>


باید فانکشن ipblock اول صفحه فراخوانی بشه درسته من این کارو می کنم آی پی هم اگه داخل بانک ثبت نباشه باز پیغام نمایش می ده.

این کارا رو انجام دادم حالا شما بگو مشکل کجاست و نحوه ی فراخوانی هم بگو

رضا قربانی
شنبه 24 دی 1390, 21:51 عصر
$_GET['ip'] از کجا اومده ؟ $_POST['ip'] از کجا اومده ؟ :اشتباه:
می دونی چطوری یک آدرس گت رو ارسال می کنن ؟

کل این چیزایی که می گی همراه با بانکت اینجا ضمیمه کن تا واست درست کنم .

soroush.r70
یک شنبه 25 دی 1390, 09:59 صبح
داداش بگیر دمت گرم برام ردیفش کن

soroush.r70
دوشنبه 26 دی 1390, 13:29 عصر
آقا ما این فایل رو فرستادیم ببینین کسی می تونه مشکلشو حل کنه

djsaeedkhan
دوشنبه 26 دی 1390, 13:43 عصر
با سلام
دوست عزیز این نمونه
ببین به کارت میادhttp://barnamenevis.org/showthread.php?323387-%D9%85%D8%AD%D8%AF%D9%88%D8%AF-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D8%B3%D9%87-%D8%A8%D8%A7%D8%B1-%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87-%D9%88%D8%A7%D8%B1%D8%AF-%DA%A9%D8%B1%D8%AF%D9%86-%D9%BE%D8%B3%D9%88%D8%B1%D8%AF-IP-Block

رضا قربانی
سه شنبه 27 دی 1390, 09:33 صبح
داداش بگیر دمت گرم برام ردیفش کن
خب صفحه بن کردنت درسته

حالا توی index.php تابعی که تعریف کردی رو فراخوانی کن یعنی بعد اینکه فایل function رو فراخوانی کردی تابع چک کردن آی پی رو فراخوانی کن :



require_once("func.php");
ipblock();

موفق باشید

soroush.r70
سه شنبه 27 دی 1390, 12:59 عصر
اینو می دونم بابا همین کارو کردم من مظورم دستور Get هست باید همین اول صفحه ایندکس فرخوانی بشه .....؟

رضا قربانی
پنج شنبه 29 دی 1390, 10:17 صبح
عزیز من هر جایی می تونی ازش استفاده کنی . اول صفحه آخر صفحه . موقع چک کردن ورودی ها

مثلا یک آدرسی به صورت گت ارسال می کنی
a href="index.php?Reza=aaaaaaaaaaaaaaa"

خب حالا شما یک آدرس گت به نام Reza به سمت index.php پرتاب کردید و باید بگیریش و در جاهایی که نیاز داری ازش استفاده کنی .

حالا می یایی این آدرس گت رو چک می کنی اگر چنین کاراکترهایی بود بیا و فیلتر کن یا بلاک کن یا هر کاری که دوست داری :



$symbol_New= array(',', ')', '(', "'", '"','!', '[', ']', '+', '*', ';', ':', '|', '%', '!', '<', '-', '>', '^', '=', '\x00','\x7F','\xC0','\xFD', '\n', '\r','\t', '\x1a','$', 'and');
foreach($symbol_New as $k => $v){
if(strstr($_Get['Reza'] , $v)) {
die('<meta http-equiv="refresh" content="2;url=Baned.php" /><center> شما از کاراکتر های غیر مجاز استفاده کرده اید ===> '.$_Get['Reza'].' </center>');
break;
return ;
}
}
/////////////////////////////////////////////////////////////////////////////////

shahedifar
پنج شنبه 01 تیر 1391, 22:48 عصر
آقا رضا میشه روش کلی رو بگید که مثلا من میخوام رو یه چت روم این رو پیاده کنم.خیلی سخته اینطوری.:خجالت:

eshpilen
جمعه 02 تیر 1391, 11:23 صبح
برای بدست آوردن اطلاعات بیشتر در مورد کاربر یا خودتون درباره آی پی و ...

<!DOCTYPE html>
<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>What's my IP dude!</title>
<body>
<div id="tools" class="tools">
<p>Your IP:</p>
</div>
<div id="ip-lookup" class="tools">
<?php if ($_SERVER["HTTP_X_FORWARDED_FOR"] != "") {
$IP = $_SERVER["HTTP_X_FORWARDED_FOR"];
$proxy = $_SERVER["REMOTE_ADDR"];
$host = @gethostbyaddr($_SERVER["HTTP_X_FORWARDED_FOR"]);
} else {
$IP = $_SERVER["REMOTE_ADDR"];
$host = @gethostbyaddr($_SERVER["REMOTE_ADDR"]);
} ?>
<h1><?php echo $IP; ?></h1>
</div>
<div id="more" class="tools">
<p><a id="more-link" title="More information" href="javascript:toggle();">More info</a></p>
</div>
<div id="more-info" class="tools">
<ul>
<?php
echo '<li><strong>Remote Port:</strong> <span>'.$_SERVER["REMOTE_PORT"].'</span></li>';
echo '<li><strong>Request Method:</strong> <span>'.$_SERVER["REQUEST_METHOD"].'</span></li>';
echo '<li><strong>Server Protocol:</strong> <span>'.$_SERVER["SERVER_PROTOCOL"].'</span></li>';
echo '<li><strong>Server Host:</strong> <span>'.$host.'</span></li>';
echo '<li><strong>User Agent:</strong> <span>'.$_SERVER["HTTP_USER_AGENT"].'</span></li>';
if ($proxy) echo '<li><strong>Proxy: <span>'.($proxy) ? $proxy : ''.'</span></li>';

$time_start = microtime(true);
usleep(100);
$time_end = microtime(true);
$time = $time_end - $time_start;
?>
</ul>
<p><small>It took <?php echo $time; ?> seconds to share this info.</small></p>
</div>
</body>
</html>
کدی رو که ارائه کردی در فایل test.php ذخیره کن و بریز در ریشهء وب localhost خودت.

حالا این کد رو در test2.php ذخیره کن:


<?php

$service_port = getservbyname('www', 'tcp');

$address = gethostbyname('localhost');

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
} else {
echo "OK.\n";
}

$result = socket_connect($socket, $address, $service_port);
if ($result < 0) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
} else {
echo "OK.\n";
}

$in = "GET /test.php HTTP/1.1\r\n";
$in .= "Host: localhost\r\n";
$in .= "X_FORWARDED_FOR: Thank u dude! Excellent hole ;)\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

socket_write($socket, $in, strlen($in));

while ($out = socket_read($socket, 2048)) {
echo $out;
}

socket_close($socket);

?>

و اجراش کن و نتیجه رو ببین.
البته باید امکان استفاده از سوکت در کانفیگ PHP فعال باشه.

MostafaEs3
جمعه 02 تیر 1391, 12:07 عصر
یک کد نوشتم واسه بستن رنج آی پی . مثلا یکنفر آی پی 192.65.13.56 داره ... این چک میکنه اگه فقط دو قسمت اول مساوی بود نمیذاره آی پی وارد بشه :



<?php
session_start();
set_time_limit(30);
error_reporting(E_ALL);
date_default_timezone_set('Asia/Tehran');
ini_set('output_buffering', '4096');
ini_set('magic_quotes_gpc', 'Off');


echo '
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="fa">';

function stripslashes_deep(&$value)
{
$value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
return $value;
}

function ref_trim(&$str)
{
$str = trim($str);
}

function ip_address(){
if (isset($_SERVER["REMOTE_ADDR"]))
{
$ip=$_SERVER["REMOTE_ADDR"];
} else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ) {
$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];
} else if ( isset($_SERVER["HTTP_CLIENT_IP"]) ) {
$ip=$_SERVER["HTTP_CLIENT_IP"];
}
return $ip;
}

function save_in_file($data,$file_name,$perm){
$handle = fopen($file_name, $perm);
if(fwrite($handle, $data) == FALSE){
$ret = false;
}else{
$ret = true;
}
fclose($handle);
return $ret;
}

function explode_n($data){
$data = explode("\n",$data);
return $data;
}



function ip_ban($ip,$time){
save_in_file($ip.','.(time()+($time*3600))."\n" ,'ip.txt','a+');
}


function check_ip($file){
if(file_exists($file)){
$file= explode_n(file_get_contents($file));
for($i=0;$i<count($file);$i++){
$file2 = explode(',',trim($file[$i]));
$ip = explode('.',trim($file2[0]));
$ip_now = explode('.',trim(ip_address()));
if(trim($ip[0])==trim($ip_now[0]) and trim($ip[1])==trim($ip_now[1])){
if(time() >= $file2[1]){
return true;
break;
}else{
return false;
break;
}
}
}
}else{
echo 'error';
}
return true;
}
?>


** نحوه ی استفاده از توابع **

بستن آی پی :



$hours = "1";
ip_ban(ip_address(),$hours);



جلوگیری از ورود آی پی های بسته شده :




if(!check_ip('ip.txt')){
echo '<script type="text/javascript">alert("در بروی شما قفل میباشد ! تا '.$hours.' ساعت دیگه باز میشه !")</script>';
//header("HTTP/1.0 404 Not Found");
exit;
}



میتونی تعیین کنی که چند ساعت این آی پی بسته باشه . برای دقیقه هم کافیه از اعداد اعشاری استفاده کنی یا توی فانکشن تغییرات بدی

همه ی آی پی ها توی فایلی به اسم ip.txt ذخیره میشه و نیازی به اتصال دیتابیس نداره !! :بامزه: