постинг в друпал скриптом php

Главные вкладки

Аватар пользователя tema01 tema01 25 июня 2010 в 13:08

У меня есть сайт на друпал. Я Хочу запустив на локалхосте php скрипт открыть сайт на друпале, залогиниться под пользователем (логин создан заранее), выбрать "создать материал" и выбрать тип материала (к примеру page), записать во вновь созданную страницу переменные $eto_title; $eto_text; $eto_termin_taxonomy; $eto_url; $eto_description. Сохранить вновь созданную страницу.
Переменная $eto_text будет в формате html разметки. То есть произвести постинг страницы.
зы
пожалуйста http://drupal.org/project/import_html не предлагайте, я хочу разобраться как производится постинг, а не как заливать контент на сайт.
зызы
Как пример начало программы:

<?php
$eto_login='admin';
$eto_parol='qwerty';
$eto_title='привет';
$eto_text='<p>привет ребята как <b>ваши дела</b>?</p>';
$eto_termin_taxonomy='приветствие, добрые пожелания, хорошие слова';
$eto_url='privet.html';
$eto_description='Перейдя на страницу вы увидите приветсвие';
//А вот здесь надо как то постинг написать.
?>

Комментарии

Аватар пользователя tema01 tema01 25 июня 2010 в 13:22

«node_save() и не ипать моск»
нет такой способ мне тоже не подходит. Мне нужен постинг с локал хоста на внешний "мой сайт". Я могу повключать туда всякие модули (на свой сайт) но хочется увидеть универсальное решение для постинга на сайт друпал с локалхоста.

Аватар пользователя seaji seaji 25 июня 2010 в 13:36

Ага, включите на своем удаленном сайте модуль API для блогов (входит в системные) и дальше юзайте API для постинга.

Аватар пользователя tema01 tema01 25 июня 2010 в 13:39

«Ага, включите на своем удаленном сайте модуль API для блогов (входит в системные) и дальше юзайте API для постинга.»
вот это очень интересно, почитаю.
Тем не менее, а есть еще варианты?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 25 июня 2010 в 13:43

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

Аватар пользователя tema01 tema01 25 июня 2010 в 14:02

«Можете блог-клиент какой-нить приспособить.»
ага пробовал, получается. Тоже (иногда) удобнее, чем стандартными способами. Но хочется узнать как еще можно постить.
«сам писал, но выкладывать не буду, так как будут использовать в плохих целях»
использовать для спама?

Аватар пользователя graker graker 25 июня 2010 в 16:21

Под новостями я имел в виду любую ленту новых модулей Друпала.
Поискать можно на drupal.org, или drupalmodules.com. На последнем очень удобный поиск по модулям.

В данном конкретном случае я имел в виду модуль Quick and Dirty Raw Data Import. Не знаю, подойдет ли он вам, привожу просто как альтернативный вариант.

Аватар пользователя tema01 tema01 25 июня 2010 в 16:26

«Под новостями я имел в виду любую ленту новых модулей Друпала.»
понятно большое спасибо. Постараюсь разобраться. В принципе тоже интересно.

Аватар пользователя edhel edhel 26 июня 2010 в 12:17

1) написать небольшой модуль на стороне дрюпала, который в параметрах берет все данные (включая логин и пароль), проверяет логин и папроль, делает node_save

2) тоже самое можно сделать через xml-rpc, но модуль всё равно писать надо (просто другой механизм передачи параметров будет)

3) напрямую коннектиться к mysql и править таблички дрюпала

4) можно и без написания модуля на стороне дрюпала, если имитировать поведение браузера: а) загрузить форму для входа и запомнить cookies, б) отправить форму для входа методом POST вместе с cookies (желательно опять запомнить новые cookies), в) отправить форму добавления ноды методом POST. Между (б) и (в) возможно придется загрузить форму добавления ноды для получения скрытых генерируемых полей форм, хотя может и без них обойдется.

Аватар пользователя tema01 tema01 26 июня 2010 в 13:01

вот 4 пункт. Как бы цель топика понять как вообще такое делается. для этого мне бы увидеть готовый код на php, который работает, а уже потом думать надо мне это или не надо и как проще и т.п.
Лично у меня ума написать такой код пока не хватает, другие способы мне предложили (но не такие как я спрашивал). Чо делать? Пока ничего не делать, потом видимо придеться научиться абсолютно самостоятельно.
зы
хотел рассмотреть такое на друпале, потому как там это так просто /add/node/1 и больше ничего не надо, никаких сложных перемещений.

Аватар пользователя riyuzakki riyuzakki 26 июня 2010 в 14:08

Почитайте про cURL. Его функционал есть в пхп.

"tema01" wrote:
для этого мне бы увидеть готовый код на php

Весьма сомневаюсь, что Вам предоставят готовый код.

Аватар пользователя Sinkora Sinkora 26 июня 2010 в 15:07

"riyuzakki" wrote:
Почитайте про cURL. Его функционал есть в пхп.

Недавно, помню, здесь на сайте кто-то ночью запостил сотни однотипных топиков. Да, с помощью cURL несложно сделать скрипт, который будет автоматически делать постинг материалов. Поэтому на нормальных сайтах всегда должно учитываться это. Т.е. нужно или ограничивать количество постингов в день на одного юзера, или ставить капчу, а лучше создавать нормальную систему модерации. Иначе, если не застраховаться, то можно проснуться утром, зайти на свой сайт - а там тыщи нехороших постов:)
Это касается и комментариев на сайте.

ТС, почитаешь про cURL, и сможешь сделать сам себе нужный скрипт.

Аватар пользователя Sinkora Sinkora 26 июня 2010 в 15:40

"RxB" wrote:
Извиняюсь, ещё не проснулся, буквы задваяюца:
http://sourceforge.net/projects/snoopy/[/quote]
Ага, спасибо. Помню, слышал как-то про него. Мне нравятся такие штучки. Когда-то кУРЛОм пользовался, теперь попробую на досуге и Snoopy.

Аватар пользователя tema01 tema01 26 июня 2010 в 16:14

«Недавно, помню, здесь на сайте кто-то ночью запостил сотни однотипных топиков.»
я осознаю, что тут опасаются спама. Правда спамить разумней хрумером Smile
А то ведь я не могу сделать простейшие вещи, неужели вы думаете я смогу антигэйт прикрутить и заспамить кого нибудь? Но вы опасаетесь спама - это правильно, я согласен.
«ТС, почитаешь про cURL, и сможешь сделать сам себе нужный скрипт.»
спасибо я обязательно почитаю. Только вы меня переоцениваете, я наверняка этого не смогу написать. Я реально слаб в программировании. Я последовательно почитаю все ссылки, которые мне дали на друпале, а затем (если кода не попадется) я просто спрошу на античате. Так как на античате много программистов, мне просто напишут эти 10-20 команд, и не будут ничего обсуждать.
зы
кстати в тему. А если расширить понятие постинга на сайт?
1. Есть ли в друпале модуль постинга с мыла? как пример в вордпрессе http://codex.wordpress.org/Blog_by_Email
2. Есть ли модуль постинга с icq, скайпа да и ваще джабер клиентов?
3. В какой формат (каким модулем) правильнее сливать базы друпала и заливать их на другой сайт. Допустим, если друпал разных версий.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 26 июня 2010 в 16:19

"tema01" wrote:

1. Есть ли в друпале модуль постинга с мыла? как пример в вордпрессе http://codex.wordpress.org/Blog_by_Email[/quote]
Пройдите, пожалуйста, в гугл, 5 секунд и я нашёл: http://drupal.org/node/39172
"tema01" wrote:
2. Есть ли модуль постинга с icq, скайпа да и ваще джабер клиентов?

Читать выше
"tema01" wrote:
3. В какой формат (каким модулем) правильнее сливать базы друпала и заливать их на другой сайт. Допустим, если друпал разных версий.

Без комментариев

Аватар пользователя tema01 tema01 26 июня 2010 в 16:43

«Потому что: Базы друпала»
вы совершенно правы. Для меня сайты уже давно только контент и траф на них. На каком все это сидит движке, да и на движке ли... Мне не важно. Но вы правы, надо было уточнить в каком виде удобней переносить контент с сайта друпал, на другой сайт. Допустим, соединить два варезника или раскидать контент между несколькими сайтами.
Но на все есть ответ в гугле, да?

Аватар пользователя edhel edhel 27 июня 2010 в 6:27

У меня есть пример кода с вариантом (4), но он для случая, когда отправка ноды доступна анонимам. С авторизацией будет посложнее:

<?php
foreach($params as $var => $value) $query .= '&' . $var . '=' . urlencode($value);
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded\r\n',
'content' => $query,
),
));
file_get_contents($url, false, $context);
?>

$params заполняется выше конкретными значениями формы. В принципе прокатывало без хитрых скрытых полей, но для зарегеных может и не прокатить. Из особых полей используется только "op" (название кнопки для отправки вроде).