| |
|
|
| | Я видел пример online регистрации пользователей этого форума. Он работает через SQL, а как это сделать через текстовые файлы? Мне нужно узнать кто сидить на сайте в данный момент. | |
| |
|
|
| |
|
|
| |
для: Roo$
(19.07.2006 в 17:17)
| | | http://softtime.ru/scripts/online.php
Структуру файла делаем похожую на структуру БД
А считываем данные не из бд а из файла: | |
| |
|
|
|
| |
|
|
| |
для: cheops
(19.07.2006 в 17:38)
| | | Я скатал от туда прекрепленный (вами же) пример. Это то что я искал. Но файл index.php ругается у меня на 39 строку.... if(!in_array($_SESSION['name'],$key))
У меня ведать нет сесий...? Что вы мне посоветуете? | |
| |
|
|
| |
|
|
| |
для: Roo$
(19.07.2006 в 17:49)
| | | ПРописать в начале скрипта session_start(); | |
| |
|
|
| |
|
|
| |
для: Roo$
(19.07.2006 в 17:49)
| | | Хотя вряд ли Хеопс это не записал за вас.
Что значит "сессий нет"?
Откройте phpinfo()
и посмотрите что стоит тут:
Session Support
В разделе сессий.
Или разрешите их в настройках пхп.ини или жалуйтесь хостеру что они вас обули
или переходите на куки. | |
| |
|
|
| |
|
|
| |
для: 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);
}
?> | |
| |
|
|
| |
|
|
| |
для: Roo$
(19.07.2006 в 18:01)
| | | Так ты же закоментировал строку с определением переменной а потом говоришь что пхп жалуется что нема такой переменной.
Разкоментируй $_SESSION['name'] = "cheops"; | |
| |
|
|
| |
|
|
| |
для: valenok
(19.07.2006 в 18:09)
| | | Ага, получается что все пользователи которые будут заходить, у них будет имя cheops | |
| |
|
|
| |
|
|
| |
для: Roo$
(19.07.2006 в 18:01)
| | | Дело в том, что этот скрипт, если мне память не изменяет, ориентирован на авторизацию пользователей, т.е. если пользователи авторизуются, он отображает кроме всего прочего их имена потом. | |
| |
|
|
| |
|
|
| |
для: cheops
(19.07.2006 в 18:13)
| | | А если я место SESSION['name'] ииспользую Cookie? Как тогда будет выглядить код программы? | |
| |
|
|
| |
|
|
| |
для: Roo$
(19.07.2006 в 17:49)
| | | Приведите точное сообщение об ошибке, как ругается? | |
| |
|
|
| |
|
|
| |
для: 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 | |
| |
|
|
| |
|
|
| |
для: 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);
?>
|
В качестве параметра, которой передать соответствующий уровень обработки ошибок. | |
| |
|
|
| |
|
|
| |
для: cheops
(19.07.2006 в 18:15)
| | | А как сделать что бы у каждого пользователя было свое имя? Нужно делать авторизацию? А как это сделать не используя SQL?
P.S. Только не говорите пожалуйсто что для новых вопросов надо заводить новые темы. | |
| |
|
|
| |
|
|
| |
для: Roo$
(19.07.2006 в 18:21)
| | | Вы найдёте файловую регистрацию и авторизацию в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8481. | |
| |
|
|
| |
|
|
| |
для: cheops
(19.07.2006 в 18:24)
| | | cheops, а как сделать в этом примере, что бы время тоже обнавлялось когда пользователь обнавляет страницу.... А здесь оно не обнавляется а просто удаляет пользователя после истечении 20 минут.. | |
| |
|
|
| |
|
|
| |
для: Roo$
(19.07.2006 в 20:47)
| | | На каждой обновляемой странице следует включить код с оператором UPDATE, который будет производить обновления в базе данных... а или погодите у нас тут файлы? | |
| |
|
|
| |
|
|
| |
для: cheops
(19.07.2006 в 22:43)
| | | А может удалять пользователя из файла и записывать его снова, уже с новым временем? | |
| |
|
|
| |
|
|
| |
для: Roo$
(19.07.2006 в 22:50)
| | | По другому и не выйдет. | |
| |
|
|
| |
|
|
| |
для: valenok
(20.07.2006 в 00:13)
| | | Помогите пожалуйсто мне сделать такую проверочку.... Код программы указан выше.... | |
| |
|
|
| |
|
|
| |
для: 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);
|
| |
| |
|
|
| |
|
|
| |
для: valenok
(20.07.2006 в 10:21)
| | | valenok.... Большое спасибо за код.... Только у меня он что то не то показывает. Вот тот файл который я скатал с вашего форума. Посмотри и измени мне его как надо. Пожалуйсто помоги мне, если тебе не трудно... | |
| |
|
|
| |
|
|
| |
для: Roo$
(20.07.2006 в 11:51)
| | | Просто инклудь на всех страницах index.php
и всё. | |
| |
|
|
| |
|
|
| |
для: valenok
(20.07.2006 в 10:21)
| | | Каким образом время будет обновлятся? | |
| |
|
|
| |
|
|
| |
для: Roo$
(20.07.2006 в 12:52)
| | | А, все разобрался я.
Всем огромное спасибо за помощь!!!! | |
| |
|
|