Запись отчёта о посещении приложения

Готовые уроки IFrame + ВКонтакте API
Аватара пользователя
ukhov
Модератор
Модератор
Сообщения: 1343
Зарегистрирован: 04 янв 2011, 21:19

Запись отчёта о посещении приложения

Сообщение ukhov »

Данный код записывает отчёт о посещении пользователем вашего приложения в файл txt. А именно: дату, время и id зашедшего.
1) Создайте файл baza.txt в корневом каталоге
2) Создайте файл index.php и запишите в него код:

Код: Выделить всё

<?php// вычисляем дату и время$date = date("d.m.y"); // вычисляем двту в формате "День, месяц, год"$dn = date("l");?> <?php$hourdiff = "0"; // hours difference between server time and local time$timeadjust = ($hourdiff * 60 * 60);$melbdate = date(" H:i",time() + $timeadjust);?> <?if(isset($_GET['viewer_id'])) {$id = $_GET['viewer_id'];   $fp=fopen("baza.txt","a+"); //Открытие дескриптора файла пользователя на запись  if ($fp) {  flock($fp,2);  fwrite($fp,"Date: $date$melbdate | id: $id");  flock($fp,3);  fclose($fp);  }}?>
Теперь Вы можете открыть файл baza.txt и посмотреть кто зашёл)
Аватара пользователя
Deniska
Сообщения: 653
Зарегистрирован: 30 окт 2009, 00:07

Re: Запись отчёта о посещении приложения

Сообщение Deniska »

Уже 90% используют MySQL. По-моему текстовые файлы уже не актуальны.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Запись отчёта о посещении приложения

Сообщение Александр »

ukhov
А какой смысл разделять код внутри такими вставками?

Код: Выделить всё

?> <?php
Аватара пользователя
ukhov
Модератор
Модератор
Сообщения: 1343
Зарегистрирован: 04 янв 2011, 21:19

Re: Запись отчёта о посещении приложения

Сообщение ukhov »

Александр
мне так удобнее
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34

Re: Запись отчёта о посещении приложения

Сообщение Noise Gate »

Deniska писал(а):Уже 90% используют MySQL. По-моему текстовые файлы уже не актуальны.
Иногда хочется получить очень специфическую статистику, которую нельзя отследить при помощи базы (вернее можно, но база будет просто гигантской, что отразится на работе всего приложения). В таких случаях намного удобнее вести подробные логи, а потом обрабатывать их отдельно.
ceed
Сообщения: 13
Зарегистрирован: 24 авг 2010, 09:38

Re: Запись отчёта о посещении приложения

Сообщение ceed »

Спасибо, все работает отлично!
Аватара пользователя
ukhov
Модератор
Модератор
Сообщения: 1343
Зарегистрирован: 04 янв 2011, 21:19

Re: Запись отчёта о посещении приложения

Сообщение ukhov »

а вообще можно намного красивее всё это записать. только не в txt, а в php:
Туда будут записываться все действия, которые происходили в приложении.
1) Создаём файл log.php с таким содержанием:

Код: Выделить всё

<table style="width: 100%; border-collapse: collapse"><tbody><tr><td style="width: 125px; background-color: #4682b4; letter-spacing: 0px; word-spacing: 0px"><strong><font color="#ffffff">Дата, время</font></strong><strong><font color="#ffffff"><br></font></strong></td><td style="width: 125px; background-color: #4682b4; letter-spacing: 0px; word-spacing: 0px"><strong><font color="#ffffff">IP адрес</font></strong><strong><font color="#ffffff"><br></font></strong></td><td style="background-color: #4682b4; letter-spacing: 0px; word-spacing: 0px"><strong><font color="#ffffff">Действие</font></strong><br></td></tr>
2) Добавляем в index.php код:

Код: Выделить всё

<?$ip=$_SERVER['REMOTE_ADDR']?>
3) Заменяем в index.php этот код:

Код: Выделить всё

<?if(isset($_GET['viewer_id'])) {$id = $_GET['viewer_id'];   $fp=fopen("baza.txt","a+"); //Открытие дескриптора файла пользователя на запись  if ($fp) {  flock($fp,2);  fwrite($fp,"Date: $date$melbdate | id: $id");  flock($fp,3);  fclose($fp);  }}?>
на этот:

Код: Выделить всё

<?if(isset($_GET['viewer_id'])) {$id = $_GET['viewer_id'];   $fp=fopen("log.php","a+"); //Открытие дескриптора файла пользователя на запись  if ($fp) {  flock($fp,2);  fwrite($fp,"<tr><td>$date$melbdate<br></td><td>$ip<br></td><td>Пользователь <b>$id</b> посетил <b>index.php</b> (главная страница)<br></td></tr>);  flock($fp,3);  fclose($fp);  }}?>   
Теперь когда пользователь зайдёт на глайную страницу (index.php), в таблицу добавиться дата, время входа, ip и id пользователя.

Но если Вы хотите записывать туда не только заход в приложение пользователем, но и дальнейшие переходы по страницам, то к каждой ссылке на странице добавьте код, который передаст GET от Вконтакте другой странице:

Код: Выделить всё

?api_url=<?phpecho ($_GET["api_url"]."");?>&api_id=<?phpecho ($_GET["api_id"]."");?>&api_settings=<?phpecho ($_GET["api_settings"]."");?>&viewer_id=<?phpecho ($_GET["viewer_id"]."");?>&viewer_type=<?phpecho ($_GET["viewer_type"]."");?>&sid=<?phpecho ($_GET["sid"]."");?>&user_id=<?phpecho ($_GET["user_id"]."");?>&group_id=<?phpecho ($_GET["group_id"]."");?>&is_app_user=<?phpecho ($_GET["is_app_user"]."");?>&auth_key=<?phpecho ($_GET["auth_key"]."");?>
Повторяю, что это позволит отслеживать дальнейшие действия пользователя. Например, в index.php содержится ссылка на 2.php, т.е.:

Код: Выделить всё

<a href="2.php">Перейти на 2.php</a>
Теперь к ней надо добавить код передачи GET на другую страницу. Получится:

Код: Выделить всё

<a href="2.php?api_url=<?phpecho ($_GET["api_url"]."");?>&api_id=<?phpecho ($_GET["api_id"]."");?>&api_settings=<?phpecho ($_GET["api_settings"]."");?>&viewer_id=<?phpecho ($_GET["viewer_id"]."");?>&viewer_type=<?phpecho ($_GET["viewer_type"]."");?>&sid=<?phpecho ($_GET["sid"]."");?>&user_id=<?phpecho ($_GET["user_id"]."");?>&group_id=<?phpecho ($_GET["group_id"]."");?>&is_app_user=<?phpecho ($_GET["is_app_user"]."");?>&auth_key=<?phpecho ($_GET["auth_key"]."");?>">Перейти на 2.php</a>
И теперь в 2.php пишем код:

Код: Выделить всё

 <?php// вычисляем дату и время$date = date("d.m.y"); // вычисляем двту в формате "День, месяц, год"$dn = date("l");?> <?php$hourdiff = "0"; // hours difference between server time and local time$timeadjust = ($hourdiff * 60 * 60);$melbdate = date(" H:i",time() + $timeadjust);?> <?$ip=$_SERVER['REMOTE_ADDR'] // Получаем IP пользователя?> <?if(isset($_GET['viewer_id'])) {$id = $_GET['viewer_id'];   $fp=fopen("log.php","a+"); //Открытие дескриптора файла пользователя на запись  if ($fp) {  flock($fp,2);  fwrite($fp,"<tr><td>$date$melbdate<br></td><td>$ip<br></td><td>Пользователь <b>$id</b> посетил <b>2.php</b> (страница 2)<br></td></tr>);  flock($fp,3);  fclose($fp);  }}?>   
Аватара пользователя
Pavlo0a
Сообщения: 26
Зарегистрирован: 08 авг 2010, 18:25

Re: Запись отчёта о посещении приложения

Сообщение Pavlo0a »

Вы сделал маленькую ошибку в коде.
Вот так правильно

Код: Выделить всё

<?if(isset($_GET['viewer_id'])) {$id = $_GET['viewer_id'];   $fp=fopen("log.php","a+"); //Открытие дескриптора файла пользователя на запись  if ($fp) {  flock($fp,2);  fwrite($fp,"<tr><td>$date$melbdate<br></td><td>$ip<br></td><td>Пользователь <b>$id</b> посетил <b>index.php</b> (главная страница)<br></td></tr>"); flock($fp,3); fclose($fp); }}?>
Просто забыли закрыть скобки)
Аватара пользователя
ukhov
Модератор
Модератор
Сообщения: 1343
Зарегистрирован: 04 янв 2011, 21:19

Re: Запись отчёта о посещении приложения

Сообщение ukhov »

ап :D
Аватара пользователя
Deniska
Сообщения: 653
Зарегистрирован: 30 окт 2009, 00:07

Re: Запись отчёта о посещении приложения

Сообщение Deniska »

ukhov писал(а):ап :D
Зачем опять апаешь? Это же раздел уроки и тут ты задал не вопрос. Твой урок не убежит никуда, кому надо тот найдёт.
Ответить