[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: статиcтика без MySQL
Floopy
Люди хелп проблема в следущем мне нужен ПхП скрипт -
Вобщем люди заходят на index.php я беру инфу браузер,рефер,ос и т.д. и заношу в переменные допустим $browser; $os; $referer.
Мне нужно эти данные записывать в файл stata.txt
А потом уже заходя на admin.php доставать эти данные и читать притом таким образом например:
Что бы $browser содержал:
Opera : 3
Internet Explorer: 5
FireFox: 20
А там $os содержал:
Windows XP: 7
Windows 98: 15

Умоляю я в отчаинний помогите ... Начал рыться в яндексе еще больше запутался по этому вопросу )



Спустя 1 час, 25 минут, 19 секунд (15.03.2008 - 22:13) disc написал(а):
лучше отказаться от идеи работы файлов и работать с базой данных. Как работать в БД инфы в нете полно.

Спустя 44 минуты, 7 секунд (15.03.2008 - 22:57) Floopy написал(а):
Цитата(disc @ 15.3.2008, 19:13) [snapback]35100[/snapback]
лучше отказаться от идеи работы файлов и работать с базой данных. Как работать в БД инфы в нете полно.

Да на БД я тоже напишу а вот на файлах мне нужно

Спустя 11 часов, 8 минут, 57 секунд (16.03.2008 - 10:06) LoneCat написал(а):
Я-бы всетки посоветовал воспользовацца БД, хотя-бы не настоящей smile.gif например есть в php такая библиотечка как SQLite, эмулирует sql-базу, данные хранит в файлах. Ну и если совсем уж приперло сделать через запись в файл - пиши в формате а-ля csv, иже "ячейка : разделитель ячеек : ячейка : разделитель строк :" и т.п., в том-же cvs используюцца разделители в виде ";" и переносы строки, иже запись в файле будет выглядеть как:

браузер1;ос1;ссылающийся1
браузер2;ос2;ссылающийся2

В коде такое можно просто сделать с помощью мировых функций implode/explode, итого получать данные в массив

$array['browser'] = $_SERVER['HTTP_USER_AGENT'];
$array['referer'] = $_SERVER['HTTP_REQUEST_URI'];

а затем сливать в единую строку

$out_string = implode(";", $array);

и писать в файл

fwrite($opened_file, $out_string.chr(13).chr(10));

А читать через file, он как раз делать массив с разбивкой по переносам, а из каждой строки получит информацию можно через explode

$input_file = file(input_file_path);
$result_array = array();
foreach($input_file as $line) {
$result_array[] = explode(";", $line);
}

И вот как-то так smile.gif
З.Ы. Да, и еще, чтобы такая "база" не накрылась, в случае если во вносимом тексте попадецца разделитель (точка с запятой или ентер - нужно как-то это дело экранировать, самое опять-же простое - кодировать в base64 перед записью, и декодировать после чтения, иже:

...
foreach($array as $key => $value) {
$array[$key] = base64_encode($value);
}
$out_string = implode(";", $array);

И соот-но:

...
foreach($input_file as $line) {
$pre_result = explode(";", $line);
foreach($pre_result as $key => $value) {
$pre_result[$key] = base64_decode($value);
}
$result_array[] = $pre_result;
}

Спустя 7 часов, 29 минут (16.03.2008 - 17:35) Floopy написал(а):
Спасибо большое ...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.