Codeigniter, как установить ключи API и URL ресурсов для удобного доступа в приложениях

55
4

Я пытаюсь очистить свой сайт, поставив все свои конфигурации в одном месте для легкого доступа.

У меня много разных конфигурационных зависимостей, например, PayPal и Stripe public/private и песочницы/живые клавиши, а также ряд ссылок, например ссылки google recaptcha.

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

Я пытаюсь определить мои ключи API и большинство используемых ссылок в файле config.php CodeIgniter, как это...

$config['stripe_live'] = [
'secret' => 'secret_key_xyz',
'private' => 'private_key_xyz',
]

$config['stripe_sandbox'] = [
'secret' => 'secret_key_xyz',
'private' => 'private_key_xyz',
]

$config['paypal'] = [
'secret' => 'secret_key_xyz',
'private' => 'private_key_xyz',
]

$config['recaptcha'] = [
'site_key' => 'xyz_one_two_three',
'secret_key' => 'xyz_one_two_three',
];

$config['jquery'] = [
['jquery_link'] => base_url() . 'Public/js/jquery.js',
]

$config['bootstrap'] = [
['bootstrap_link'] => base_url() . 'Public/js/jquery.js',
]

$config['fontawesome'] = [

]

$config['google_fonts'] = [

];

$config['groupworld'] = [
'groupworld_api' => 'api_key_xyz';
];

Вопрос один:

Если бы я хотел получить доступ к личным ключам в Stripe live, мне пришлось бы писать...

$stripe_live = $this->config->item('stripe_live');

$stripe_live['public_key'];

Это почти такая же работа, как просто копирование ключа туда, где мне это нужно (одно или два места). Так есть более простой способ?

Второй вопрос:

Можно ли поместить мои URL-адреса в файл конфигурации, как в моем примере выше? Или было бы лучше определить мои URL-адреса как константы (в файле констант), а затем просто получить к ним доступ в виде констант вместо того, чтобы записывать $this->config->item('bootstrap_link')

Благодарю.

спросил(а) 2016-09-26T13:54:00+03:00 3 года, 10 месяцев назад
1
Решение
56

Посмотрев на документацию CodeIgniter Config, я придумал следующее решение, по крайней мере, для моих настроек конфигурации API. В приведенном ниже примере я использую API-интерфейс google recaptcha.

1 - Создайте новый файл внутри папки application/config и вызовите его как хотите... например api_config.php

Внутри этого файла введите ваши ключи API следующим образом:

// stripe api
$config["stripe_live_public_key"] = "public_key_xyz";
$config["stripe_live_private_key"] = "public_key_xyz";

$config["stripe_sandbox_public_key"] = "public_key_xyz";
$config["stripe_sandbox_private_key"] = "public_key_xyz";

// paypal api
$config["paypal_live_public_key"] = "public_key_xyz";
$config["paypal_live_private_key"] = "public_key_xyz";

$config["paypal_sandbox_public_key"] = "public_key_xyz";
$config["paypal_sandbox_private_key"] = "public_key_xyz";

// recaptcha api
$config["recaptcha_api_url"] = 'https://www.google.com/recaptcha/api.js';
$config["recaptcha_verification_url"] = "https://www.google.com/recaptcha/api/siteverify";
$config["recaptcha_public_key"] = "lfgksl;dfg;kkkkdsjfhskjfhkjsdhfjshjksjdh";
$config["recaptcha_private_key"] = "sfkljslfjsjfahjjjjjjhjhsdfjskhajkakkajdj";

// groupworld api

// phpmailer api

2 - В файле контроллера загрузите свой файл конфигурации и массируйте данные в виде, подобном этому...

    $this->config->load('api_config');
$data['recaptcha_api_url'] = $this->config->item('recaptcha_api_url');
$data['recaptcha_public_key'] = $this->config->item('recaptcha_public_key');

3 - В файле просмотра просто отобразите свои данные...

<script src="<?php echo $recaptcha_api_url; ?>"></script>   
<div class="g-recaptcha" data-sitekey="<?php echo $recaptcha_public_key; ?>"></div>

Теперь, чтобы изменить данные конфигурации в нескольких местах, просто перейдите в файл api_config.php и вставьте новые ключи.

ответил(а) 2016-09-26T15:06:00+03:00 3 года, 10 месяцев назад
55

Поскольку я новичок не могу комментировать:/.

Я начну с вопроса 2. Его так держать. Но полоса, paypal - это платежные шлюзы, и будет хорошо хранить ее в db, как сказал Yogesh, и получить ее, чтобы использовать ее. Это также будет полезно, если вы хотите предоставить пользователю его редактировать.

Для js, css-ссылок вы можете поместить их в виде "includefiles.php" и загрузить его на всех страницах при загрузке представлений.

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


<?php
//paymentdetail_helper
function getpaymentdetailhelper(someid or gateway name as arg eg.$id){
$ins=& get_instance();
$ins->load->database();

//your queries $ins->db->query();

return $data;
}

?>

Сохраните это в приложении /helpers как paymentdetail_helper.php и загрузите его, как обычно. больше информации о помощниках, о которых идет речь Информация о помощнике

Это моя идея. :) Добро пожаловать с предложениями

ответил(а) 2016-09-26T14:18:00+03:00 3 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема