Может при том, что если первый раз, ( заходим без Cookie ) то
Array ( [0] => HTTP/1.1 200 OK [1] => Server: nginx [2] => Date: Wed, 04 Sep 2019 19:25:59 GMT [3] => Content-Type: text/html; charset=utf-8 [4] => Connection: close [5] => X-Powered-By: PHP/7.1.32 [6] => Cache-Control: no-store, no-cache, must-revalidate [7] => Pragma: no-cache [8] => Expires: Mon, 09 Sep 2019 22:25:59 +0300 [9] => Set-Cookie: PHPSESSID=ce61e387ae90a8a82f49f5e954937492; path=/; secure; HttpOnly [10] => Vary: Accept-Encoding )
А если второй раз, вот так:
$default = stream_context_set_default( [ 'http'=>[ 'method'=>"GET", 'header'=>"Cookie: PHPSESSID=ce61e387ae90a8a82f49f5e954937492" ] ] ); print_r(get_headers($url)); die;
то ответ может быть другим
Array ( [0] => HTTP/1.1 200 OK [1] => Server: nginx [2] => Date: Wed, 04 Sep 2019 19:32:10 GMT [3] => Content-Type: text/html; charset=utf-8 [4] => Connection: close [5] => X-Powered-By: PHP/7.1.32 [6] => Cache-Control: no-store, no-cache, must-revalidate [7] => Pragma: no-cache [8] => Expires: Mon, 09 Sep 2019 22:32:10 +0300 [9] => Vary: Accept-Encoding )
Смысл, иногда возникает, в том, что если нет сессии (хз кто, бот какой может), то Expires = time() + 86400*5 и можно закешировать,
а если есть, то Expires заведомо в прошлом (реальный юзер, а документ динамический), чтобы запретить кеширование браузером. Но тут, все равно Expires = time() + 86400*5 (видимо использовали советы 😂) и юзер может получить документ из кеша браузера. И несмотря на то что он только добавил сообщение на сайт может его не увидеть, пока кнтрл-ф5 не нажмет. А если это какой ajax и документ с таким урлом уже вызывался и Expires еще не вышел?
Там все на боинг повесили, но и к пилотам как выясняется вопросов куча:
Кстати, рекомендую этот журнал - Денис Окань, являясь пилотом Б737, в т.ч. max, регулярно публикует свои мысли по тем или иным событиям в авиации. Есть и Ютуб .
Да и у А320 НЕО, выясняется, что те же самые проблемы
Что не удивительно, ведь и там (НЕО) и там (Макс) новые двигатели ЛЕАП увеличенного диаметра
Я не такой смелый, тем более с ребенком. К новому всегда с опаской стоит подходить, пока не накоплена какая то статистика.
Что мы знаем?
Предварительный отчет
В котором:
1.18.2. Предыдущие случаи попадания молний на RRJ-95
16 раз - вероятность 1:17
1.18.3. Предыдущие случаи перехода в DIRECT MODE на RRJ-95
8 раз - вероятность 1:9
Все это умножаем на количество самолетов, их налет и :(
Боюсь все проблемы у этого самолета еще впереди, если экстраполировать на
ЗыЖ Сейчас и Аирбасов 320/18/19/21 не меньше боингов 737, если не больше.
Да, зарапортовался. Позор на мою седую голову. Папка-файл попутал :(
а мне нужно без закрывающего слэша,
Ну вы блин даете.
print_r( get_headers('https://php.net') ); #без закрывающего слэша
Ответ
Array ( [0] => HTTP/1.1 301 Moved Permanently #!!!!!!!!!!!!! [1] => Server: myracloud [2] => Date: Sat, 10 Aug 2019 20:51:28 GMT [3] => Content-Type: text/html [4] => Content-Length: 177 [5] => Connection: close [6] => Location: https://www.php.net/ #!!!!!!!!!!!!! [7] => HTTP/1.1 200 OK [8] => Server: myracloud [9] => Date: Sat, 10 Aug 2019 20:51:29 GMT [10] => Content-Type: text/html; charset=utf-8 [11] => Connection: close [12] => Last-Modified: Sat, 10 Aug 2019 20:10:09 GMT [13] => Content-language: en [14] => X-Frame-Options: SAMEORIGIN [15] => Set-Cookie: COUNTRY=NA%2C*********; expires=Sat, 17-Aug-2019 20:51:29 GMT; Max-Age=604800; path=/; domain=.php.net [16] => Set-Cookie: LAST_NEWS=1565470289; expires=Sun, 09-Aug-2020 20:51:29 GMT; Max-Age=31536000; path=/; domain=.php.net [17] => Link: <https://www.php.net/index>; rel=shorturl [18] => Expires: Sat, 10 Aug 2019 20:51:29 GMT [19] => Cache-Control: max-age=0 )
Пардон, что вклинился в беседу, но тема важная для меня. Не о погоде, но геопозиция важна.
https://prnt.sc/oqmmag 3 из 3-х, MaxMind верно. Судя по
$reader = new Reader('GeoLite2-City.mmdb');
город определяется не платным решением (Downloadable Database: $100 for site license, includes first month of updates. Updates are available for $100 или $0.002 per query), тем не менее делает это хорошо. Резюме для меня: Базы обновлять надо (см. $_SERVER для того же самого IP внизу, где возраст базы пара-тройка месяцев )
Тоже более-менее верно определяет https://extreme-ip-lookup.com/json. И вот этот http://ip-api.com/json
4-й вариант, на несколько десятков км в другую сторону. Но, в браузере где залогинен продолжительное время - точность десятки, край сотни метров.
Я в итоге остановился на следующем алгоритме:
const geoprovider = { #key: [url, priority] eil: ['https://extreme-ip-lookup.com/json/', .9], geoplugin: ['https://www.geoplugin.com/webservices/json', .9], ipapi: ['http://ip-api.com/json', .8], geobytes: ['http://gd.geobytes.com/GetCityDetails', .2], geoiplookup: ['https://json.geoiplookup.io/api', .2] }
По одному перебираются (на каждый новый хит) и если нет в storage.objGet(), получаем json по урлу и если он валидный пишем storage.objSet( key, get_adres(json_res) ).
Как только откроется какая Яндекс карта на сайте, запишется 'ya_geo' в storage с приоритетом 1**
В итоге, получаем вероятностную оценку города.
Ну и GeoLite2-City, куда же без него с приоритетом как у Яндекса
Array ( [SERVER_SOFTWARE] => nginx/1.16.0 [SCRIPT_NAME] => /index.php [REQUEST_METHOD] => GET [GEOIP_POST] => 422189 [GEOIP_LAT] => 55.0038 [GEOIP_LON] => 50.0549 [GEOIP_REGION] => Tatarstan [GEOIP_CITY] => Chelny [GEOIP_COUNTRY_NAME] => Russian Federation [GEOIP_COUNTRY_CODE] => RU [REQUEST_TIME] => 1565374544 )
Чуть порезанный $_SERVER, но заметьте, это 5 вариант геопозиции для моего IP с 2-3 месячными данными GeoLite2-City
**
function ya_geolocation() { var yamaplink = 'https://api-maps.yandex.ru/2.1/?lang=ru_RU'; $.getScript( yamaplink, function( data, textStatus, jqxhr ) { if(jqxhr.status==200) { ymaps.ready( function(){ var geoloc = ymaps.geolocation; geoloc.get({ provider : 'yandex', king : 'locality', mapStateAutoApply: true }).then(function (res) { geolocation.ya = get_adres(res.geoObjects.get(0)); storage.objSet('ya_geo', geolocation.ya ); }); } ); } }); }
Некоторые данные в CODE вырезаны, приведены лишь для иллюстрации идеи
Понятия не имею как работает СМS modx evo. Банально, но, всегда, изменение чего то в админке ведет к изменению в каком то хранилище. Или не ведет. Затем, когда надо показать их юзеру, данные оттуда достаются, если есть, шаблонизируются и показываются пользователю. Т.е. записали в базу
[css=>/assets/themes/def/css/custom.min.css]
если где то в шаблоне есть
<link rel="stylesheet" href="{{ css }}">
то это учтется в документе. Ну а на нет и суда нет.
Поэтому, нужно понять:
1) пишется это куда то или нет
2) достается это откуда то или нет
3) выводится это в шаблоне или нет.
Естественно, никто здесь на эти вопросы не ответит. Поэтому, к админу или какому другому специалисту.
В данном случае достаточно str_replace
echo str_replace("Поздравляем! Вы выиграли\n{coinCount} монет. Сегодня вы сможете получить ещё {number} монет.", '', $str);
json-last-error
Там ошибка простая - ключ data для php в кавычках должен быть
{ "data": ..... } #вместо { data: ..... }
success: function(res){ }
Внутри {} вы можете что то сделать, например алерт сказать после 8 минут, что через 2 минуты бронь будет снята, а это товар уже хотят купить 100500 человек. Алгоритм же простой ява скрипт посылает с сайта через заданный интервал времени какие то данные, в ответ получает данные с сервера и выполняет какие то действия. Т.е технически, примерно ясно. А конкретные действия (через 6 минут предупредить, с 9 минуты через минуту последнее китайское предупреждение, через 30 минут самое последнее, через сутки удалить ) уж точно не в разделе веб-строительства спрашивать. Может маркетологи какие подскажут?
А в чем проблема? Js присылает последнюю активность юзера
Три цифры (от балды, для понимания)
1563207948 последний раз мышка двинулась
1563257948 последний раз js прислал данные
1563457948 запустился крон и решает что делать.
А кто удалит эту куку?😂