Вы не зашли.
Главная » PHP » OnLine
#1. @Office Off (0)
Участник
2010.08.07 12:12
Вобщем не могу понять, куда сувануть $_SERVER['REQUEST_URI'], чо-оп обновлялся при переходе на другую страницу : )
Вот код :
Код:
span style="color: #0000BB"><?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($open, 2);if(empty($online_array)) { $online_array[] = $ua.'::'.$ip.'::'.time()."\r\n";}foreach($online_array as $str) { fputs($open, $str);}flock($open, 3);fclose($open);echo count($file);?>
Помогите засунуть его в нужное место. Мне нужно записывать, где сейчас находится чел  tongue
Добавлено спустя   1 минуту  56 секунд:
И еще, если можно. Замутите что-бы записывало кол-во переходов юзера : )
tongue
#2. Gemorroj Off (107)
Administrator
2010.08.07 15:03
для начала откажись от хранения данных в файле. передам я юзерагент с символами :: и нарушу тебе структуру, что делать тогда будешь?
#3. @Office Off (0)
Участник
2010.08.07 17:05
Щас напишу тогда на mysql ^^ попробую oop заюзать :-d
tongue
#4. Morgan Off (10)
Участник
2010.08.07 17:05
Gemorroj, как вариант, ':' -> '[амперсанд]#58;'
Отредактировано Morgan (2010.08.07 17:05)
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#5. @Office Off (0)
Участник
2010.08.07 17:05
Так лучше?
Код:
span style="color: #0000BB"><?phpclass 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($str, ENT_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. Gemorroj Off (107)
Administrator
2010.08.07 17:05
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. @Office Off (0)
Участник
2010.08.07 17:05
Я уже все переделал smile

public function utf ($str) {
    return htmlspecialchars($str, ENT_QUOTES);
  }
Это плохо разве? О_О а как еще фильтровать при выводе?
Отредактировано @Office (2010.08.07 17:05)
tongue
#8. @Office Off (0)
Участник
2010.08.07 17:05
Мля я грю уже сделал все smile щас покажу как сделал smile
Вложения
online.zip 2kb [загрузок: 601]
Отредактировано @Office (2010.08.07 17:05)
tongue
#9. Gemorroj Off (107)
Administrator
2010.08.07 18:06
tipsun написал:
Не обязательно от файлового хранения отказываться...
Обязательно. Этот говнокод потом в могилу весь код потянет.
И никто-ничего тут не усложняет, кот элементарен до безобразия.
Добавлено спустя   1 минуту  15 секунд:
@Office, все равно, код не корректен.
#10. @Office Off (0)
Участник
2010.08.07 18:06
Что именно там не корректо? Помоги сдлать корректнее smile
tongue
Страниц: 1 2 3 Все
Главная
WEB
PunBB Mod v0.6.2
0.021 s