Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Invision Board » Автоматическое создание тем

Модерирует : Antuan, Dekker

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

helpix

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочется необычной вещи. Есть сайт www.helpix.ru . На нем ежедневно публикуется какое-то количество материалов. Публикацией ведает некая программа (на perl) - текст статьи и разные параметры вводятся в web-форму, всё это дело сохраняется, перестраиваются страницы и т.д.
 
Хочется, чтобы в момент публикации, автоматически создавалась новая тема. Для обсуждения этой самой публикации. По типу того, как обсуждаются новости на lenta.ru, например. Т.е., грубо говоря, в некий "черный ящик" отдаются желаемые название/описание/текс темы, идентификатор форума, юзер/пароль, в ответ "ящик" отдает url вновь созданной темы.
 
Возможно ли сделать нечто такое для Invisionboard? Точнее понятно, что возможно... Вопрос - насколько сложно?  И как? Дело осложняется тем, что php я пока не знаю. В принципе, вполне подойдет какой-нибудь script.php, который можно вызвать по методу post из программы, например.
 
Был бы крайне благодарен за помощь в реализации чего-то подобного. В неограниченных размерах в пределах разумного
 
Георгий (Юра) Киселев

Всего записей: 8 | Зарегистр. 17-06-2003 | Отправлено: 12:15 17-06-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
helpix
Собственно создание темы из скрипта - простейшая вещь. Одна операция, если известно имя юзера, текст сообщения и проч. инфа. А вот как это интегрировать с Перлом? Есть идеи? В части IPB помогём.

----------
Русская поддержка по IP.Board на IBResource.ru.
Для счастья нужно: национальный трекер и поисковик!

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 12:37 17-06-2003
ZiLot



Тот еще тип
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
helpix
Посмотри, какие переменные передаются из формы ответа, куда передаются. И потом вызывай эту страницу с нужными тебе параметрами.
Это теория. Как сделать, на практике подсказать не смогу, т.к. перла я совсем не знаю...

Всего записей: 936 | Зарегистр. 12-11-2002 | Отправлено: 12:50 17-06-2003
helpix

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
theIggs,
 
Да, считаем, что вся инфа известна. Я тут поразмыслил, похоже, мне действительно удобнее всего было бы, если бы интеграция осуществлялась столь идиотским способом, как метод post, т.е. просто эмуляция ввода формы. Т.е. я в перле просто вызываю
http://мойфорум.ru/script.php, передаю ему по методу post все параметры.
 
А script.php разбирает входные параметры - и, собственно, создает тему, выдавая в stdout url.  
 
На самом деле, подобное построение взаимодействия дало бы мне возможность легко выкрутиться из ситуации, когда форум и основной сайт (т.е. скрипт) живут на разных хостингах. Что весьма возможно.
 
Георгий (Юра) Киселев
 
Добавлено
ZiLot,
 
Пробовал. Это не пройдет. Т.к. в таком случае обломается авторизация. Тема, кстати, создастся, но гостем. Тоже вариант, конечно, но некрасивый.
 
Георгий (Юра) Киселев

Всего записей: 8 | Зарегистр. 17-06-2003 | Отправлено: 12:50 17-06-2003 | Исправлено: helpix, 12:56 17-06-2003
ZiLot



Тот еще тип
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
helpix
А имя пользователя и пароль там не передаются? (просто сейчас нет под рукой Инвидиона, чтоб самому посмотреть)

Всего записей: 936 | Зарегистр. 12-11-2002 | Отправлено: 13:03 17-06-2003
helpix

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZiLot,
Нет, конечно. Только идентификатор сессии. Пытаться же эмулировать сессию, т.е. программно производить логин, а уж потом создавать тему... Во-первых, очень уж "кривой" способ, во-вторых, у меня нет уверенности, что хватит мастерства это дело корректно запрограммировать.
 
Георгий (Юра) Киселев

Всего записей: 8 | Зарегистр. 17-06-2003 | Отправлено: 13:08 17-06-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так, я что-то не понимаю. Имя пользователя передавать не хотим. А какой идентификатор сессии передавать - той сессии, что открыта perl-скриптом? У инвижна сессии свои. Как инвижн узнает, кто вообще хочет запостить? helpix, объясняй во всех подробностях, от чьего имени постить новую тему...


----------
Русская поддержка по IP.Board на IBResource.ru.
Для счастья нужно: национальный трекер и поисковик!

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 15:02 17-06-2003
helpix

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
theIggs,
Передавать или нет имя пользователя - мне всё равно. Можно и передать. Или жестко зашить внутрь php. Пользователь - один из пользователей IB, можно считать, для простоты, что жестко заданный. Или не считать.
 
Итого: скрипту на perl известны: имя пользователя, пароль пользователя, тема/описание/текст темы, номер форума, где создавать тему.
 
Скрипту на php известны логин/пароль доступа к базе.
 
Скрипт на perl живет вообще на другой машине, чем скрипт на php. Скрипт на perl умеет вызывать скрипт на php и передавать ему параметры а-ля форма на www. Ни о каких сессиях скрипт на perl не знает, он вообще может выполняться "как программа" (допустим, я захочу создать темы для тех двух тысяч текстов, которые сейчас есть у меня на сайте).
 
Итого: скрипт на php должен принять данные как из обычной простой формы и "что-то сделать", в результате чего родится новая тема. У меня есть подозрение, что это "что-то" - это пара операций insert. Впрочем, могу и ошибаться.

Всего записей: 8 | Зарегистр. 17-06-2003 | Отправлено: 15:17 17-06-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
helpix

Цитата:
У меня есть подозрение, что это "что-то" - это пара операций insert.

Три операции.
Всё понял, сегодня сделаем.

----------
Русская поддержка по IP.Board на IBResource.ru.
Для счастья нужно: национальный трекер и поисковик!

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 15:59 17-06-2003
helpix

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Минимум четыре, imho
topics - insert  
posts - insert
forums - update
members - update
Интересно, всё ли я нашел?
 
Добавлено
Не всё. Еще stats - тоже update. Итого пять.

Всего записей: 8 | Зарегистр. 17-06-2003 | Отправлено: 16:32 17-06-2003
theIggs



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
helpix
Стремление к правильности - это хорошо. А ведь есть ещё пользователи, которые подписаны автоматом на все новые темы... Если и их учесть, это ж вообще монструозный скрипт получится.
Ушёл в эксперимент.
 
 
Добавлено
Итак, я юзал POST для сего скрипта простым методом:
http://localhost/forum/script.php?f=1&title=Новая%20тема&descr=Без%20описания&post=Привет,%20чуваки!%20Всё%20путём&name=theIggs
 
Здесь
f - ID форума;
title - название темы;
descr - описание темы;
name - имя юзера (если имя, переданное из Перла, совпадает с именем в базе mySQL, то пост присваивается этому мемберу, иначе Гостю с таким именем),
post - собственно текст поста
 
helpix
Смотри, что неправильно.
 

Код:
<?php
 
require "./sources/functions.php";
 
$std = new FUNC;
 
require "./conf_global.php";
 
$INFO['sql_driver'] = !$INFO['sql_driver'] ? 'mySQL' : $INFO['sql_driver'];
 
require ("./sources/Drivers/".$INFO['sql_driver'].".php");
 
$DB = new db_driver;
 
$DB->obj['sql_database']     = $INFO['sql_database'];
$DB->obj['sql_user']         = $INFO['sql_user'];
$DB->obj['sql_pass']         = $INFO['sql_pass'];
$DB->obj['sql_host']         = $INFO['sql_host'];
$DB->obj['sql_tbl_prefix']   = $INFO['sql_tbl_prefix'];
 
$DB->connect();
 
$ibforums->input = $std->parse_incoming();
 
$DB->query("SELECT id FROM ibf_members WHERE name = '".$ibforums->input['name']."' LIMIT 1");
if ( $DB->get_num_rows() ) {
$row = $DB->fetch_row();
} else {
$row['id'] = '0';
$ibforums->input['name'] = "-".$ibforums->input['name']."-";
}
 
$ibforums->input['m'] = $row['id'];
 
$db_string = $std->compile_db_string( array (
'title'=> $ibforums->input['title'],
'description'=> $ibforums->input['descr'],
'state'=> 'open',
'posts'=> '0',
'views'=> '0',
'starter_id'=> $ibforums->input['m'],
'start_date'=> time(),
'last_poster_id'=> $ibforums->input['m'],
'last_post'=> time(),
'starter_name'=> $ibforums->input['name'],
'last_poster_name'=> $ibforums->input['name'],
'forum_id'=> $ibforums->input['f'],
'approved'=> '1',
)
    );
 
$DB->query("INSERT INTO ibf_topics (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");        
 
$tid = $DB->get_insert_id();
 
$db_string = $std->compile_db_string( array (
'author_id'=> $ibforums->input['m'],
'author_name'=> $ibforums->input['name'],
'use_sig'=> '1',
'use_emo'=> '1',
'post_date'=> time(),
'post'=> $ibforums->input['post'],
'topic_id'=> $tid,
'forum_id'=> $ibforums->input['f'],
'queued'=> '0',
'new_topic'=> '1',
)
    );
 
$DB->query("INSERT INTO ibf_posts (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")");        
 
$DB->query("UPDATE ibf_forums SET topics = topics + 1, last_post = '".time()."', last_poster_id = '".$ibforums->input['m']."', last_poster_name = '".$ibforums->input['name']."', last_title = '".$ibforums->input['title']."', last_id = '".$tid."' WHERE id = '".$ibforums->input['f']."'");
 
$DB->query("UPDATE ibf_members SET posts = posts + 1 WHERE id = '".$ibforums->input['m']."'");
 
$DB->query("UPDATE ibf_stats SET TOTAL_TOPICS = TOTAL_TOPICS + 1 LIMIT 1");
 
?>

 
Или скачать: http://www.nvkz.net/thrashmp3/hack/script.php


----------
Русская поддержка по IP.Board на IBResource.ru.
Для счастья нужно: национальный трекер и поисковик!

Всего записей: 1114 | Зарегистр. 13-11-2002 | Отправлено: 19:02 17-06-2003 | Исправлено: theIggs, 21:06 17-06-2003
helpix

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
theIggs,
Класс! Работает! Спасибо огромное!
Мелкие недоработки: не было проверок на пустоту полей ввода и существование такого форума. Но это я уже добавил напильником по месту, после того, как заимел в базе записи, относящиеся к форуму номер 18, которого у меня сроду не было

Всего записей: 8 | Зарегистр. 17-06-2003 | Отправлено: 17:07 18-06-2003
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Invision Board » Автоматическое создание тем


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru