Бесплатные PHP скрипты - форум техподдержки

Бесплатные PHP скрипты - форум техподдержки

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

Главная сайта бесплатных php скриптовГлавная сайта   ПоискПоиск  
Сегодня: 10.12.2024 - 07:46:50
Страницы:  1  2  3  4  ... 6

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("&#124;",$ls[$i]); // после знака "&#124;" будет найденно искомое
}
if ($add==0)
{
for ($stk;$stk<$count;$stk++)
{
if ($dt[$stk][1]==$txtdat."n") {$yes=1;}
}
}
if ($yes==0)
{
fwrite($fp,$datas.":".$timedel."&#124;".$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("&#124;", $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]&#124;$mass_id[$i_mas]&#124;$mas_name[$i_mas]&#124;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("&#124;", $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]&#124;$mass_id[$i_mas]&#124;$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
HackPack :Предыдущая темаСледующая тема: Какие моды вы бы хотели видеть?
Страницы:  1  2  3  4  ... 6

Сообщение
Имя E-mail
Сообщение

Нажмите на точку возле имени для обращения к участнику

Смайлы:

Ещё смайлы
Эмодзи
         
Защитный код: (введите цифры, которые на синем фоне)
Ответ на вопрос: (Какой сейчас год?)
   
WR-Счётчик
Powered by WR-Forum Professional © 2.3 UTF-8 beta версия