curl post - порча передаваемого контента

Mik Foxi
На сайте с 02.03.2011
Offline
1218
747

курлом делаю пост запрос:


$p = 'текст + текст';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://***/add.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'p='.$p);
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP');
$outch = curl_exec($ch);
curl_close($ch);

в итоге получающий скрипт получает битый контент, из которого вырезаны знаки + (плюс)

что я делаю не так? :(

Антибот, антиспам, веб фаервол, защита от накрутки поведенческих: https://antibot.cloud/ (8 лет на защите сайтов). Форум на замену серчу: https://foxi.biz/
-
На сайте с 15.12.2010
Offline
133
#1

Странно, Вроде все так.

Может проблема в разных кодировках...

M2
На сайте с 11.01.2011
Offline
341
#2

foxi,

Попробуйте взять содержимое переменной $p в двойные кавычки.

------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
C
На сайте с 04.02.2005
Offline
291
#3

urlencode(p)

Sveta Prokopeva
На сайте с 10.05.2006
Offline
99
#4

В POSTFIELDS подаётся заэнкоденная строка, поэтому + интерпретируются как пробелы. Так что да, urlencode($p). Либо:

curl_setopt($ch, CURLOPT_POSTFIELDS, array('p' => $p));

Тогда PHP сделает всю грязную работу за вас.

Mik Foxi
На сайте с 02.03.2011
Offline
1218
#5

Sveta Prokopeva, гениально, спасибо, array('p' => $p) помогло! хотя вчера за 3 часа поисков и экспериментов так и не нашел сам такого варианта.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий