Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: игнор
 
 автор: adminn   (11.05.2007 в 22:25)   письмо автору
 
 

Помогите написать скрипт. Задача : пользователь входит на страницу его ip записывается в файл и если он входит на стр. с этого же ip то его не пускает.
С чего хоть начать и как это организовать.

   
 
 автор: DEM   (11.05.2007 в 22:35)   письмо автору
 
   для: adminn   (11.05.2007 в 22:25)
 

Айпи опреедляется так:
$_SERVER['REMOTE_ADDR'];

<?php
$ip 
$_SERVER['REMOTE_ADDR'];
$fp fopen($file"a+");
fwrite($fp$ip."\n");
fclose($fp);
?> 

   
 
 автор: adminn   (12.05.2007 в 00:01)   письмо автору
 
   для: DEM   (11.05.2007 в 22:35)
 

спасибо
как мне сделать проверку через конструкцию for? или может другую?
если ip есть в файле ip.txt по выполняется оператор
echo "error";
если его нет то include('df.html') ну вы меня поняли

   
 
 автор: bronenos   (12.05.2007 в 09:36)   письмо автору
 
   для: adminn   (12.05.2007 в 00:01)
 

<?php
if (strpos(
     
file_get_contents ('ban.txt'),
     
$_SERVER['REMOTE_ADDR']
   ) !== 
false) require 'otherpage.html';
?>

   
 
 автор: bronenos   (12.05.2007 в 09:37)   письмо автору
 
   для: adminn   (12.05.2007 в 00:01)
 

<?php
if (strpos(
     
file_get_contents ('ban.txt'),
     
$_SERVER['REMOTE_ADDR']
   ) !== 
false) require 'otherpage.html';
?>

   
 
 автор: Trianon   (12.05.2007 в 16:55)   письмо автору
 
   для: bronenos   (12.05.2007 в 09:37)
 

Нельзя так.
Окажись в файле 175.36.224.151
адреса вроде 75.36.224.15 окажутся забаненными.
А всё потому, что символьный набор и адресный набор - вещи разные.

   
 
 автор: DEM   (12.05.2007 в 19:33)   письмо автору
 
   для: adminn   (12.05.2007 в 00:01)
 

Что-то тут понаписали )))

<?php
$file 
file("ip.txt");
for(
$i=0;$i<count($file);$i++)
{
  if(
$file[$i]==$_SERVER['REMOTE_ADDR'])
  {
    echo 
"error";
  }
  else
  {
    include 
"df.html"'
  }
}
?>

   
 
 автор: bronenos   (12.05.2007 в 19:43)   письмо автору
 
   для: DEM   (12.05.2007 в 19:33)
 

да, ступил я... ну тогда может так..
<?php
$user 
$_SERVER['REMOTE_ADDR'];
$ban false;

foreach (
file('ip.txt') as $ip)
{
  if (
$user != trim($ip)) continue;
  
$ban true; break;
}

if (
$ban)
{
  
// page for ban
}
else
{
  
// normal page
}
?>

   
 
 автор: bronenos   (12.05.2007 в 19:47)   письмо автору
 
   для: DEM   (12.05.2007 в 19:33)
 

да, ступил я... ну тогда может так..
<?php
$user 
$_SERVER['REMOTE_ADDR'];
$ban false;

foreach (
file('ip.txt') as $ip)
{
  if (
$user != trim($ip)) continue;
  
$ban true; break;
}

if (
$ban)
{
  
// page for ban
}
else
{
  
// normal page
}
?>

   
 
 автор: mefestofel   (12.05.2007 в 19:57)   письмо автору
 
   для: bronenos   (12.05.2007 в 19:47)
 

у меня есть готовый класс для подобного.... Если еще актуально пиши вышлю admin@csd-group.ru.... В форуме не выкладываю - много, да и долго ковырять, но если уж очень надо и архив могу к аттачменту прикрепить. P.S. просто я не дома, а все коды лежат дома.... :P-)

   
 
 автор: adminn   (14.05.2007 в 23:15)   письмо автору
 
   для: mefestofel   (12.05.2007 в 19:57)
 

Вот что у меня получилось, только не работает. Подскажите где ошибка
<?php
$$fileip = "ip.txt";
$ip = $_SERVER['REMOTE_ADDR'];
$fp = fopen("ip.txt", "r");
while(!feof ($fp)) {
$chit = fgets($fp);
//ищу в файле совподения с $ip и вывожу его в переменную $art
$next = eregi($ip, $chit, $art);

$art2 = $art[0];

// тут пытаюсь выполнить конструкцию switch
//если $ip = $art2 то должен выполнятся print "error";
//если $ip не равна $art2 то должен выполнятся оператор print "ok"; и..
// но результат errorok!
//в файле я я сделал токую запись:
//ва
//127.0.0.1
switch ($ip)
{
case $art2:
print "error";
break;
default;
print "ok";
//тут я записываю ип в файл , чтоб следующий раз этот ип вывела на еррор
$fpd = fopen($fileip, "a+");
fwrite($fpd, $ip."\n");
fclose($fpd);

}





}
fclose(fp);


?>
Я просто практикуюсь мало) приачач файлик!

   
 
 автор: adminn   (14.05.2007 в 23:24)   письмо автору
 
   для: DEM   (12.05.2007 в 19:33)
 

аналогично!!
если в файле запись
154кук
127.0.0.1
и я захожу с ip 127.0.0.1
результат
okerror
сам скрипт
<?php
$file = file("ip.txt");
for($i=0;$i<count($file);$i++)
{
if($file[$i]==$_SERVER['REMOTE_ADDR'])
{
echo "error";
}
else
{
echo "ok";
}
}
?>

   
 
 автор: bronenos   (14.05.2007 в 23:51)   письмо автору
 
   для: adminn   (14.05.2007 в 23:24)
 

сравнивать надо trim($file[$i])
ибо на конце символ перевода строчки
и он у вас постоянно ищет поэтому надо break ставить при нахождении

   
 
 автор: adminn   (14.05.2007 в 23:54)   письмо автору
 
   для: bronenos   (14.05.2007 в 23:51)
 


<?
$file 
file("ip.txt");
for(
$i=0;$i<count($file);$i++)
{
  if(
trim($file[$i])==$_SERVER['REMOTE_ADDR'])
  {
    echo 
"error";
  }
  else
  {
    echo 
"ok";
  }
}
?>

и результат опять okerrorok
в файле ip.txt такой текст
154кук
127.0.0.1
фыав
что то тут другое надо

   
 
 автор: adminn   (16.05.2007 в 00:54)   письмо автору
 
   для: adminn   (14.05.2007 в 23:54)
 

ап.. помогите решить проблему

   
 
 автор: SacredAlexey   (16.05.2007 в 01:40)   письмо автору
 
   для: adminn   (14.05.2007 в 23:54)
 

>

><?
>$file file("ip.txt");
>for(
$i=0;$i<count($file);$i++)
>{
>  if(
trim($file[$i])==$_SERVER['REMOTE_ADDR'])
>  {
>    echo 
"error";
>  }
>  else
>  {
>    echo 
"ok";
>  }
>}
>
?>
>

>и результат опять okerrorok
>в файле ip.txt такой текст
>154кук
>127.0.0.1
>фыав
>что то тут другое надо


Привет... попробуй так:


<?
$file 
file("ip.txt");
$ip=$_SERVER['REMOTE_ADDR'];
for(
$i=0;$i<=count($file);$i++)
{
     if(
trim($file[$i])==$ip)
           {    
// Если есть, то пускаем на страницу с ощибкой
                
include("error.php");
           }
}

//Записываем ip в бан фаил

$fpd fopen($file"a+");
fwrite($fpd$ip."\n");

//Переход куды надо...
include("home.php")


Так должно работать

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования