Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 08.02.2018, 20:54
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,728

Сообщение от 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"?
Ответить с цитированием
  #52 (permalink)  
Старый 08.02.2018, 20:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А больше картинки не нашлось?

Последнее, подробнее и практически полное. Более писать подробности не буду.

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.
Ответить с цитированием
  #53 (permalink)  
Старый 08.02.2018, 21:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
случаем не потеряли скобки функции "json_encode"?
Слава богу, что вообще что-то есть, клава на батарейках, ближе к концу ресурса то теряет, то пиииииииииииишет лишнее.
Ответить с цитированием
  #54 (permalink)  
Старый 09.02.2018, 01:03
Профессор
Отправить личное сообщение для spinastr Посмотреть профиль Найти все сообщения от spinastr
 
Регистрация: 02.05.2016
Сообщений: 390

Сообщение от Nexus Посмотреть сообщение
Вы случаем не потеряли скобки функции "json_encode"?
Нужно там двойные скобки поставить?
Ответить с цитированием
  #55 (permalink)  
Старый 09.02.2018, 01:26
Профессор
Отправить личное сообщение для spinastr Посмотреть профиль Найти все сообщения от spinastr
 
Регистрация: 02.05.2016
Сообщений: 390

Спасибо всем кто
мне помогает очень благодарен.


Но я не понимаю 70% что там выше написано)))


в них добавил всё как есть выше. на хостинге www.host-food.ru есть крон.

Что дальше делать? Я сижу в инвалидной коляске и делаю сайт небольшого портала города, решил вывести курс доллара в обычный числовой формат $ 56.77 ▲

Если кто может, покажите очень подробно что делать, дальше?

Последний раз редактировалось spinastr, 09.02.2018 в 21:12.
Ответить с цитированием
  #56 (permalink)  
Старый 09.02.2018, 02:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

spinastr,
может пора определится, что нужно?

Читайте внимательно, вникайте, мечетесь как белка в колесе.
Я выделил красным имя файла .htaccess для вас специально, чтобы раз и навсегда вы уяснили, что в рамках веб сервера Apache, это специальное зарезервированное имя.

.htaccess.txt - это все что угодно, но не .htaccess
xxxx.htaccess - это все что угодно, но не .htaccess
xxxx.htaccess.txt - это все что угодно, но не .htaccess

Правильно только так .htaccess !!!

Это сложно тоже понять, что на севере должна быть такая структура каталог-файлы:

current
   .htaccess
   current.php
index.php


Как правильно задать путь cron на файл current/current.php в описаниях планировщика на хостах написано, если нет возможности просто выбора файла.

Выяснять прочие мелочи, о которых я писал вы должны сами, и не здесь на форуме, а в техподдержке хоста.

Если так сложно это все понять и сделать, тогда используйте ту бодягу, с которой и началась тема, игнорируя, что у них явный баг имеется с датой/курсом. Либо ищите другие сервисы получения курса если не устраивает.
Ответить с цитированием
  #57 (permalink)  
Старый 09.02.2018, 02:52
Профессор
Отправить личное сообщение для spinastr Посмотреть профиль Найти все сообщения от spinastr
 
Регистрация: 02.05.2016
Сообщений: 390

laimas,

Нужно, передать курс цифры образец $ 56.77 ▲

Есть хостинг с кроном, на нём стоит динамическая обложка vk, скрипт, который берёт вакансии с сайта и через api ucoz, автоматически публикует объявление. (php дорого не подключа на самом юкозе)

На хостинге создать скрипты которые передадут на мой сайт числа, который я от стилизую через php.

Я понял про структуру, папка и в ней 3 файла. Так у меня и получилось.


Что делать дальше?

Последний раз редактировалось spinastr, 09.02.2018 в 04:28.
Ответить с цитированием
  #58 (permalink)  
Старый 09.02.2018, 03:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от 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.
Ответить с цитированием
  #59 (permalink)  
Старый 09.02.2018, 03:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Не вываливайте картинки размером с футбольное поле, они бесят, ибо не всегда я за компом с экраном 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.
Ответить с цитированием
  #60 (permalink)  
Старый 09.02.2018, 03:36
Профессор
Отправить личное сообщение для spinastr Посмотреть профиль Найти все сообщения от spinastr
 
Регистрация: 02.05.2016
Сообщений: 390

laimas,
index.php

Вытащить в корень?

Может лучше из готового скрипта вытащить данные?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод контента в модалном окне, чтобы к нему можно было обратиться по ссылке decadent42 jQuery 3 11.04.2016 15:12
Преключатель валют alexmixaylov jQuery 7 21.10.2014 13:10
Проблема с выводом курса валют bubanay Элементы интерфейса 0 20.12.2013 20:42
Вывод переменных MasterHrust Javascript под браузер 4 03.08.2011 15:41
Вывод данных в Друпал 6 из MySQL, небольшая работа torquemada Работа 1 22.05.2011 17:05