#1 2010.08.07 12:29

@Office
Участник
Откуда: Лесосибирск/Красноярский край
Зарегистрирован: 2010.02.17
Сообщений: 38
Карма: 0
Профиль

OnLine

Вобщем не могу понять, куда сувануть $_SERVER['REQUEST_URI'], чо-оп обновлялся при переходе на другую страницу : )
Вот код :

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
$data dirname(__FILE__) . '/online.dat';
 
$file file($data);
 
if (getenv('HTTP_X_FORWARDED_FOR')) {
  $ip getenv('HTTP_X_FORWARDED_FOR');
} else {
  $ip getenv('REMOTE_ADDR');
}
 
$ua getenv('HTTP_USER_AGENT');
 
for($i 0$i count($file); $i++) {
 
  list($agent$user$last) = explode('::'$file[$i]);
 
  if (!empty($user) && !empty($last) && !empty($agent)) {
  
    if($last time 180) {
      $user null;
      $last null;
      $agent null;
    }
    
    if(!empty($user) && !empty($last) && !empty($agent)) {
    
      if($ip == $user && $ua == $agent) {
        $online_array[] = $ua.'::'.$ip.'::'.time()."\r\n";
      } else {
        $online_array[] = $agent.'::'.$user.'::'.$last;
      }
 
    }
  }
}
 
if(isset($online_array)) {
  foreach($online_array as $i => $str) {
    if($str == $ua.'::'.$ip.'::'.time()."\r\n") {
      $ok $i; break;
    }
  }
  
  foreach($online_array as $j => $str) {
    if($ok == $j) {
      $online_array[$ok] = $ua.'::'.$ip.'::'.time()."\r\n"; break;
    }
  }
}
 
$open fopen($data'w') or exit('Не могу открыть файл '.basename($data));
flock($open2);
 
if(empty($online_array)) {
  $online_array[] = $ua.'::'.$ip.'::'.time()."\r\n";
}
 
foreach($online_array as $str) {
  fputs($open$str);
}
 
flock($open3);
fclose($open);
 
echo count($file);
?>

Помогите засунуть его в нужное место. Мне нужно записывать, где сейчас находится чел  tongue
Добавлено спустя   1 минуту  56 секунд:
И еще, если можно. Замутите что-бы записывало кол-во переходов юзера : )


tongue

Неактивен

#2 2010.08.07 15:49

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: OnLine

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

Неактивен

#3 2010.08.07 17:20

@Office
Участник
Откуда: Лесосибирск/Красноярский край
Зарегистрирован: 2010.02.17
Сообщений: 38
Карма: 0
Профиль

Re: OnLine

Щас напишу тогда на mysql ^^ попробую oop заюзать :-d


tongue

Неактивен

#4 2010.08.07 17:21

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: OnLine

Gemorroj, как вариант, ':' -> '[амперсанд]#58;'

Отредактировано Morgan (2010.08.07 17:22)


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#5 2010.08.07 17:25

@Office
Участник
Откуда: Лесосибирск/Красноярский край
Зарегистрирован: 2010.02.17
Сообщений: 38
Карма: 0
Профиль

Re: OnLine

Так лучше?

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
class MySQL {
 
    private $_link;
 
    public function connect ($host$user$pass$db) {
        $this->_link mysql_connect($host$user$pass) or die('Немогу подключиться к серверу!');
        mysql_select_db($db$this->_link) or die('Немогу подключиться к базе данных');
        mysql_unbuffered_query('SET NAMES `utf8`'$this->_link);
    }
 
    public function query ($sql) {
        return mysql_query($sql$this->_link);
    }
  
  public function result ($sql$value 0) {
    return mysql_result($sql$this->_link$value);
  }
 
  public function escape ($str) {
        return mysql_real_escape_string(trim($str));
    }
  
  public function utf ($str) {
    return htmlspecialchars($strENT_QUOTES);
  }
  
}
 
$sql = new MySQL;
 
$sql->connect('localhost''root''''setew');
 
if(isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'])) {
  $ua $sql->utf($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']);
} else {
  $ua $sql->utf($_SERVER['HTTP_USER_AGENT']);
}
 
$ip $sql->utf($_SERVER['REMOTE_ADDR']);
 
if (mysql_num_rows($sql->query("select (`id`) from `online` where `ip`='".$sql->escape($ip)."' and `ua`='".$sql->escape($ua)."' limit 1"))) {
  $sql->query("update `online` set `time`='".time()."', `where`='".$sql->escape($_SERVER['REQUEST_URI'])."', `count`=`count`+'1' where `ip`='".$sql->escape($ip)."' and `ua`='".$sql->escape($ua)."' limit 1");
} else {
  $sql->query("insert into `online` set `time`='".time()."', `where`='".$sql->escape($_SERVER['REQUEST_URI'])."', `ip`='".$sql->escape($ip)."', `ua`='".$sql->utf($ua)."', `count`='1'");
}
 
?>

Добавлено спустя   1 минуту :
Иль что - то нужно еще добавить ? smile


tongue

Неактивен

#6 2010.08.07 17:43

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: OnLine

sql injection, несоблюдение стандартов кодирования...
  public function utf ($str) {
    return htmlspecialchars($str, ENT_QUOTES);
  }
это совершенно ни к чему
mysql_result($sql, $this->_link, $value);
это не корректно
return mysql_real_escape_string(trim($str));
почему не используется ресурс соединения с БД?

Неактивен

#7 2010.08.07 17:54

@Office
Участник
Откуда: Лесосибирск/Красноярский край
Зарегистрирован: 2010.02.17
Сообщений: 38
Карма: 0
Профиль

Re: OnLine

Я уже все переделал smile

public function utf ($str) {
    return htmlspecialchars($str, ENT_QUOTES);
  }
Это плохо разве? О_О а как еще фильтровать при выводе?

Отредактировано @Office (2010.08.07 17:55)


tongue

Неактивен

#8 2010.08.07 17:58

@Office
Участник
Откуда: Лесосибирск/Красноярский край
Зарегистрирован: 2010.02.17
Сообщений: 38
Карма: 0
Профиль

Re: OnLine

Мля я грю уже сделал все smile щас покажу как сделал smile


Вложения

Отредактировано @Office (2010.08.07 17:59)


tongue

Неактивен

#9 2010.08.07 18:35

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: OnLine

tipsun написал:

Не обязательно от файлового хранения отказываться...

Обязательно. Этот говнокод потом в могилу весь код потянет.
И никто-ничего тут не усложняет, кот элементарен до безобразия.
Добавлено спустя   1 минуту  15 секунд:
@Office, все равно, код не корректен.

Неактивен

#10 2010.08.07 18:40

@Office
Участник
Откуда: Лесосибирск/Красноярский край
Зарегистрирован: 2010.02.17
Сообщений: 38
Карма: 0
Профиль

Re: OnLine

Что именно там не корректо? Помоги сдлать корректнее smile


tongue

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.011 s