#php #javascript #date
#php #javascript #Дата
Вопрос:
Я решил, что хотел бы сделать амбициозную смену настроения в зависимости от времени суток. Мне нужно получить время и сравнить его с заходом и восходом солнца любого данного дня.
До сих пор я здесь нашел несколько javascript, которые хорошо работают. Кто-нибудь может сказать мне, как я мог бы присвоить широту и длину PHP-функции date_sunset? У меня есть IP в переменной PHP с использованием $_SERVER['REMOTE_ADDR']
, но это все, что у меня есть. Я больше ничего не могу сделать, поскольку я никогда не использовал эту функцию и никогда не пытался объединить PHP и JS. Есть идеи?
— Обновить —
Я пытался использовать функцию jQuery $.ajax. Вот мой код;
<script language="JavaScript">
var lat = geoip_latitude();
var long = geoip_longitude();
$(document).ready(function(){
//var url = 'http://www.ransomedesign.co.uk/web/?lat=' lat 'amp;long=' long;
// $.get(url);
$.ajax({
type: "GET",
data: { lat:lat, long:long},
url: "http:www.ransomedesign.co.uk/web/",
success: function() { alert("you win"); }
})
});
</script>
Там есть два разных подхода. (1-й закомментирован). Это действительно заполняет мой php-код $ _SERVER, но только по второму запросу страницы для моего сайта. Мне действительно нужно, чтобы это было обработано при первом посещении, прежде чем что-либо загрузится. После этого значение будет сохранено в сеансе, а php сделает все остальное.
Кто-нибудь может увидеть, что не так с этим кодом или почему он не работает сразу? Мой php, если после этого, это правильно?
Большое спасибо…
Комментарии:
1. На самом деле вам нужно будет беспокоиться только о широте.
Ответ №1:
Учитывая этот фрагмент там, у вас было бы две переменные, geoip_latitude
и geoip_longitude
. Возьмите эти переменные, поместите их в вызов AJAX на вашем сервере, который затем выполнит вычисления:
HTML:
<div id="sunset"></div>
<script>
$('#sunset').load('/path/to/script.php?lat=' geoip_latitude 'amp;lon=' amp; geoip_longitude);
</script>
php:
<?php
$lat = $_GET['lat'];
$lon = $_GET['lon'];
echo date_sunset(time(), SUNFUNCS_RET_STRING, $lat, $long);
Это предполагает, что у вас загружен / доступен jquery и сервер на PHP версии 5. Я также использую время сервера, которое может полностью отличаться от дня клиента. Вероятно, это не сработает из коробки, но должно помочь вам начать.
Комментарии:
1. большое спасибо за ответ. Я посмотрю на это и попытаюсь решить, что делать.
Ответ №2:
Я бы использовал AJAX для этого. Вы используете GeoIP JavaScript, поэтому сначала получите lat
и long
:
var lat = geoip_latitude () ;
var long = geoip_longitude () ;
затем отправьте ее в серверный скрипт, например mood.php
:
var xhr = new XMLHttpRequest () ;
xhr . onreadystatechange = function ()
{
if ( xhr . readyState == 4 amp;amp; xhr . status == 200 )
{
// do something with server response
}
}
xhr . open ( "POST", "mood.php", true ) ;
xhr . setRequestHeader ( "Content-type", "application/x-www-form-urlencoded" ) ;
xhr . send ( "lat=" lat "amp;long=" long ) ;
и mood.php может выглядеть так:
<?php
$lat = $_POST [ "lat" ] ;
$long = $_POST [ "long" ] ;
echo "something depending on lat and long" ;
?>
Редактировать.
Если сервер отправляет ответ, вы можете прочитать его, вызвав xhr . responseText
:
xhr . onreadystatechange = function ()
{
if ( xhr . readyState == 4 amp;amp; xhr . status == 200 )
{
alert ( "Server response: " xhr . responseText ) ;
}
}
Если сервер отправляет XML-контент, то вы можете вызвать xhr . responseXML
— он использует собственный синтаксический анализатор XML.
Комментарии:
1. Благодаря этому this, я собираюсь просмотреть оба ответа и попытаться решить, что делать. Я никогда не использовал AJAX, хотя jQuery уже запущен для других материалов на моем веб-сайте.
2. Привет, я просто пытаюсь заставить это работать — в прокомментированном фрагменте, который говорит сделать что-то с ответом сервера, что я должен указать? До сих пор я настроил это для отправки переменных в header.php в моей теме WordPress это ничего не возвращает…
3. Привет, сейчас я пытаюсь сделать это немного по-другому, я пытаюсь получить значения в PHP-СЕССИИ, используя get. Широта и длина добавляются к URL с помощью AJAX. Хотя у меня все еще возникают некоторые проблемы, я обновил свой исходный пост, если вам захочется взглянуть…
Ответ №3:
На этот вопрос не было ответа как такового, в итоге я получил модуль PHP и файл .dat, установленный на моем хостинге для меня. AJAX действительно работал, но только после посещения страницы с моего сайта, что, к сожалению, было бесполезно. Спасибо всем за помощь..