Работа с API Zabbix из PHP

Поискал, поискал, ничего толкового не нашел. Пришлось написать самому. Выложил на GitHub. Описание актуального API Zabbix тут.

Пример использования:

include_once 'zabbix.php';

$url="https://my_zabbix.ru/api_jsonrpc1.php";
$login="weoriufeowiuf";
$password="owerierfoiewroi";

@include_once 'config.php';

// инициализация класса true/false - вывод в режиме debug
$zab=new Tzabbix(false);
$zab->SetCurlOpt(CURLOPT_URL,$url);
echo "-получаем api-key\n";
$res=$zab->Auth($login, $password);
if (isset($res->result)==true){
    if ($res->result!==false){        
        $res=$zab->Execute("host.get", ["output"=>["hostid","host"],"selectInterfaces"=>["interfaceid","ip"]]);
        var_dump($res);
    } else {
        var_dump($res);        
        die(-1);
    };    
} else {
  echo "--не понятная ошибка. попробуйте переключить в debug=true";  
};

1C управляемые формы, выбор из списка значений

1С удивительная платформа. Иногда спотыкаешься на ровном месте на пару часов и не знаешь ты дурак или нет.. Ну вот казалось бы простая вещь — сделать список выбора на управляемой форме, а застрял из-за одного нюанса, из-за которого то что выбрал в списке не отображалось в поле выбора..

Теперь пошагово:

  1. Создаем реквизит, например «Категория». ВАЖНО! — тип — произвольный:
    У меня был затык именно на этом месте.
  2. Далее ставим галочку «Режим выбора из списка» и назначаем обработку начала выбора на клиенте
  3. Собственно сама обработка:
&НаКлиенте
Процедура КатегорияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)	
	Элементы.Категория.СписокВыбора.Очистить();
	Элементы.Категория.СписокВыбора.Добавить(0,"1");
	Элементы.Категория.СписокВыбора.Добавить(1,"2");
	Элементы.Категория.СписокВыбора.Добавить(2,"Тест");
КонецПроцедуры

В чём была моя ошибка? Тип реквизита выбирал текст. Ну да, только когда я добавлял в список выбора цифры в Элементы.Категория.СписокВыбора.Добавить(0,»1″), то 1С их преобразовывала с цифры..

Простейшая авторизация на PHP

Иногда проще бывает встроить «базовую» авторизацию в скрипт, чем «пилить» что-то специальное под авторизацию. К счастью протокол HTTP позволяет это сделать — а именно перед открытием страницы можно спросить у пользователя…ну например банальное логин-пароль. Например так:

if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="Enter login and passowrd"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Без авторизации нельзя!';
    exit;
}  else {

if (($_SERVER['PHP_AUTH_USER']=="pavel") and ($_SERVER['PHP_AUTH_PW']=="lkeslek")){

} else {
 die("Логин пароль не верен!");
};

3 способа получения координат по адресу

1) Яндекс

https://geocode-maps.yandex.ru/1.x/?geocode=$address&format=json&results=1

Минусы: Быстро банит, при превышении какого-то количества запросов

2) Гугл

https://maps.googleapis.com/maps/api/geocode/json?address=Вологда&key=YOUR_API_KEY

Минусы: нужно получать ключ

3) Спутник

http://search.maps.sputnik.ru/search/addr?q=$address

Минусы: для части адресов, с которыми Яндекс справляется отлично, тут безбожно врёт.

PHPMyAdmin: Warning in ./libraries/sql.lib.php#613 count(): Parameter must be an array or an object that implements Countable

После обновления Ubuntu вдруг стала выходить такая ошибка в PHPNyAdmin в варнингах. Все не доходили руки посмотреть, да вот дошли. Это ошибка в файле /usr/share/phpmyadmin/libraries/sql.lib.php. Нужно найти сточку:

|| (count($analyzed_sql_results['select_expr'] == 1)

И исправить её на:

|| ((count($analyzed_sql_results['select_expr']) == 1)

Не правильно скобочки поставили разработчики  😉