CURL и POST

unlex

Новичок
CURL и POST

Вопрос в большей мере касается Wordpress.
Есть необходимость отправлять данные скриптом плагину Wordpress.
Если отправлять их не скриптом, а скажем обычной формой, где action вида http://some_wp_site/wp-admin/admin.php?page=my_plugins/plugin.php и метод POST, то данные доходят до получателя нормально.
Но вот если отправлять из курлом
PHP:
$plugin_url = "http://some_wp_site/wp-admin/admin.php?page=my_plugins/plugin.php";
$uAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $plugin_url); 	
	curl_setopt($curl, CURLOPT_TIMEOUT, 600);
   		curl_setopt($curl, CURLOPT_POST, 1); 
		curl_setopt($curl, CURLOPT_USERAGENT, $uAgent); 
		$data = array("test"=>1); 	
	curl_setopt($curl, CURLOPT_POSTFIELDS, $data); 	
	curl_exec($curl);curl_close($curl);
то данные получателю не приходят. Хотя если отправлять их тем же курлом на url вида
http://some_wp_site/test.php то данные приходят... я уже устал искать причину. Может кто-то знает чего делать?
 

Kotyara

Новичок
сравни что отправляется браузером и что отправляется курлом...
и найди отличия
 

unlex

Новичок
отличия заключается в том, что content-length = 0 в случае отправки курлом. хотя если отправлять на
PHP:
 http://some_wp_site/test.php
, то хоть заголовки и пустые, но данные приходят. хз
 

unlex

Новичок
да, я перепутал. в случае отправки курлом вообще POST-заголовков нет...
 

unlex

Новичок
вот в чем дело - при обращении курлом к данной странице вордпресс редиректит на wp-login.php для проверки пользователя. поэтому данные и не доходят. далее буду думать как обратиться к методам плагина, минуя админ-часть...
 

Kotyara

Новичок
вот с этого и надо было начинать...
зачем обходить, если можно авторизоваться...
 

unlex

Новичок
Плагин должен принимать от внешнего скрипта данные и постить их в базу. Как вызывать функции вордпресса, то есть связывать функции плагина с ними я вроде понял. Непонятно другое. К примеру, я создал файл test.php и поместил в корневой каталог вордпресса. Как получить доступ к методам плагина из этого файла? Или хотя бы как обратиться к плагину кроме как /wp-admin/admin.php?page=my_plugin.php ?
Потому что скрипт с внешки курлом данные по вышеобозначенной ссылке то шлет, но получается редирект на файл авторизации, так как указанный скрипт лежит в админке, что не есть хорошо. А мне надо напрямую получить доступ к функционалу плагина.

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

Уверен есть какие-то способы решения проблемы без того чтобы писать какие-то приблуды для авторизации. не может быть чтобы доступ к методам плагина шел только через админку. Наверное мне надо на форум wordpress'а. Но русские мертвые все. Придется к буржуям лезть, если тут не помогут. )
 

Kotyara

Новичок
кхм... да курл тут конечно не при чем...
что при отправке формы через браузер, ты не залогинен?

"не может быть чтобы доступ к методам плагина шел только через админку" - значит так предусмотрено разработчиком плагина...

"приблуды для авторизации" - не так уж и обременительны...
 

unlex

Новичок
"значит так предусмотрено разработчиком плагина" - разработчик плагина - я )) в том то и дело, что я не знаю что тут предусмотреть

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

mazzagavazza

Новичок
так может в плагине должен быть предусмотрен прием данных без авторизаци? или, чтоб плагин сам логинился, а потом постил данные в базу :)
 

unlex

Новичок
Да, это уже в Wordpress надо лезть глубже, что не входит в план моих действий на ближайшее будущее. Так что вынес я необходимый мне функционал из плагина в обычный пхп-файл в корневой директории wp. Теперь все ок.
 
Сверху