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

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

wapmasta

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

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

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

спасибо!
 
а чё, нету никакой базы данных???
тогда лучше застрелись....
 
hashне флуди
1 вариант эту инфу сложить в отдельный файл и при регистрации новых сразу добавлять туда дни рождения и логины
2 получаешь список файлов в директории. читаешь поочереди все файлы, регулярным выражением(либо стрингоывми функциями) дёргаешь логины для которых подходит шаблон текущей даты. выводишь именнииков и записываешь их в файл для последующих выводов(что бы не проглелывать в этот день операцию сначала). и всего делов то
 
Не понимаю, для чего создавать для каждого юзера отдельный файл, в котором хранится логин, пароль и дата рождения....
Если юзеров немного, то такие данные проще писать в один файл.
Вариант, предложенный sergadm не совсем подходит
хотя бы потому что скрипт, который это(записывание ДР для текущего дня) будет выполнять нужно все равно запускать ручками, или писАть крон.
 
4m@t!c, писать крон не надо. Его давно написали. :)

Что до задачи, то могу посоветовать одно: прекратить заниматься интеллектуальным онанизмом.
 
4m@t!c:
выполнять нужно все равно запускать ручками, или писАть
мда зачем ручками. в условиях ясно написано "при заходе на сайт" -> это можно впихнуть в скрипт авторизации
это всё делается минут за пятнадцать ну или полчаса с учётом опечаток в коде:)
 
sergadm
Т.е. у тебя каждый юзверь будет при входе формировать файл с ДР?????? или как????
 
4m@t!c
Можно включить еще и проверку, скажем, на существование этого файла и дату его создания. Т.е если файл существует и создан сегодня, то берем инфу из него, если нет - тогда собираем инфу и в этот файл ее записываем... для потомков...
 
спасибо господа!
я своим скудным разумением сделал 365 файлов и юзверы при регистрации еще и вписывают свои логин в файл типа 07-01.dat (для 7 января), думаю все получица.

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

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

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

перейди на другой хостинг, например www.agava.ru, там и базу дадут и бесплатно.
 
Лучше в файле разделяй ре "|", а "\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 файлов это извращенство:)
 
4m@t!c
научись читать посты до конца прежде чем разводить бесмысленный флуд
 
Сверху