08.02.2018, 20:54
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,799
|
|
Сообщение от laimas
|
file_put_contents('current.json', json_encode['usd'=>[
date('j.n.Y', strtotime($curr)) => $usd_curr, //текущая дата => курс
date('j.n.Y', strtotime($prev)) => $usd_prev //предыдущая дата => курс
]]);
|
Вы случаем не потеряли скобки функции "json_encode"?
|
|
08.02.2018, 20:55
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А больше картинки не нашлось?
Последнее, подробнее и практически полное. Более писать подробности не буду.
1) Создать на сервере папку current, с правами 644 (уточнить у хостера), закрыв прямой доступ к ней через .htaccess, то есть поместить этот файл в папку current. Этот файл так и называется - с точкой вначале без всяких подстановок kurs и прочей белиберды, а также не имеет никакого расширения. В нем должны быть строки которые я ранее приводил.
2) Узнать - если на сервере cron выполняет скрипты из закрытого каталога, то код следующего файла поместить в папку current под именем current.php. Если нет, то поместить его под этим именем в корень документов (это там где и индексный файл), при этом код этого файла поместить в условие показанное ниже:
<?
if(PHP_SAPI == 'cli') {
//тут далее код файла current.php, естественно без РНР тегов <? и ?>
}
?>
current.php
<?
$dir = dirname(__FILE__);
chdir($dir);
libxml_use_internal_errors();
if($xml = simplexml_load_file('http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.date('d/m/Y', strtotime('-2 day')).'&date_req2='.date('d/m/Y').'&VAL_NM_RQ=R01235')) {
$last = round((float)str_replace(',', '.', current($xml->Record[0]->Value)), 2);
$usd_prev = round((float)str_replace(',', '.', current($xml->Record[1]->Value)), 2);
$usd_curr = round((float)str_replace(',', '.', current($xml->Record[2]->Value)), 2);
chmod($dir, 0777); //уточнить у хостера
file_put_contents('current.json',
json_encode([
'current' => [
'date' => date('j.n.Y'),
'value' => $usd_curr,
'rate' => $usd_curr > $usd_prev ? '▲' : '▼'
],
'previous' => [
'date' => date('j.n.Y', strtotime('-1 day')),
'value' => $usd_prev,
'rate' => $usd_prev > $last ? '▲' : '▼'
]
], JSON_UNESCAPED_UNICODE)
);
chmod($dir, 0644); //уточнить у хостера
}
?>
Курс за три дня, чтобы динамику предыдущего дня получить. JSON ответа:
{"current":{"date":"8.2.2018","value":56.95,"rate":"▼"},"previous":{"date":"7.2.2018","value":57.22,"rate":"▲"}}
index.php
<?
header('Access-Control-Allow-Origin: http://h116641.s08.test-hf.su');
header('Vary: Origin');
header('Access-Control-Allow-Methods: GET');
header('Content-type: application/json; charset=utf-8');
exit(file_exists('current/current.json') ? file_get_contents(current/current.json) : json_encode(false));
?>
<Files *> к РНР отношения не имеет, это в .htaccess, в РНР файле это:
<Files *>
header ....
просто вызовет фатальную ошибку.
На клиенте:
$.getJSON(url домена, function(data) {
if(data) {
//думаю дальше пояснять уже не надо
} else {
//еще не было сохраненного курса на сервере
//решать не мне что делать, но можно на сервер поместит json файл, к котором прописать вручную данные, а cron обновлять будет
}
})
Последний раз редактировалось laimas, 08.02.2018 в 21:32.
|
|
08.02.2018, 21:19
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Nexus
|
случаем не потеряли скобки функции "json_encode"?
|
Слава богу, что вообще что-то есть, клава на батарейках, ближе к концу ресурса то теряет, то пиииииииииииишет лишнее.
|
|
09.02.2018, 01:03
|
Профессор
|
|
Регистрация: 02.05.2016
Сообщений: 390
|
|
Сообщение от Nexus
|
Вы случаем не потеряли скобки функции "json_encode"?
|
Нужно там двойные скобки поставить?
|
|
09.02.2018, 01:26
|
Профессор
|
|
Регистрация: 02.05.2016
Сообщений: 390
|
|
Спасибо всем кто
мне помогает очень благодарен.
Но я не понимаю 70% что там выше написано)))
в них добавил всё как есть выше. на хостинге www.host-food.ru есть крон.
Что дальше делать? Я сижу в инвалидной коляске и делаю сайт небольшого портала города, решил вывести курс доллара в обычный числовой формат $ 56.77 ▲
Если кто может, покажите очень подробно что делать, дальше?
Последний раз редактировалось spinastr, 09.02.2018 в 21:12.
|
|
09.02.2018, 02:16
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
spinastr,
может пора определится, что нужно?
Читайте внимательно, вникайте, мечетесь как белка в колесе.
Я выделил красным имя файла .htaccess для вас специально, чтобы раз и навсегда вы уяснили, что в рамках веб сервера Apache, это специальное зарезервированное имя.
.htaccess .txt - это все что угодно, но не .htaccess
xxxx.htaccess - это все что угодно, но не .htaccess
xxxx.htaccess .txt - это все что угодно, но не .htaccess
Правильно только так .htaccess !!!
Это сложно тоже понять, что на севере должна быть такая структура каталог-файлы:
current
.htaccess
current.php
index.php
Как правильно задать путь cron на файл current/current.php в описаниях планировщика на хостах написано, если нет возможности просто выбора файла.
Выяснять прочие мелочи, о которых я писал вы должны сами, и не здесь на форуме, а в техподдержке хоста.
Если так сложно это все понять и сделать, тогда используйте ту бодягу, с которой и началась тема, игнорируя, что у них явный баг имеется с датой/курсом. Либо ищите другие сервисы получения курса если не устраивает.
|
|
09.02.2018, 02:52
|
Профессор
|
|
Регистрация: 02.05.2016
Сообщений: 390
|
|
laimas,
Нужно, передать курс цифры образец $ 56.77 ▲
Есть хостинг с кроном, на нём стоит динамическая обложка vk, скрипт, который берёт вакансии с сайта и через api ucoz, автоматически публикует объявление. (php дорого не подключа на самом юкозе)
На хостинге создать скрипты которые передадут на мой сайт числа, который я от стилизую через php.
Я понял про структуру, папка и в ней 3 файла. Так у меня и получилось.
Что делать дальше?
Последний раз редактировалось spinastr, 09.02.2018 в 04:28.
|
|
09.02.2018, 03:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от spinastr
|
Я понял про структуру, папка и в ней 3 файла
|
Блин, ну слов нет. Читать не торопясь и внимательно.
1) Есть ведь рабочий сайт, которому и нужны курсы, ну что мешает через FTP посмотреть структуру его каталогов/файлов?
Хост выдает вам готовую структуру каталогов, в которой будут один особенный каталог, который и будет является доменом для доступа извне на этот хост. Этот каталог называется публичным и для домена является корнем документов. Имя этого каталога может быть какое угодно: docs, html, etc и прочие фантазии хоста.
То есть запрос в браузере http://domain/ или http://domain означает, что сервер обеспечит доступ к публичному каталогу домена. Но чтобы браузер что-то получил сервер запускает индексный файл публичной папки. Имя индексного файла тоже может быть любым, это определяется настройками на сервере. По умолчанию для РНР, как серверного языка, таким именем является index.php.
А когда говорят - "создать на сайте папку ....", то это означает - в корне документов (в публичной папке) создать эту папку.
Если бы я сказал создать папку current для того чтобы в браузере иметь доступ к ней по адресу http://domain/current/, тогда бы сервер для ответа браузеру искал в этой папке также индексный файл, то есть таковой был бы нужен. Но я постоянно твержу, что эта папка будет закрыта для прямого доступа посредством файла .htaccess и запрос ее или любых файлов из нее вернет 403 - доступ запрещен. Это и требуется.
То есть структура папок и файлов на сервере должна быть (в корне документов, хрен знает как этот каталог на вашем сервере называется)
current - папка с файлами в корне документов, в ней 2 файла: .htaccess и current.php.
Файл index.php расположен в корне документов, а не в папке current.
Что непонятного?
Последний раз редактировалось laimas, 09.02.2018 в 06:17.
|
|
09.02.2018, 03:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Не вываливайте картинки размером с футбольное поле, они бесят, ибо не всегда я за компом с экраном Full HD, могу и с меньшего разрешения работать.
2) На сервере под Unix системами папки и файлы имеют права, обычно у папок права 644, что и видно по вашей картинке. Но в папку с такими правами скрипт не сможет что-то записать, будет ошибка. Для этого дают права, бывает достаточно и 755, но чаще используют полные 777, а после записи вновь возвращают 644. Файл current.php записывает полученные курсы в файл в папку current, поэтому в скрипте и задаются права на папку функцией chmod():
chmod($dir, 0777); - тут дали права на запись
записали в файл
chmod($dir, 0644); - вернули прежние права
Две эти строки кода имеют комментарий //уточнить у хостера. Дело в том, что права можно задать как 777 и как 0777. С нулем или нет, это и нужно определить, для этого есть техподдержка, да и просто faq на хосте по наиболее частым вопросам есть.
Узнать и в коде прописать как надо - с нулем или без.
Последний раз редактировалось laimas, 09.02.2018 в 06:19.
|
|
09.02.2018, 03:36
|
Профессор
|
|
Регистрация: 02.05.2016
Сообщений: 390
|
|
laimas,
index.php
Вытащить в корень?
Может лучше из готового скрипта вытащить данные?
|
|
|
|