| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Находим ЧАС ПОЯС ! |
| Автор: D I M K A 1.3.2005, 01:18 |
| Здравствуйте, я написал счётчик . Он выводит дату когда юзера заходили на мою пагу . Но прикол в том, что сайт в интернациональной зоне, а время счетчик показывать будет то , которое у него установлено на компе , т.е. получается полный беспредел ! Как мне вывести рядом с датой часовой пояс пользователя ? Например 00:17:13 | GMT: +04 : 00 ??!! |
| Автор: BIG BROTHER 1.3.2005, 10:31 | ||
| пользовательский часовой пояс можно поределить с помощю javascript напрмер так
|
| Автор: Mal Hack 1.3.2005, 15:26 | ||
Если у пользователей есть авторзованная зона и они мотгут сохранить свой часовой пояс, как на этом форуме в профиле, то можно вывести смещение так:
BIG BROTHER Даже боюсь загадывать, откуда код взял |
| Автор: D I M K A 2.3.2005, 00:43 |
| ява не катит ;) вот весь код счетчика : <?php // Our log file; $counter = "counter.txt"; // Date logging; $today = getdate(); $month = $today[month]; $mday = $today[mday]; $year = $today[year]; $time= date("H:i:s"); $current_date = $mday . $month . $year . $time ; // Log visit; $fp = fopen($counter, "a"); $line = $REMOTE_ADDR . "|" . $mday . $month . $year . $time . "\n"; $size = strlen($line); fputs($fp, $line, $size); fclose($fp); // Read log file into array; $contents = file($counter); // Total hits; $total_hits = sizeof($contents); // Total hosts; $total_hosts = array(); for ($i=0;$i<sizeof($contents);$i++) { $entry = explode("|", $contents[$i]); array_push($total_hosts, $entry[0]); } $total_hosts_size = sizeof(array_unique($total_hosts)); // Daily hits; $daily_hits = array(); for ($i=0;$i<sizeof($contents);$i++) { $entry = explode("|", $contents[$i]); if ($current_date == chop($entry[1])) { array_push($daily_hits, $entry[0]); } } $daily_hits_size = sizeof($daily_hits); // Daily hosts; $daily_hosts = array(); for ($i=0;$i<sizeof($contents);$i++) { $entry = explode("|", $contents[$i]); if ($current_date == chop($entry[1])) { array_push($daily_hosts, $entry[0]); } } $daily_hosts_size = sizeof(array_unique($daily_hosts)); // Let's display everything; echo "Total hits: " . $total_hits . "<br>Total hosts: " . $total_hosts_size . "<br>Daily hits: " . $daily_hits_size . "<br>Daily hosts: " . $daily_hosts_size; ?> Отак , а как дописавать час пояс ? ... Без всякой авторизации и выставлений . Счетчика по ходу даже и не видно на паге . В *тхт файлике даты всех посещения и мне надо туда добавить час. пояс ... Так как 04:04:04 в Аргентине и в Киеве имеют разный часовой смысл ;) ... |
| Автор: D I M K A 2.3.2005, 00:49 |
| еще одно( в разделе "для начинаю" нет даже начин. наверно) , от : Дело в том, что в этот скрипт я добавил переменную $time . Вставил ее дляотображения ... но баг! Работа самого скрипта заключается в отображении 4-ьох строк , вот они Total hits: 158 --------------------------------- Total hits: 1 Total hosts: 1 Daily hits: 1 Daily hosts: 1 ----------------------- И вот как только я добавил переменную $date -> сразу показатели Daily hits: 1 и Total hits: 1 и при мгновенном обновлении страницы начали искажатся ! Причем показатель Total hits: 1 как и прежне показует при каждом обновлении на 1-у цыфпру больше , т.е. работает правильно, зато Daily hits: 1 начал прибавлять, а потом (при еще одном обновлении) отнимать цыфру 1 ! В чем заґвоздка ? Что нужно исправить ? : (ИСХОДНИК ТОТ ЖЕ) |
| Автор: ТАК ? ... 5.3.2005, 01:22 |
| Так на рнр часовой пояс не находится ? |
| Автор: Mal Hack 5.3.2005, 13:28 | ||||
Посмотри внимательно мой пост...
И будет часовой пояс. |
| Автор: D 5.3.2005, 14:34 |
| Mal Hack, стой, стоп ... давай разьясним с каждой строкой ... 1. открываем код РНР ( <?php ) 2. выводим время не сервере ( print date( "j.m.Y H:i:s" , time() ) . "<br>"; // Время сервера ) 3. (тут сомнения) обьявляем что нам нужна переменная с запросом 3 , котороя есть хар-икой 3-ього час. пояса ( $needle = 3; // Нужный нам часовой пояс ) 4. что значит _ date( "Z" ) / 60 / 60 _ ? ( $tm = ( date( "Z" ) / 60 / 60 ); // Смещение часового пояса сервера относительно GMT ) 5. Почему мы 3 множ. на 3600 ? И что такое Z ? ( $sm = ( $needle * 3600 ) - date( "Z" ); // Смещение на нужный часовой пояс ) 6. выводим дату со смещением вправо . А если нужно отнимать ? ( print date( "j.m.Y H:i:s" , time() + $sm ); // Время, со смещением на наш часовой пояс ) Самое главное. Как вставить опред. час. пояса в код счетчика : <?php // Our log file; $counter = "counter.txt"; // Date logging; $today = getdate(); $month = $today[month]; $mday = $today[mday]; $year = $today[year]; $time= date("H:i:s"); $current_date = $mday . $month . $year . $time ; // Log visit; $fp = fopen($counter, "a"); $line = $REMOTE_ADDR . "|" . $mday . $month . $year . $time . "\n"; ... (Полный код написан сверху) |
| Автор: D 5.3.2005, 14:35 |
| Mal Hack, стой, стоп ... давай разьясним с каждой строкой ... 1. открываем код РНР ( <?php ) 2. выводим время не сервере ( print date( "j.m.Y H:i:s" , time() ) . "<br>"; // Время сервера ) 3. (тут сомнения) обьявляем что нам нужна переменная с запросом 3 , котороя есть хар-икой 3-ього час. пояса ( $needle = 3; // Нужный нам часовой пояс ) 4. что значит _ date( "Z" ) / 60 / 60 _ ? ( $tm = ( date( "Z" ) / 60 / 60 ); // Смещение часового пояса сервера относительно GMT ) 5. Почему мы 3 множ. на 3600 ? И что такое Z ? ( $sm = ( $needle * 3600 ) - date( "Z" ); // Смещение на нужный часовой пояс ) 6. выводим дату со смещением вправо . А если нужно отнимать ? ( print date( "j.m.Y H:i:s" , time() + $sm ); // Время, со смещением на наш часовой пояс ) Самое главное. Как вставить опред. час. пояса в код счетчика : <?php // Our log file; $counter = "counter.txt"; // Date logging; $today = getdate(); $month = $today[month]; $mday = $today[mday]; $year = $today[year]; $time= date("H:i:s"); $current_date = $mday . $month . $year . $time ; // Log visit; $fp = fopen($counter, "a"); $line = $REMOTE_ADDR . "|" . $mday . $month . $year . $time . "\n"; ... (Полный код написан сверху) |
| Автор: Mal Hack 5.3.2005, 14:37 | ||
Прибавить к переменной с часами. Только надо пропускать через mktime или самому смотреть чтобы не получилось 26 или -3 часа. |
| Автор: D 7.3.2005, 16:03 |
| http:// forum.europeanservers.us/cgi-bin/se.eur?80692 гля, тут так и сделано, типа GMT +3 ! ЯваСкрипт ни причем , он всегда у меня отключен . |