Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Находим ЧАС ПОЯС ! информация о пользователи 
:(
    Опции темы
D I M K A
Дата 1.3.2005, 01:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте, я написал счётчик . Он выводит дату когда юзера заходили на мою пагу . Но прикол в том, что сайт в интернациональной зоне, а время счетчик показывать будет то , которое у него установлено на компе , т.е. получается полный беспредел !

Как мне вывести рядом с датой часовой пояс пользователя ? Например 00:17:13 | GMT: +04 : 00 ??!!
  Вверх
BIG BROTHER
Дата 1.3.2005, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 9.12.2004
Где: Россия, Москва

Репутация: 2
Всего: 4



пользовательский часовой пояс можно поределить с помощю javascript
напрмер так
Код

<script>
Date = new Date();
document.write( "Seconds above eridian: " + Date.getTimezoneOffset() + "<br>" );
document.write( "Time Zone (GMT): " + ( Date.getTimezoneOffset() / 60 ) *  ( -1 ) + "<br>" );
</script>

--------------------
Mess with the best, die like the rest
PM MAIL ICQ   Вверх
Mal Hack
Дата 1.3.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Если у пользователей есть авторзованная зона и они мотгут сохранить свой часовой пояс, как на этом форуме в профиле, то можно вывести смещение так:
Код
<?php

print date( "j.m.Y H:i:s" , time() ) . "<br>"; // Время сервера

$needle = 3;  // Нужный нам часовой пояс
$tm = ( date( "Z" ) / 60 / 60 ); // Смещение часового пояса сервера относительно GMT
$sm = ( $needle * 3600 ) - date( "Z" ); // Смещение на нужный часовой пояс

print date( "j.m.Y H:i:s" , time() + $sm ); // Время, со смещением на наш часовой пояс

?>


BIG BROTHER
Даже боюсь загадывать, откуда код взял smile
PM ICQ   Вверх
D I M K A
Дата 2.3.2005, 00:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 2.3.2005, 00:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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 ! В чем заґвоздка ? Что нужно исправить ? :

(ИСХОДНИК ТОТ ЖЕ)
  Вверх
ТАК ? ...
Дата 5.3.2005, 01:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Так на рнр часовой пояс не находится ?
  Вверх
Mal Hack
Дата 5.3.2005, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата
Так на рнр часовой пояс не находится ?

Посмотри внимательно мой пост...
Цитата(Mal @ 1.3.2005, 15:26)
date( "Z" ) / 60 / 60

И будет часовой пояс.
PM ICQ   Вверх
D
Дата 5.3.2005, 14:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 5.3.2005, 14:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 5.3.2005, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата
Как вставить опред. час. пояса в код счетчика

Прибавить к переменной с часами. Только надо пропускать через mktime или самому смотреть чтобы не получилось 26 или -3 часа.
PM ICQ   Вверх
D
Дата 7.3.2005, 16:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











http:// forum.europeanservers.us/cgi-bin/se.eur?80692
гля, тут так и сделано, типа GMT +3 !
ЯваСкрипт ни причем , он всегда у меня отключен .
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1041 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.