Безопасный параметр в контроллере Codeigniter PHP?

Я пытаюсь создать скрипт обратного вызова для биткойн-платежей Coinbase. Вот функция ниже от моего контроллера платежей:

function callback($secret = NULL) {
if ($secret == 'testSECRETkey') {

//If order is "completed", please proceed.

$data = json_decode(file_get_contents('php://input'), TRUE);

$status = $data['order']['status'];
$userid = '507';

if (($status === 'completed')) {
$this->db->query( 'update users set user_money=user_money+15, user_credits=user_credits+5 WHERE users_id=' . $userid );
}
}

Как включить special parameterпоэтому, когда я запрашиваю URL: www.example.com/payments/callback
добавить специальный ключ и, если он недействителен, отказать в доступе к скрипту. Пример:

www.example.com/payments/callback?secret=testSECRETkey

К сожалению, это не работает, как я хочу. Это не вступает в силу. Что в этом плохого?

0

Решение

Чтобы получить доступ к key Параметр вы будете использовать класс ввода get метод https://ellislab.com/codeigniter/user-guide/libraries/input.html

$this->input->get('key');

function callback()
{
$key = $this->input->get('key');
if( ! $this->is_valid_key($key)) {
// do something here and return
return;
}

//If order is "completed", please proceed.

$data = json_decode(file_get_contents('php://input'), TRUE);

$status = $data['order']['status'];
$userid = '507';

if (($status === 'completed')) {
$this->db->query( 'update users set user_money=user_money+15, user_credits=user_credits+5 WHERE users_id=' . $userid );
}
}

Создать новый метод для проверки ключа

function is_valid_key($key) {
// logic to check key
$valid = true;
if($valid) {
return true;
}
else {
return false;
}
}
0

Другие решения

Других решений пока нет …