|
Бесплатные PHP скрипты - форум техподдержки |
Форум техподдержки WR-Скриптов на php. Обсуждаем: основы программирования на PHP 5 - 7 версий, различные подходы к написанию скриптов на php 7 без MySQL. А также WR-скрипты: бесплатные доски объявлений, скрипты форумов, Гостевые книги, Каталог ссылок, Галерея, Фотоальбом, Счётчики, Рассылки, Анекдот и другие. Принимаются пожелания для новых версий. Сообщите какой скрипт нужен для Вашего сайта, постараемся найти или реализовать. Скачать скрипты можно бесплатно. Вместе мы сделаем бесплатные php скрипты лучше и доступнее!
|
| Сегодня: 10.12.2024 - 07:46:50 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
| |
|