Как вывести именинников БЕЗ БД?

  • Автор темы wapmasta
  • Дата начала

wapmasta

Guest
Как вывести именинников БЕЗ БД?

дорогие друзья!
такая ситуация.

1. имеется некоторое кол-во зарегистрированных юзеров.
2. каждому соответствует свой файл вида $name.dat
3. в этом файле через хранятся логин пароль число месяц год рожд., они разделены знаком |
4. при заходе на сайт юзер вводит свой логин и пароль, проходит их проверка, это все сделано.
ВОПРОС:
как прошаривать все эти файлы, чтобы вывести имена тех у кого сегодня день рождения.
понятно как это сделать вручную, (создать массив всех юзеров разбитый на 365 $conf["d-m"] ).
А как сделать чтобы это происходило в автоматическом режиме, без созданного мной массива, ведь люди добавляются сами?
БАЗ ДАННЫХ НЕ предлагать!

спасибо!
 

hash

Guest
а чё, нету никакой базы данных???
тогда лучше застрелись....
 

sergadm

Новичок
hashне флуди
1 вариант эту инфу сложить в отдельный файл и при регистрации новых сразу добавлять туда дни рождения и логины
2 получаешь список файлов в директории. читаешь поочереди все файлы, регулярным выражением(либо стрингоывми функциями) дёргаешь логины для которых подходит шаблон текущей даты. выводишь именнииков и записываешь их в файл для последующих выводов(что бы не проглелывать в этот день операцию сначала). и всего делов то
 

4m@t!c

Александр
Не понимаю, для чего создавать для каждого юзера отдельный файл, в котором хранится логин, пароль и дата рождения....
Если юзеров немного, то такие данные проще писать в один файл.
Вариант, предложенный sergadm не совсем подходит
хотя бы потому что скрипт, который это(записывание ДР для текущего дня) будет выполнять нужно все равно запускать ручками, или писАть крон.
 

Crazy

Developer
4m@t!c, писать крон не надо. Его давно написали. :)

Что до задачи, то могу посоветовать одно: прекратить заниматься интеллектуальным онанизмом.
 

sergadm

Новичок
4m@t!c:
выполнять нужно все равно запускать ручками, или писАть
мда зачем ручками. в условиях ясно написано "при заходе на сайт" -> это можно впихнуть в скрипт авторизации
это всё делается минут за пятнадцать ну или полчаса с учётом опечаток в коде:)
 

4m@t!c

Александр
sergadm
Т.е. у тебя каждый юзверь будет при входе формировать файл с ДР?????? или как????
 

WeirD

Новичок
4m@t!c
Можно включить еще и проверку, скажем, на существование этого файла и дату его создания. Т.е если файл существует и создан сегодня, то берем инфу из него, если нет - тогда собираем инфу и в этот файл ее записываем... для потомков...
 

wapmasta

Guest
спасибо господа!
я своим скудным разумением сделал 365 файлов и юзверы при регистрации еще и вписывают свои логин в файл типа 07-01.dat (для 7 января), думаю все получица.

есть новые вопросы:
1.как мне по быстрому растасовать данные уже зарегенных юзеров (более 2000)
2. и ЧТО ТАКОЕ КРОН?

спасибо!
 
wapmasta
А ты файлы случайно не "вручную" делал?...

имхо - эти 365 файлов нужно было делать по уже имеющимся пользователям...

перейди на другой хостинг, например www.agava.ru, там и базу дадут и бесплатно.
 

vovchik542

Новичок
Лучше в файле разделяй ре "|", а "\n". Легче данные извлекать будет. Вот примр кода для решения твоей задачи:

PHP:
$userdata[0] = $user_name;
$userdata[1] = $birthdate_in_your_format;
...

$of = fopen($dir."/".$user_name.".dat", "a+");
flock($of, LOCK_EX);
ftruncate($of, 0);
foreach($userdata as $val) fwrite ($of, $val."\n");
fflush($of);
flock($of, LOCK_UN);
fclose($of);

...


$od=opendir($dir);
while (($rd=readdir($od)) !== false) {
   if ($rd=='.' || $rd=='..') continue;
   if (is_file($dir."/".$rd)) 
      if ($rd == $user_name.".dat") {
         $curr_file = file($dir."/".$rd);
         $curr_file = trim($curr_file);
          if ($curr_file[1] == $curr_date) echo "User $curr_file[0] has Name-day today";
          break;
      }
}
closedir($od);
$birthdate_in_your_format - Дата в твоем формате
$curr_date - Сегодняшняя дата в том же формате
$dir - Каталог с файлами пользователей
$user_name - Имя пользователя:)

З.Ы. ИМХО, 365 файлов это извращенство:)
 

sergadm

Новичок
4m@t!c
научись читать посты до конца прежде чем разводить бесмысленный флуд
 
Сверху