Обработка ПОМЕЩАЛА/УДАЛЯЛА аргументы в PHP

Я работаю над своей клиентской библиотекой REST для CodeIgniter, и я изо всех сил пытаюсь разработать, как отправить ПОМЕЩЕННЫЙ и УДАЛИТЬ аргументы в PHP.

В нескольких местах я видел, что люди используют опции:

$this->option(CURLOPT_PUT, TRUE);
$this->option(CURLOPT_POSTFIELDS, $params);

Раздражающе, это, кажется, ничего не делает. Действительно ли это - корректный способ установить ПОМЕЩЕННЫЕ параметры?

Если так, как делают я установил, УДАЛЯЮТ параметры?

$this-> опция () является частью моей библиотеки, это просто создает массив констант CURLOPT_XX и отправляет их в curl_setopt_array (), когда созданный ВИХРЕВОЙ запрос выполняется.

Я пытаюсь считать ПОМЕЩЕННЫЙ и УДАЛИТЬ параметры с помощью следующего кода:

        case 'put':
            // Set up out PUT variables
            parse_str(file_get_contents('php://input'), $this->_put_args);
        break;

        case 'delete':
            // Set up out PUT variables
            parse_str(file_get_contents('php://input'), $this->_delete_args);
        break;

Существует две опции здесь, я приближаюсь к этому неправильным способом или существует ошибка где-нибудь в моих библиотеках. Если Вы могли бы сообщить мне, должно ли это теоретически работать, я могу просто усердно работать на отладке, пока я не решаю ее.

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

84
задан hakre 1 November 2011 в 00:53
поделиться

3 ответа

Вместо CURLOPT_PUT = TRUE используйте CURLOPT_CUSTOMREQUEST = 'PUT'. и CURLOPT_CUSTOMREQUEST = 'DELETE', затем просто установите значения с помощью CURLOPT_POSTFIELDS.

68
ответ дан 24 November 2019 в 08:36
поделиться

Просто помните, что большинство веб-серверов не обрабатывают запросы на поставку и удаление. Так как вы делаете библиотеку, я бы предложил думать о учете этого. Как правило, есть две конвенции, которые вы можете использовать для Mimic Put & Delete через Post.

  1. Используйте пользовательскую переменную пост (EX. _Method = put), которые переопределяют пост
  2. , установите пользовательский заголовок HTTP (EX. X-HTTP-метод - переопределить: поставить)

Вообще говоря, самые спокойные услуги, которые не Разрешить PUT & Delete напрямую поддержит хотя бы одну из этих стратегий. Вы можете использовать CURL, чтобы установить пользовательский заголовок, если вам нужно через параметр Curleopt_httpheader .

// ex...
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-HTTP-Method-Override: PUT') );
16
ответ дан 24 November 2019 в 08:36
поделиться

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

Чтобы установить переменные пост, используйте Curlopt_PostFields с ни одной строкой param1 = val1 & param2 = val2 или ассоциативный массив.

Чтобы сделать удаление, вы захотите использовать вариант Curl Curlopt_Customrequest

3
ответ дан 24 November 2019 в 08:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: