  | 
Бесплатные PHP скрипты - форум техподдержки |  
Форум техподдержки WR-Скриптов на php. Обсуждаем: основы программирования на PHP 5 - 7 версий, различные подходы к написанию скриптов на php 7 без MySQL. А также WR-скрипты: бесплатные доски объявлений, скрипты форумов, Гостевые книги, Каталог ссылок, Галерея, Фотоальбом, Счётчики, Рассылки, Анекдот и другие. Принимаются пожелания для новых версий. Сообщите какой скрипт нужен для Вашего сайта, постараемся найти или реализовать. Скачать скрипты можно бесплатно. Вместе мы сделаем бесплатные php скрипты лучше и доступнее!
 
  |   
 |   Сегодня: 04.11.2025 - 18:03:22   On-line Users| Объявление - WR-Scriptы в UTF-8 кодировке | 
|---|
  Активно обновляю скрипты и перевожу их в UTF-8 кодировку. Список перекодированных php скриптов доступен на главной странице сайта. Скачивайте скрипты и устанавливайте на свой сайт! В ближайшее время обновлю каталог знакомств, форум Про, фотоальбом, доски объявлений лайт и ЛЮКС. 
  На форуме, пожалуйста, пишите что модернизировать в скриптах в первую очередь. Постараюсь исправить большую часть пожеланий! Планирую продолжить работы весь 2023 год.
  |  
 | Автор | Сообщение | 
|---|
  Maksir  •
 
 M Участник форума
  | 
Интересная ошибка в коде... Проверка, обратный слешь в строке  fputs($fp ,"$txtdatrn");//работа с файлом    Код:   error_reporting (E_ALL);
  session_start();
  $id_session = session_id();
  $txtdat="$id_session";
  $lines=file("session.dat"); $i=count($lines);
 
  // запись данных $fp = fopen ("session.dat","a");//открытие flock ($fp,LOCK_EX);//БЛОКИРОВКА ФАЙЛА fputs($fp ,"$txtdatrn");//работа с файлом fflush ($fp);//ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ flock ($fp,LOCK_UN);//СНЯТИЕ БЛОКИРОВКИ fclose ($fp);//закрытие @chmod("session.dat", 0644);  |     |   |  
  |  
| Сообщение # 13 | 
18.09.06 - 01:06:37
 |    |   vladik-kiev  •
 
 V гость
  | 
ну что там обратный слэш, и так понятно. wr-forum его фильтрует  |   |  
  |  
| Сообщение # 14 | 
18.09.06 - 11:04:06
 |    |   Артур  •
 
 А гость
  | 
У меня есть готовый под этот форум , но на MySQL   |   |  
  |  
| Сообщение # 15 | 
18.09.06 - 14:53:13
 |    |   Maksir  •
 
 M Участник форума
  | 
Продолжим   Цитата:  session_start();
  $id_session = session_id();
  $txtdat="$id_session";
  $lines=file("session.dat"); $i=count($lines);
  $timestamp=time("H:i:s"); // забирает текущее время в масив $date_time_array = getdate($timestamp); // масив времени $hours = $date_time_array['hours']; // часы $minutes = $date_time_array['minutes']; // минуты $seconds = $date_time_array['seconds']; // секунды $timedel = mktime($hours,$minutes,$seconds +5); // + 5 секунд на самоуничтожения :E
 
  // запись данных $fp = fopen ("session.dat","a+");//открытие flock ($fp,LOCK_EX);//БЛОКИРОВКА ФАЙЛА fputs($fp ,"$txtdat|$timestamp|$timedelrn");//работа с файлом fflush ($fp);//ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ flock ($fp,LOCK_UN);//СНЯТИЕ БЛОКИРОВКИ fclose ($fp);//закрытие @chmod("session.dat", 0644);  |     Здесь добавлена функция занесения времени в массив. Терь нужно создать механизм стерания через заданный интервал времени. Перед   r  и   n  стоят знаки обратный слэш. Если у кого идеи по этому скрипту? Или мнение на сей счёт? |   |  
  |  
| Сообщение # 16 | 
18.09.06 - 17:08:49
 |    |   Maksir  •
 
 M Участник форума
  | 
Артур, на MySQL у меня тоже есть. Там всё решается довольно просто. В смысле, там следует делать выборку из БД. А здесь нужен тонкий расчёт.  |   |  
  |  
| Сообщение # 17 | 
18.09.06 - 17:10:25
 |    |   Maksir  •
 
 M Участник форума
  | 
Вот тепершняя версия работы скрипта Скрипт добавляет в БД сессию. При совпадении не записывает. Это даёт возможность посчитать пользователей. Но, стирать старую информацию пока не получается.   Код:  session_start();
  $id_session = session_id();
  $txtdat="$id_session"; #require ("1.php");
  $datas=time("h:m:s"); $date_time_array = getdate($datas); // масив времени $hours = $date_time_array['hours']; // часы $minutes = $date_time_array['minutes']; // минуты $seconds = $date_time_array['seconds']; // секунды $timedel = mktime($hours,$minutes,$seconds +30); // + 30 секунд на самоуничтожение :E
 
 
  $fp=fopen("del.dat","a+");
  $add=0; // переменная, которая не позволяет записывать данные сессии при совпадении и ровна нулю. $yes=0; $stk=0;
 
  $ls=file("del.dat"); // проверка, есть ли такая сессия $count=count($ls); for ($i=0;$i<$count;$i++) // пробег по всему массиву { $dt[$i]=explode("|",$ls[$i]); // после знака "|" будет найденно искомое }   if ($add==0) {   for ($stk;$stk<$count;$stk++) {   if ($dt[$stk][1]==$txtdat."n") {$yes=1;} } }   if ($yes==0)  {   fwrite($fp,$datas.":".$timedel."|".$txtdat."n"); }
  fclose($fp);
  @chmod("del.dat", 0644);  |    
  КОгда я открываю  require ("1.php");  То скрипт чистит весь файл с БД . Хотя, понять несложно мои намерения, всё-таки где-то есть очень глобальное отстование от мирового прогресса в программировании...   Код: $txtdat="$id_session";
  $datas=time("h:m:s"); $date_time_array = getdate($datas); // масив времени $hours = $date_time_array['hours']; // часы $minutes = $date_time_array['minutes']; // минуты $seconds = $date_time_array['seconds']; // секунды $timedel = mktime($hours,$minutes +2,$seconds); // + 2 минуты на самоуничтожение :E
  $fp=fopen("del.dat","w+"); flock ($fp,LOCK_EX); $delete=round($timedel-$datas); // через сколько сек будет удалена сессия пользователя из базы
  $ls=file("del.dat"); // проверка, есть ли такая сессия $count=count($ls); for ($i=0;$i<$count;$i++) // пробег по всему массиву { $dt[$i]=explode(":",$ls[$i]); // после знака ":" будет найденно искомое }
  if ($delete<=0) {unset($dt[$i]);} flock ($fp,LOCK_UN); fclose($fp); @chmod("del.dat", 0644)  |    
  Поможите люди добрые!  [img]  https://www.wr-script.ru/forum/smile/cray.gif  [/img]  |   |  
  |  
| Сообщение # 18 | 
20.09.06 - 00:32:29
 |    |   Артур  •
 
 А гость
  | 
Вот пример рабочего скрипт on-line для этого форума на файлах
    Код:   session_start();
  $id_session = session_id();
  $txtdat="$id_session"; $txttime=time(); $txtold=$txttime-600; //10 минут через это время запись о клиенте удаляется
  $file=fopen("session.dat","r"); $i=count($lines);  while (!feof($file)) { $lines=fgets($file);
  if ($lines<>'') {  $iss=explode("|", $lines); if ($iss[0]==$id_session) $klient='old'; //игнорируем устаревшие записи  if ($iss[1]>$txtold) { $mas_sess[]=$iss[0]; $mass_id[]=$iss[1]; $mas_name[]=$iss[2];
  } }  }
  fclose ($file);//закрытие
  //если клиент новый добавляем его запись if ($klient<>'old') { $mas_sess[]=$id_session; $mass_id[]=$txttime; if ($wrfname=='') $wrfname='гость'; $mas_name[]=$wrfname; }
  //начинаем работать с файлом $i_mas=count($mas_sess); $fp = fopen ("session.dat","wt");//открытие flock ($fp,LOCK_EX);//БЛОКИРОВКА ФАЙЛА do {$i_mas--; // запись данных fputs($fp ,"$mas_sess[$i_mas]|$mass_id[$i_mas]|$mas_name[$i_mas]|nr");//работа с файлом fflush ($fp);//ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ }  while($i_mas>0); flock ($fp,LOCK_UN);//СНЯТИЕ БЛОКИРОВКИ fclose ($fp);//закрытие @chmod("session.dat", 0644);   |     |   |  
  |  
| Сообщение # 19 | 
20.09.06 - 06:21:11
 |    |   Maksir  •
 
 M Участник форума
  | 
Артур, спасибо! Твой скрипт с самого начала ищет запись в файле dat , а там никого нету... (по идее, там ничего не должно быть -- все записи, по-сути, временные..) Тогда скрипт пишит ошибку. В общем-то, это и не важно. -- можно поставить  error_reporting (0);  и инклюдить в скрипт. Гость там мне кажится не нужен... (скрипач не нужен!) В базе он зачем? Нужно считать теперь все индексы строк и выводить в сумме. Потом, можно будет придумать функцию сравнения с базой зарегистрированных форума. то есть, придётся расширять базу для занесения в неё $id_session и потом сравнение. Если есть, то показать имя зарегестрированного. Если нет, то значит => гость, => в общую массу.
  Прикольно получилось. С меткой времени для удаления из базы, мастерски. Интересно, спасибо!  |   |  
  |  
| Сообщение # 20 | 
20.09.06 - 12:30:15
 |    |   Maksir  •
 
 M Участник форума
  | 
Артур, я понял, почему "гость" в скрипте заносится в базу. Иначе, если пользователь зарегистрирован, его можно попривествовать. :) А  nr  там для прикола... ))))  |   |  
  |  
| Сообщение # 21 | 
20.09.06 - 19:31:28
 |    |   Maksir  •
 
 M Участник форума
  | 
От себя вношу маленькое заключение   Всё работает классно. НО, ещё более классно радует глаз;
    Код:  <?php error_reporting (0);
 
   session_start();
  $id_session = session_id();
  $txtdat="$id_session";
  $txttime=time(); $txtold=$txttime-600; //10 минут через это время запись о клиенте удаляется
 
  $file=fopen("del.dat","a+"); // проверка файла ($file -- масив строки) $i=count($lines); // Всего пользователей в БД ($i) while (!feof($file)) { $lines=fgets($file); 
 
  if ($lines<>'') { $dt=explode("|", $lines); if ($dt[0]==$id_session) $klient='old'; //игнорируем устаревшие записи if ($dt[1]>$txtold) { $mas_sess[]=$dt[0]; $mass_id[]=$dt[1]; $mas_name[]=$dt[2]; } } } fclose($file);
 
  //если клиент новый добавляем его запись if ($klient<>'old') { $mas_sess[]=$id_session; $mass_id[]=$txttime; if ($wrfname=='') $wrfname='гость'; $mas_name[]=$wrfname; }
  //начинаем работать с файлом $i_mas=count($mas_sess); $fp = fopen ("del.dat","wt");//открытие flock ($fp,LOCK_EX);//БЛОКИРОВКА ФАЙЛА do {$i_mas--; // запись данных fputs($fp ,"$mas_sess[$i_mas]|$mass_id[$i_mas]|$mas_name[$i_mas]");//работа с файлом fflush ($fp);//ОЧИЩЕНИЕ ФАЙЛОВОГО БУФЕРА И ЗАПИСЬ В ФАЙЛ } while($i_mas>0); flock ($fp,LOCK_UN);//СНЯТИЕ БЛОКИРОВКИ fclose ($fp);//закрытие @chmod("del.dat", 0644);
  $ls=file("del.dat"); // считаем всех пользователей -- хто онлайн! $count=count($ls); echo "Всего поситителей на сайте: $count"; ?>  |     Артур, прикольно получилось!    |   |  
  |  
| Сообщение # 22 | 
20.09.06 - 20:44:42
 |    |   Maksir  •
 
 M Участник форума
  | 
Нет, скрипт нуждается в доработке. Есть ошибки в записи БД. Как-то беспорядочно всё записывает... Пропускает строки пустые  |   |  
  |  
| Сообщение # 23 | 
20.09.06 - 21:34:57
 |    |   Maksir  •
 
 M Участник форума
  | 
Вот, соченил код, который считает пользователей "хто онлайн"
    Код:  $us="1"; $file=fopen("session.dat","r"); $i=count($lines); flock ($fp,LOCK_EX); for ($us;$us<$count;$us++){} echo "Всего пользователей On-line: $count"; flock ($fp,LOCK_UN); fclose($fp);
  @chmod("del.dat", 0644);  |  
 
  Но, база всё равно падает... Сервак, после некоторго времени, выдаёт сессии совершенно беспорядочно... |   |  
  |  
| Сообщение # 24 | 
21.09.06 - 02:00:12
 |    |       
 |