За последние 24 часа нас посетили 58928 программистов и 1816 роботов. Сейчас ищут 1119 программистов ...

Как содержимое массива хранить в файле ?

Тема в разделе "PHP для новичков", создана пользователем smala, 11 янв 2011.

  1. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    в скрипте участок массив

    в масиве содержатся Ip адреса:

    Так вот ip адресов будет много, как их можно хранить в файле?
    допустим файл info.dat
    ----------------------------------------
    я так пробывал
    и потом

    но так не срабатывает((([/quote]
     
  2. Rizan

    Rizan Активный пользователь

    С нами с:
    25 июн 2007
    Сообщения:
    115
    Симпатии:
    0
    Адрес:
    Пермь
    а что тебе мешает посимвольно считать файл? а потом разбить его на нужные вещи?
     
  3. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    ну сделал я такой файл info.dat, а как мне сделать чтоб он работал??)) Чтоб масив $bann_array действовал
     
  4. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    вот весь код, ip адреса которые забаненые вносятся в масив

    как реализовать чтоб содержимое масива, ну в общем чтоб ip добавлять в файл а не в скрипт
     
  5. Rizan

    Rizan Активный пользователь

    С нами с:
    25 июн 2007
    Сообщения:
    115
    Симпатии:
    0
    Адрес:
    Пермь
    как нибудь так:
    PHP:
    1.  
    2. <?php
    3.  //Открываем файл для чтения
    4.  $f=fopen("./ip.txt","r")  or die ("не могу открыть файл");
    5.  //построчное чтение файла
    6.  while(!feof($f))
    7.  {
    8.  $array[]=fgets($f,255);
    9.  }
    10.  
    11.  foreach ($array as $value)
    12.  {
    13.   $ban_array[$value]='bann';
    14.  }
    15.  print_r($ban_array);
    16. ?>
     
  6. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    спс буду пробывать, но еще вопрос
    //построчное чтение файла
    как записывать в файл построчно, у меня все пишет в одну строку


     
  7. Rizan

    Rizan Активный пользователь

    С нами с:
    25 июн 2007
    Сообщения:
    115
    Симпатии:
    0
    Адрес:
    Пермь
    открываешь файл для чтения/записи и записываешь в файл..
    Код (Text):
    1. $f=fopen("./ip.txt","a+t")  or die ("не могу открыть файл");
    для построчной записи:
    Код (Text):
    1. fputs($f,"то что надо записать");
     
  8. Rizan

    Rizan Активный пользователь

    С нами с:
    25 июн 2007
    Сообщения:
    115
    Симпатии:
    0
    Адрес:
    Пермь
    PHP:
    1. <?php
    2.  //Открываем файл для чтения
    3.  $ip2= "220.94.220.60";
    4. //открыть файл
    5. $fp=fopen("./ip.txt","a+t");
    6. //что сделать
    7. fputs($fp,$ip2."\n");
    8. //закрыть файл
    9. fclose($fp);
    10. ?>
     
  9. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    спасибо)))
     
  10. Jampire

    Jampire Активный пользователь

    С нами с:
    22 авг 2009
    Сообщения:
    181
    Симпатии:
    0
    Адрес:
    Гомель
  11. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    unserialize
     
  12. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Есть ещё один замечательный способ:

    PHP:
    1. <?php
    2.  
    3. return array(
    4.  'param' => 'value'
    5. );
    6.  
    7. ?>
    И загружаем:
    Код (Text):
    1. include_once 'banned.php';
     
  13. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Сериализация в данном случаи самое адекватное и элементарное решение,а так лучше в Бд хранить подобные вещи
     
  14. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    в общем парюсь и все парюсь(((

    содержимое файла ip.dat
    Друзья помогите пожалуста, уже вторые сутки мудрую, глаза вылазят
     
  15. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    оно почемуто функция мвсива не срабатывает
     
  16. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Ничего не понимаю. Столько шуму из-за этого:
    $ban_array = file('ip.dat');
    или этого:
    $ban_array = unserialize(file_get_contents('ip.dat'));
    ???
     
  17. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    вот сюда вставлял!!!
    и выходит

     
  18. Jampire

    Jampire Активный пользователь

    С нами с:
    22 авг 2009
    Сообщения:
    181
    Симпатии:
    0
    Адрес:
    Гомель
    Обознался, спасибо :lol:
     
  19. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    Неужели никак такого не сделать??? вот основной скрипт!!


    Код (Text):
    1. <?php
    2.  
    3. /* Сообщение при банне ip */
    4. define("bann_message", "Для вашего IP: %ip% доступ к сайту закрыт.");
    5.  
    6. /* Предупреждение о возможности банна по ip */
    7. define("wrong_message", "Вы предупреждены администратором данного сайта о возможной блокировке вашего IP: %ip% в случае дальнейшего нарушения правил.");
    8.  
    9. /* массив с ip и типом блокировки. в ключе массива IP, в значении тип блокировки */
    10. $bann_array = array(
    11.                     "78.40.176.13"=>"bann",
    12.                     "220.94.220.60"=>"bann",
    13.  
    14.                     );
    15.  
    16. /* Функция для почти 100% определения IP адреса посетителя. */
    17. /* Перебирает все возможные переменные с IP. */
    18. function _ip()
    19. {
    20.   if(isset($HTTP_SERVER_VARS)) {
    21.     if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) {
    22.     $realip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
    23.     }elseif(isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])) {
    24.       $realip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
    25.     }else{
    26.       $realip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
    27.     }
    28.   }else{
    29.   if(getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
    30.     $realip = getenv( 'HTTP_X_FORWARDED_FOR' );
    31.   }elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
    32.     $realip = getenv( 'HTTP_CLIENT_IP' );
    33.   }else {
    34.     $realip = getenv( 'REMOTE_ADDR' );
    35.   }
    36. }
    37. return $realip;
    38. }
    39.  
    40. /* Определяет, что делать с владельцем того или иного ip адреса */
    41. function bann_on_not_to_bann()
    42. {
    43.     global $bann_array; // получаем массив с ip адресами
    44.     $user_ip = _ip();   // получаем ip
    45.  
    46. /* разбираем массив на ключ и значение */
    47. foreach($bann_array as $ip=>$type)
    48. {
    49.     if ($ip == $user_ip) // проверяем
    50.     {
    51.         switch($type) // если ip совпал то смотрим что делать
    52.         {
    53.             case "wrong": // предупреждение
    54.             {
    55.                 echo str_replace("%ip%", $user_ip, wrong_message); // выводим предупреждение
    56.                 break; // выход из switch
    57.             }
    58.             case "bann": // блокировка
    59.             {
    60.                 die(str_replace("%ip%", $user_ip, bann_message)); // Сообщение о том, что доступ закрыт + завершение работы php
    61.                 // break не требуется т.к. дальше уже ничего не выполняется
    62.             }
    63.         }
    64.     }
    65. }
    66. }
    67.  
    68. /* проверяем владельца ip и блокируем\предупреждаем если это спамер */
    69. bann_on_not_to_bann();
    70. ?>
    в этом масиве содержатся ip со значением

    Код (Text):
    1. $bann_array = array(
    2.                     "78.40.176.13"=>"bann",
    3.                     "220.94.220.60"=>"bann",
    4.  
    5.                     );
    скрипт работает отлично, только вот как можно хранить список ip в файле,
    чтоб в масив было чтения из файла ip.dat



    Подскажите пожалуста что мне вставить СЮДА!??
    Код (Text):
    1. /* массив с ip и типом блокировки. в ключе массива IP, в значении тип блокировки */
    2.  
    3.  
    4.                                     !!!!!СЮДА!!!!!
    5.  
    6.  
    7. /* Функция для почти 100% определения IP адреса посетителя. */
    8. /* Перебирает все возможные переменные с IP. */
    9. function _ip()
    Чтобы код работал,
    файл называется ip.dat, содержисое файла
    Код (Text):
    1. 127.0.0.1
    2. 127.0.0.2
    3. 127.0.0.3
    4. 220.94.220.60
    5. 46.98.29.31
    Я вас умоляю помогите)))!!!))!))!))
     
  20. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    PHP:
    1. <?php
    2. $bann_array = array();
    3. $f = file('ip.dat');
    4. foreach($f as $ip) {
    5.     $ip = trim($ip);
    6.     $bann_array[$ip] = 'bann';
    7. }
     
  21. smala

    smala Активный пользователь

    С нами с:
    11 янв 2011
    Сообщения:
    137
    Симпатии:
    0
    Спасибооо большое)) прибольшущее))) самое здоровенное))) работает Ураааа-!!!!))))))
     
  22. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    $bann_array = array_fill_keys($f, 'bann');

    Если уж совсем по-правильному