Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Online
 
 автор: Roo$   (19.07.2006 в 17:17)   письмо автору
 
 

Я видел пример online регистрации пользователей этого форума. Он работает через SQL, а как это сделать через текстовые файлы? Мне нужно узнать кто сидить на сайте в данный момент.

   
 
 автор: valenok   (19.07.2006 в 17:25)   письмо автору
 
   для: Roo$   (19.07.2006 в 17:17)
 

http://softtime.ru/scripts/online.php
Структуру файла делаем похожую на структуру БД
А считываем данные не из бд а из файла:

   
 
 автор: cheops   (19.07.2006 в 17:38)   письмо автору
 
   для: Roo$   (19.07.2006 в 17:17)
 

Возможно вас заинтересует тема по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=10772

   
 
 автор: Roo$   (19.07.2006 в 17:49)   письмо автору
 
   для: cheops   (19.07.2006 в 17:38)
 

Я скатал от туда прекрепленный (вами же) пример. Это то что я искал. Но файл index.php ругается у меня на 39 строку.... if(!in_array($_SESSION['name'],$key))

У меня ведать нет сесий...? Что вы мне посоветуете?

   
 
 автор: valenok   (19.07.2006 в 17:53)   письмо автору
 
   для: Roo$   (19.07.2006 в 17:49)
 

ПРописать в начале скрипта session_start();

   
 
 автор: valenok   (19.07.2006 в 17:55)   письмо автору
 
   для: Roo$   (19.07.2006 в 17:49)
 

Хотя вряд ли Хеопс это не записал за вас.
Что значит "сессий нет"?

Откройте phpinfo()
и посмотрите что стоит тут:
Session Support
В разделе сессий.
Или разрешите их в настройках пхп.ини или жалуйтесь хостеру что они вас обули
или переходите на куки.

   
 
 автор: Roo$   (19.07.2006 в 18:01)   письмо автору
 
   для: valenok   (19.07.2006 в 17:55)
 

Вот полностью код;

<?php

session_start();

$filename = "text.txt";

$arr = array();
$key = array();


// $_SESSION['name'] = "cheops";


$content = file_get_contents($filename);

if(!empty($content))
{
$arr = unserialize($content);

foreach($arr as $key => $line)
{
if(time() - $line['putdate'] > 20*60)
{
unset($arr[$key]);
}
}
}

$key = array_keys($arr);

if(!in_array($_SESSION['name'],$key))
{

$arr[$_SESSION['name']]['ip'] = $_SERVER['REMOTE_ADDR'];
$arr[$_SESSION['name']]['putdate'] = time();

$ser = serialize($arr);

$fd = fopen($filename,"w");
fwrite($fd,$ser);
fclose($fd);
}
?>

   
 
 автор: valenok   (19.07.2006 в 18:09)   письмо автору
 
   для: Roo$   (19.07.2006 в 18:01)
 

Так ты же закоментировал строку с определением переменной а потом говоришь что пхп жалуется что нема такой переменной.
Разкоментируй $_SESSION['name'] = "cheops";

   
 
 автор: Roo$   (19.07.2006 в 18:13)   письмо автору
 
   для: valenok   (19.07.2006 в 18:09)
 

Ага, получается что все пользователи которые будут заходить, у них будет имя cheops

   
 
 автор: cheops   (19.07.2006 в 18:13)   письмо автору
 
   для: Roo$   (19.07.2006 в 18:01)
 

Дело в том, что этот скрипт, если мне память не изменяет, ориентирован на авторизацию пользователей, т.е. если пользователи авторизуются, он отображает кроме всего прочего их имена потом.

   
 
 автор: Roo$   (19.07.2006 в 18:42)   письмо автору
 
   для: cheops   (19.07.2006 в 18:13)
 

А если я место SESSION['name'] ииспользую Cookie? Как тогда будет выглядить код программы?

   
 
 автор: cheops   (19.07.2006 в 18:06)   письмо автору
 
   для: Roo$   (19.07.2006 в 17:49)
 

Приведите точное сообщение об ошибке, как ругается?

   
 
 автор: Roo$   (19.07.2006 в 18:10)   письмо автору
 
   для: cheops   (19.07.2006 в 18:06)
 

Notice: Undefined index: name in c:\inetpub\wwwroot\livemen\index.php on line 39

Notice: Undefined index: name in c:\inetpub\wwwroot\livemen\index.php on line 43

Notice: Undefined index: name in c:\inetpub\wwwroot\livemen\index.php on line 44

   
 
 автор: cheops   (19.07.2006 в 18:15)   письмо автору
 
   для: Roo$   (19.07.2006 в 18:10)
 

Notice является своеобразным советом и выводится, когда выставлена максимальная чувствительность PHP к ошибкам - её следует понизить, как это сделано на всех хостингах, иначе они не дадут работать. Для этого, следует выставить соответствующее значение для директивы error_reporting http://www.softtime.ru/info/articlephp.php?id_article=23, в конфигурационном файле php.ini
error_reporting = E_ALL & ~E_NOTICE  

Так же можно изменить уровень обработки ошибок локально, для этого в начало скрипта следует поместить функцию
<?php 
Error_Reporting
(E_ALL & ~E_NOTICE); 
?>

В качестве параметра, которой передать соответствующий уровень обработки ошибок.

   
 
 автор: Roo$   (19.07.2006 в 18:21)   письмо автору
 
   для: cheops   (19.07.2006 в 18:15)
 

А как сделать что бы у каждого пользователя было свое имя? Нужно делать авторизацию? А как это сделать не используя SQL?

P.S. Только не говорите пожалуйсто что для новых вопросов надо заводить новые темы.

   
 
 автор: cheops   (19.07.2006 в 18:24)   письмо автору
 
   для: Roo$   (19.07.2006 в 18:21)
 

Вы найдёте файловую регистрацию и авторизацию в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8481.

   
 
 автор: Roo$   (19.07.2006 в 20:47)   письмо автору
 
   для: cheops   (19.07.2006 в 18:24)
 

cheops, а как сделать в этом примере, что бы время тоже обнавлялось когда пользователь обнавляет страницу.... А здесь оно не обнавляется а просто удаляет пользователя после истечении 20 минут..

   
 
 автор: cheops   (19.07.2006 в 22:43)   письмо автору
 
   для: Roo$   (19.07.2006 в 20:47)
 

На каждой обновляемой странице следует включить код с оператором UPDATE, который будет производить обновления в базе данных... а или погодите у нас тут файлы?

   
 
 автор: Roo$   (19.07.2006 в 22:50)   письмо автору
 
   для: cheops   (19.07.2006 в 22:43)
 

А может удалять пользователя из файла и записывать его снова, уже с новым временем?

   
 
 автор: valenok   (20.07.2006 в 00:13)   письмо автору
 
   для: Roo$   (19.07.2006 в 22:50)
 

По другому и не выйдет.

   
 
 автор: Roo$   (20.07.2006 в 00:19)   письмо автору
 
   для: valenok   (20.07.2006 в 00:13)
 

Помогите пожалуйсто мне сделать такую проверочку.... Код программы указан выше....

   
 
 автор: valenok   (20.07.2006 в 10:21)   письмо автору
 
   для: Roo$   (20.07.2006 в 00:19)
 


<?
# $file=file('users.txt');
$file= Array("Sasha::pass::abc@yandex.ru::11324566745","xxx::pass2::xxx@yandex.ru::11564522741");
// Это пример.. Ник:: пароль:: мыло:: время он лайн

for($i=0;$i<count($file);$i++){
    
$data=explode("::",$file[$i]);
    if(
$data[0]==$user_name){ // $user_name имя пользователя.
        
$file[$i]=$data[0]."::".$data[1]."::".$data[2]."::".time();
        continue;
    }
}

$str=implode("\r\n",$file);
$file fopen('users.txt',"w+");
if(!
$file){die('File error');}
fputs($file,$str);
fclose($file);

        

   
 
 автор: Roo$   (20.07.2006 в 11:51)   письмо автору
 
   для: valenok   (20.07.2006 в 10:21)
 

valenok.... Большое спасибо за код.... Только у меня он что то не то показывает. Вот тот файл который я скатал с вашего форума. Посмотри и измени мне его как надо. Пожалуйсто помоги мне, если тебе не трудно...

   
 
 автор: valenok   (20.07.2006 в 12:05)   письмо автору
 
   для: Roo$   (20.07.2006 в 11:51)
 

Просто инклудь на всех страницах index.php
и всё.

   
 
 автор: Roo$   (20.07.2006 в 12:52)   письмо автору
 
   для: valenok   (20.07.2006 в 10:21)
 

Каким образом время будет обновлятся?

   
 
 автор: Roo$   (20.07.2006 в 13:40)   письмо автору
 
   для: Roo$   (20.07.2006 в 12:52)
 

А, все разобрался я.
Всем огромное спасибо за помощь!!!!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования