Страница 1 из 2

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

Добавлено: 14 янв 2011, 20:13
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 и посмотреть кто зашёл)

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

Добавлено: 14 янв 2011, 21:33
Deniska
Уже 90% используют MySQL. По-моему текстовые файлы уже не актуальны.

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

Добавлено: 14 янв 2011, 22:04
Александр
ukhov
А какой смысл разделять код внутри такими вставками?

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

?> <?php

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

Добавлено: 15 янв 2011, 15:31
ukhov
Александр
мне так удобнее

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

Добавлено: 15 янв 2011, 16:40
Noise Gate
Deniska писал(а):Уже 90% используют MySQL. По-моему текстовые файлы уже не актуальны.
Иногда хочется получить очень специфическую статистику, которую нельзя отследить при помощи базы (вернее можно, но база будет просто гигантской, что отразится на работе всего приложения). В таких случаях намного удобнее вести подробные логи, а потом обрабатывать их отдельно.

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

Добавлено: 15 янв 2011, 16:45
ceed
Спасибо, все работает отлично!

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

Добавлено: 18 янв 2011, 16:27
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);  }}?>   

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

Добавлено: 22 янв 2011, 12:49
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); }}?>
Просто забыли закрыть скобки)

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

Добавлено: 28 янв 2011, 18:54
ukhov
ап :D

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

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