Проверка строки JSON на ошибки в PHP

👁 72 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

<?php
// Верная json-строка
$json[] = '{"Organization": "PHP Documentation Team"}';

// Неверная json-строка, которая вызовет синтаксическую ошибку,
// здесь в качестве кавычек мы используем ' вместо "
$json[] = "{'Organization': 'PHP Documentation Team'}";


foreach ($json as $string) {
    echo 'Декодируем: ' . $string;
    json_decode($string);

    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - Ошибок нет';
        break;
        case JSON_ERROR_DEPTH:
            echo ' - Достигнута максимальная глубина стека';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Некорректные разряды или несоответствие режимов';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Некорректный управляющий символ';
        break;
        case JSON_ERROR_SYNTAX:
            echo ' - Синтаксическая ошибка, некорректный JSON';
        break;
        case JSON_ERROR_UTF8:
            echo ' - Некорректные символы UTF-8, возможно неверно закодирован';
        break;
        default:
            echo ' - Неизвестная ошибка';
        break;
    }

    echo PHP_EOL;
}

How to get specific menu items from Joomla 3.x via PHP

👁 57 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

There are 2 ways you can do it:

Option 1:

Joomla loads menus every time page is loads. You can access the menus by calling the following methods.

// Get default menu - JMenu object, look at JMenu api docs
$menu = JFactory::getApplication()->getMenu();

// Get menu items - array with menu items
$items = $menu->getMenu();

// Look through the menu structure, once you understand it
// do a loop and find the link that you need.
var_dump($items);

This method is faster because you don’t need to query database. Simple operation in memory. 

Option 2:

Get it from the database. Either get menu link from jos_menu based on alias or something, or get article # from jos_content by article alias, then create the link

$db = JFactory::getDBO();

//  Load by menu alias
$query = "SELECT link FROM #__menu WHERE alias = 'privacy-policy'";
$db->setQuery($query);
$url = $db->loadResult();
$url = JRoute::_($url);


//  Load by article alias
$query = "SELECT id FROM #__content WHERE alias = 'privacy-policy'";
$db->setQuery($query);
$articleId = (int) $db->loadResult();
$url = JRoute::_("index.php?option=com_content&view=article&id=$articleId");

Работа в базой PostgreSQL в Linux

👁 86 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Вход в терминал psql

Psql — это интерактивный терминал для работы с Postgres. Имеется обилие флагов, доступных для использования при работе с psql, но сосредоточимся на некоторых из наиболее важных, а затем, как подключиться

  • -h флаг указания хоста;
  • -U флаг указания пользователя;
  • -p флаг указания порта (по умолчанию он равен 5432).

Для входа в терминал можно использовать следующую строку, которая запросит пароль

psql -h localhost -U username databasename

Другой вариант — использовать полную строку и позволить psql анализировать ее

psql "dbname=dbhere host=hosthere user=userhere password=pwhere port=5432 sslmode=require"

Если вы в терминале, где уже установлена рабочая версия PostgreSQL, то вы можете войти под пользователя posgres, который по умолчанию является суперадминистратором СУБД PostgreSQL

Еще один способ входа, но уже без пароля

sudo -U postgres psql

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

Все по порядку про CRUD

Одна из хорошей вещей в PGSQL заключается в том, что он поставляется с некоторыми двоичными файлами, такими как createuser и createdb. Поэтому мы будем использовать их.

По умолчанию в Postgres сконфигурирован с единственным пользователем postgres, у которого есть все права на манипуляции в СУБД и является суперадминистратором.

Вход в консоль psql

sudo -u postgres psql

Вышеупомянутая команда получает интерфейс командной строки psql в режиме полного администрирования.

Работа с пользователями

Создание пользователя посредством бинарника createuser

sudo -u postgres createuser <username>

Задание пароля для пользователя

$ sudo -u postgres psql
psql=# ALTER USER <username> WITH ENCRYPTED PASSWORD '<password>';

Создание пользователя посредством терминала psql

psql=# CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass';

Работа с базой данных

Создание базы данных посредством бинарника createdb

sudo -u postgres createdb <dbname>

Задание привилегий для пользователя на действия с базой данных

psql=# GRANT ALL PRIVILEGES ON DATABASE <dbname> TO <username>;

Создание базы данных посредством терминала psql

psql=# CREATE DATABASE <dbname>;

 

Установка прав пользователям

Установка пользователю роль администратора

psql=# GRANT admins TO <username>;

Чтобы дать все права пользователю на операции с базой данных можно воспользоваться командой psql

psql=# GRANT ALL PRIVILEGES ON DATABASE <dbname> TO <username>;

Тоже самое по другому

psql=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <nameschema> TO <username>;

Разрешение на соединение

psql=# GRANT CONNECT ON DATABASE <namedb> TO <username>;

Можно комбинировать несколько привилегий

psql=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA <namescheme> TO <username>;

Если мы хотим дать привилегии на действия всем пользователям, то пишем так

psql=# GRANT ALL PRIVILEGES ON DATABASE <dbname> TO PUBLIC;

Если мы хотим дать привилегии на таблицы, то делаем так

psql=# ALTER DEFAULT PRIVILEGES IN SCHEMA <schemaname> GRANT ALL PRIVILEGES ON TABLES TO <username>;

 

Примечание. Ключевое слово SCHEMA означает тоже самое, что и имя базы данных.

Разрешение входа для пользователя postgres через phpPgAdmin

PostgresSQL по умолчанию имеет суперпользователя с логином postgres и вход через этот логин из вне запрещен. Поэтому, чтобы управлять базами через phpPgAdmin нам нужно войти, разрешив внешний вход. Делается через файл конфигурации phpPgAdmin, который называется config.inc.php.

В составе Vesta, данный файл конфигурации в Ubuntu находится по пути /etc/phppgadmin/config.inc.php.

В данном файле нужно поменять параметр $conf[‘extra_login_security’] поменять с true на false

    // If extra login security is true, then logins via phpPgAdmin with no
    // password or certain usernames (pgsql, postgres, root, administrator)
    // will be denied. Only set this false once you have read the FAQ and
    // understand how to change PostgreSQL's pg_hba.conf to enable
    // passworded local connections.
    $conf['extra_login_security'] = false;

Далее, если вы не знаете пароль супер администратора postgres, то есть возможность ее сменить через терминал

$ sudo -u postgres psql
$ postgres=# \password postgres

После данной команды сервер запросит ввести пароль и подтвердить еще одним вводом и дальше установится новый пароль, которым мы сможем войти через phpPgAdmin