![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| D I M K A |
|
|||
|
Unregistered |
Здравствуйте, я написал счётчик . Он выводит дату когда юзера заходили на мою пагу . Но прикол в том, что сайт в интернациональной зоне, а время счетчик показывать будет то , которое у него установлено на компе , т.е. получается полный беспредел !
Как мне вывести рядом с датой часовой пояс пользователя ? Например 00:17:13 | GMT: +04 : 00 ??!! |
|||
|
||||
| BIG BROTHER |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 9.12.2004 Где: Россия, Москва Репутация: 2 Всего: 4 |
пользовательский часовой пояс можно поределить с помощю javascript
напрмер так
--------------------
Mess with the best, die like the rest |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Если у пользователей есть авторзованная зона и они мотгут сохранить свой часовой пояс, как на этом форуме в профиле, то можно вывести смещение так:
BIG BROTHER Даже боюсь загадывать, откуда код взял |
|||
|
||||
| D I M K A |
|
|||
|
Unregistered |
ява не катит ;)
вот весь код счетчика : <?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 |
|
|||
|
Unregistered |
еще одно( в разделе "для начинаю" нет даже начин. наверно) , от :
Дело в том, что в этот скрипт я добавил переменную $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 ! В чем заґвоздка ? Что нужно исправить ? : (ИСХОДНИК ТОТ ЖЕ) |
|||
|
||||
| ТАК ? ... |
|
|||
|
Unregistered |
Так на рнр часовой пояс не находится ?
|
|||
|
||||
| Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Посмотри внимательно мой пост...
И будет часовой пояс. |
||||
|
|||||
| D |
|
|||
|
Unregistered |
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 |
|
|||
|
Unregistered |
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 |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Прибавить к переменной с часами. Только надо пропускать через mktime или самому смотреть чтобы не получилось 26 или -3 часа. |
|||
|
||||
| D |
|
|||
|
Unregistered |
http:// forum.europeanservers.us/cgi-bin/se.eur?80692
гля, тут так и сделано, типа GMT +3 ! ЯваСкрипт ни причем , он всегда у меня отключен . |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |