счётчик посещений онлайн

  • Автор темы AlexZ-Хомячок
  • Дата начала

AlexZ-Хомячок

Guest
борохлит счётчик посещений в онлайн, помагите пожалуйста, пж!!!

:rolleyes: правдо не могу понять почему эта ошибка появляется може из-за php.ini? а может тег неправильно написан???
php скрипт
PHP:
<?php

        $data="online.dat";
        $time=time();
        $past_time=time()-1;

        $readdata=fopen($data,"r") or die("Не могу открыть файл $data");
        $data_array=file($data);
        fclose($readdata);

        if (getenv('HTTP_X_FORWARDED_FOR'))
               $user = getenv('HTTP_X_FORWARDED_FOR');
        else
             $user = getenv('REMOTE_ADDR');

        $d=count($data_array);
        for($i=0;$i<$d;$i++)
                {
               list($live_user,$last_time)=explode("::","$data_array[$i]");
               if($live_user!=""&&$last_time!=""):
               if($last_time<$past_time):
                        $live_user="";
                        $last_time="";
                endif;
                if($live_user!=""&&$last_time!="")
                        {
                        if($user==$live_user)
                                {
                                $online_array[]="$user::$time\r\n";
                                }
                        else
                                $online_array[]="$live_user::$last_time";
                        }
                endif;
                }

        if(isset($online_array)):
        foreach($online_array as $i=>$str)
                {
                if($str=="$user::$time\r\n")
                        {
                        $ok=$i;
                        break;
                        }
                }
        foreach($online_array as $j=>$str)
                {
                if($ok==$j) { $online_array[$ok]="$user::$time\r\n"; break;}
                }
       endif;

        $writedata=fopen($data,"w") or die("Не могу открыть файл $data");
        flock($writedata,2);
        if($online_array=="") $online_array[]="$user::$time\r\n";
        foreach($online_array as $str)
                fputs($writedata,"$str");
        flock($writedata,3);
        fclose($writedata);

        $readdata=fopen($data,"r") or die("Не могу открыть файл $data");
        $data_array=file($data);
        fclose($readdata);
        $online=count($data_array);
        
        echo "document.write('Сейчас : $online');";
?>
php версия 4.3.8
апаче 1.3.32

ошибку выдаёт = Notice: Undefined variable: online_array in d:\server\www\1\online.php on line 68

а если выводить <script language="JavaScript" src="online.php"></script>
----
помагите пожалуйста
 

ForJest

- свежая кровь
Знаешь - в твоём скрипте всего 66 строчек. Вряд ли кто-то сможет тебе помочь....
 

AlexZ-Хомячок

Guest
ForJest
вообщем это не мой скрипт, это расправстранённый скрипт онлайн, ну хоть кто нибудь поможет?
 

AlexZ-Хомячок

Guest
он показывает 0 постоянно, проверял даже на другом компе всёровно ноль!
Nirva
я это просто уже пытался сделать!
 

alpine

Новичок
PHP:
<?php
    if(isset($online_array))
// ошибку выдаёт = Notice: Undefined variable: online_array in d:\server\www\1\online.php on line 68
   
?>
[m]empty[/m]

-~{}~ 17.10.04 20:35:

PHP:
    echo "document.write('Сейчас : $online');";
<script language="JavaScript" src="online.php"></script>
правильнее будет так
PHP:
    echo 'Сейчас : ' . $online;
<script language="php" src="online.php"></script>
 

AlexZ-Хомячок

Guest
alpine
тоесть что ты хочешь сказть, что мне чтото надо добавить, ну я изменил только так всё и осталось,
Notice: Undefined variable: online_array in d:\server\www\1\online.php on line 67
--------
я изменил if(isset.... на if(empty....
и поивилось вот это
Warning: Invalid argument supplied for foreach() in d:\server\www\1\online.php on line 51
Warning: Invalid argument supplied for foreach() in d:\server\www\1\online.php on line 59
 

alpine

Новичок
AlexZ-Хомячок
RTFM [m]foreach[/m]
PHP 4 (not PHP 3) includes a foreach construct, much like Perl and some other languages. This simply gives an easy way to iterate over arrays. foreach works only on arrays, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable.
Это из мануала. Здесь написано, что foreach работает только с массивами, во всех остальных случаях он генерит ошибку.
Поэтому тебе нужно перед входом в foreach проверять переменную функцией [m]empty[/m].
И так
PHP:
if($online_array=="")
переменные не проверяют, здесь тоже необходимо использовать [m]empty[/m].
К твоему сожалению тебе придется разобраться в этом куске кода.

-~{}~ 18.10.04 00:41:

Если же у тебя в переменной
PHP:
$online_array
может быть все что угодно тогда проверяй
PHP:
if (@is_array($online_array))
так.
 

AlexZ-Хомячок

Guest
PHP:
        if(empty($online_array)):
        foreach($online_array as $i=>$str)
                {
                if($str=="$user::$time\r\n")
                        {
                        $ok=$i;
                        break;
                        }
                }
        foreach($online_array as $j=>$str)
                {
                if($ok==$j) { $online_array[$ok]="$user::$time\r\n"; break;}
                }
       endif;

        $writedata=fopen($data,"w") or die("Не могу открыть файл $data");
        flock($writedata,2);
        if (@is_array($online_array)) $online_array[]="$user::$time\r\n";
тепрь я изменил if($online_array=="") = if (@is_array($online_array)) как ты сказал, итоги такие показывает 0 и две ошибки!?
 

Nirva

Dmitry Polyakov
ошибки в студию. а еще лучше возьми счетчик поновее, если сам написать не в силах.
 

AlexZ-Хомячок

Guest
Nirva
ну nulf я надеюсь ты мне поможешь и дашь щёчик по новее)))

-~{}~ 22.10.04 19:50:

помагитете!!!!!!!!!!!!!
 
Сверху