Проблемы с циклическим просмотром массива, содержащего параметры cURL, и их настройкой - PullRequest
0 голосов
/ 28 февраля 2011

Я делаю библиотеку, которая позволяет пользователю динамически добавлять / удалять опции cURL до того, как будет сделан запрос.Цикл foreach выглядит следующим образом:

$ch = curl_init($url);

// Cycle through each option and set them
foreach($setup['curl_options'] as $option => $value)
{
    echo '<p>' . $option . ' = ' . $value . '</p>';
    curl_setopt($ch, $option, $value);
}

Ключ / значения массива правильно отображаются в абзацах, однако, когда дело доходит до добавления значений в curl_setopt, я получаю ошибку:

curl_setopt() ожидает, что параметр 2 будет длинным, задана строка.

Что я здесь не так делаю?

Ответы [ 3 ]

1 голос
/ 28 февраля 2011

Второй параметр (ваш $option) должен быть постоянным значением.

Здесь http://php.net/manual/en/function.curl-setopt.php у вас есть определение всех доступных констант.

Если вы уже используете эти значения констант, вам следует проанализировать его для типа (long).

Если у вас есть только имена этих констант, используйте constant($option), но убедитесь, что значения также прописные и правильные.

1 голос
/ 28 февраля 2011
curl_setopt($ch, $option, $value);

Допустим, $option - это CURLOPT_HEADER.Ваш код сводится к:

curl_setopt($ch, 'CURLOPT_HEADER', $value);

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

$setup['curl_options'][] = array('CURLOPT_HEADER', true); // wrong
$setup['curl_options'][] = array(CURLOPT_HEADER, true); // right
0 голосов
/ 28 февраля 2011

Попробуйте с

curl_setopt($ch, constant($option), $value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...