2 вопроса: 1. на сервере хранится дата и время, мне нужно поднять и показать на экране, если так Код (Text): echo "<TD>".$row['crDate']; echo "<TD>".$row['crTime']; то UTC(GMT) не учитывается и на экран поднимается серверное время. 2. Поле varchar, занесен в первых 3х символах пробел (0x20), читается все нормально но в TD попадают как пробелы, а не как Код (Text): и на экране этих пробелов не видно. есть ли способ в PHP при выводе учитывать UTC(GMT) и заменять пробелы на nbsp? TIA!!!
1. учитывать часовой пояс посетителя? если речь о сайте с регистрацией, то пользователь сможет указать эти данные в своем профиле. тогда можно прибавлять некую дельту ко времени или воспользоваться функциями DateTime. иначе непонятно откуда этой информации взяться. 2. если буквально заменять, то str_replace(). может быть вас устроит CSS атрибут white-space?
По первому ещё можно на JS сделать - сервер вместе со всем остальным отдаёт в JS-скрипте текущее серверное время, на клиентской стороне JS получает текущее время посетителя и высчитывает разницу. Ну а далее прибавляет или отнимает эту разницу к/от всех дат на странице.
1. сайт с регистрацией, но не хотелось бы клиента просить, что-то вводить. Каждый дополнительный символ у клиента вызывает панику. Хотелось бы находить эту дельту в скрипте и прибавлять. Предлагают завести базку IP, по IP находить страну и вычислять UTC. 2. наверное воспользуюсь str_replace, на стороне клиента не хотелось бы ничего делать. И потом, некоторые клиенты ставят блокировку JS, а CSS работает под разными браузерами как сам хочет.
Насчёт JS - это я как раз по первому говорил, про время, а не про пробелы. Мы когда делаем сайты - просто говорим заказчику, что сайт будет работать только со включенным JS и куками. Те 0,5% посетителей, которые отключают JS - они, зайдя на сайт, скорее всего сами поймут интуитивно, что на сайте что-то нарушено и работает неверно. И если им интересен сайт - то включат JS. Ну, я так думаю
По моему опыту, это не так. Клиент в 2 ночи решает зайти на сайт, не получается ничего, сообразить включить js не умеет, хотя об этом огромная надпись на первой странице, начинает звонить хозяину сайта, хозяин сайта звонит программистам, типа заплатил и сайт не работает. Много "теплых" слов о сайте и что js это источник вирусов, а кукис хакеры воруют и т.д. Потому предпочитаю серверный вариант. Чем клиент меньше знает(видит), тем всем лучше.
Какой странный клиент попался - ещё и звонить начал Если он сумел сообразить его выключить - то и включить должен сообразить По-умолчанию во всех браузерах JS включен. JS порой позволяет существенно снизить нагрузку на сервер. Вот в данном примере - одно дело держать свою базу IP-адресов и определять по ней местоположение посетителя, по нему получать разницу во времени, и совсем другое дело - просто вывести текущее серверное время в JS-скрипт Кроме того, клиент может зайти на сайт через прокси какой-нибудь, тогда сервер определит IP этого прокси, а не клиента. И, соответственно, разницу во времени посчитает до прокси, а не до клиента. Клиент же опять увидет неправильное время (если только он случайно не окажется в одном часовом поясе с прокси-сервером). JavaScript же определит часовой пояс и разницу во времени просто "посмотрев на часы" на клиентской машине.
Если с JS делать, то лучше всего при авторизации пользователя дополнительно вставлять куда-нибудь его время. Я даже предлагаю такое решение. Делаете скрытое поле в форме авторизации. Ставите его по умолчанию нулём. Далее, в обработчике onload страницы из JS записываете туда текущее время. Таким образом, вы его получите вместе с логином и паролём и сможете уже скорректировать всё выдаваемое клиенту время на сервере. А если получили в этом поле 0, то сразу ясно, что у клиента отключён JS, и вы пишите, что типа - у вас отключён JS, посему время серверное. Добавлено спустя 1 минуту 29 секунд: Хотя мне пока, за мой недолгий период работы веб-программистом, пока попадаются только заказы, где без JS вообще ничего не сделать, поскольку требуется интерактивное взаимодействие пользователя со страницей