Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2018-02-15 20:34:29

ugadaykin
Участник
Зарегистрирован: 2016-03-12
Сообщений: 20

Не получается сделать автоматический постинг

Доброго дня!
Имеется сайт о жилье, установил FluxBB - все летает, приятно.
Добавить решил сервис объявлений - в окошке вводишь имя, город, телефон, описание квартиры и выбираешь куплю/продам/найм/сдам.
Потом кнопку отправить - и автоматический пост в нужную ветку форума.

Так вот, анализирую код, нашел файл post.php - оставил от него рожки да ножки

<?php

/**
 * Copyright (C) 2008-2012 FluxBB
 * based on code by Rickard Andersson copyright (C) 2002-2008 PunBB
 * License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 */
error_reporting( E_ALL );
ini_set('display_errors', 1);

define('PUN_ROOT', dirname(__FILE__).'/');
require PUN_ROOT.'include/common.php';

$poster = "admin";
$poster_id = 2;
$poster_ip = "127.0.0.1";
$message = "qwerty";
$hide_smiles = 0;
$posted = time();echo $posted."___";
$topic_id = 6;
$user_agent = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:16.0) Gec";

echo 1;
$db->query('INSERT INTO flux_posts (poster, poster_id, poster_ip, message, hide_smilies, posted, topic_id, user_agent) VALUES($poster, $poster_id, $poster_ip, $message, $hide_smilies, $posted, $topic_id, $user_agent)' or error('Unable to create post', __FILE__, __LINE__, $db->error()));

echo 2;
$new_pid = $db->insert_id();
echo 33;

Однако пост не добавляет, ветка форума с Id равным 6 - создана, там вручную пост добавил - все ок.
Всключил оторбажение ошибок - нет их!

Подскажите что делать)))
С уважением, Владимир

Offline

#2 2018-02-15 20:54:07

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: Не получается сделать автоматический постинг

Обратите внимание на метод $db->escape() используемый для безопасной вставки строковых данных в запрос. Вот запрос из кода движка:

$db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_ip, poster_email, message, hide_smilies, posted, topic_id, user_agent) VALUES(\''.$db->escape($username).'\', \''.$db->escape(get_remote_address()).'\', '.$email_sql.', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$tid.', \''.$db->escape($_SERVER['HTTP_USER_AGENT']).'\')') or error('Unable to create post', __FILE__, __LINE__, $db->error());

+ нужно делать обновление топика сообщения:

			// Update topic
			$db->query('UPDATE '.$db->prefix.'topics SET num_replies=num_replies+'.($merged ? '0' : '1').', last_post='.$now.', last_post_id='.$new_pid.', last_poster=\''.$db->escape($username).'\' WHERE id='.$tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());

+ обновление поискового индекса:

			update_search_index('post', $new_pid, $message);

+ обновление раздела

			update_forum($cur_posting['id']);

Примеры кода взяты из файла post.php моей сборки.

Offline

#3 2018-02-15 21:40:02

ugadaykin
Участник
Зарегистрирован: 2016-03-12
Сообщений: 20

Re: Не получается сделать автоматический постинг

Висман, спасибо, буду разбираться. Когда получиться - будет удобная штука для пользователей форума.

Offline

#4 2018-02-16 21:13:41

ugadaykin
Участник
Зарегистрирован: 2016-03-12
Сообщений: 20

Re: Не получается сделать автоматический постинг

Вставил такой код, выдает

An error was encountered
File: /var/www/user/data/www/site.ru/forum/post-vova.php
Line: 25

FluxBB reported: Unable to create post

Database reported: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@gmail.com, 'qwerty', 0, 1518804732, 6, 'Mozilla/5.0 (X11; Ubuntu; Linux i686; r' at line 1 (Errno: 1064)

Что-то не так в синтаксисе MySQL, но вот что?


<?php

/**
 * Copyright (C) 2008-2012 FluxBB
 * based on code by Rickard Andersson copyright (C) 2002-2008 PunBB
 * License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 */
error_reporting( E_ALL );
ini_set('display_errors', 1);

define('PUN_ROOT', dirname(__FILE__).'/');
require PUN_ROOT.'include/common.php';
echo PUN_ROOT.'include/common.php'."<br/>";

$poster = "admin"; $username = $poster;
$poster_id = 2;
$poster_email = "[email protected]";
$poster_ip = "127.0.0.1";
$message = "qwerty";
$hide_smilies = 0;
$posted = time();$now=$posted; ;
$topic_id = 6;$tid=$topic_id;
$user_agent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0";

$db->query('INSERT INTO flux_posts (poster, poster_ip, poster_email, message, hide_smilies, posted, topic_id, user_agent) VALUES(\''.$db->escape($username).'\', \''.$db->escape(get_remote_address()).'\', '.$poster_email.', \''.$db->escape($message).'\', '.$hide_smilies.', '.$now.', '.$tid.', \''.$db->escape($_SERVER['HTTP_USER_AGENT']).'\')') or error('Unable to create post', __FILE__, __LINE__, $db->error());

$new_pid = $db->insert_id();

// Update topic
$db->query('UPDATE flux_topics SET num_replies=num_replies+'.($merged ? '0' : '1').', last_post='.$now.', last_post_id='.$new_pid.', last_poster=\''.$db->escape($username).'\' WHERE id='.$tid) or error('Unable to update topic', __FILE__, __LINE__, $db->error());

//update search index
update_search_index('post', $new_pid, $message);

update_forum($cur_posting['id']);

Редактировался ugadaykin (2018-02-16 21:14:15)

Offline

#5 2018-02-17 06:05:51

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: Не получается сделать автоматический постинг

'.$poster_email.'

-->

\''.$db->escape($poster_email).'\'

Offline

#6 2018-03-04 19:34:29

ugadaykin
Участник
Зарегистрирован: 2016-03-12
Сообщений: 20

Re: Не получается сделать автоматический постинг

Сделал как Вы написали и изменил внизу, иначе выдавало ошибку (так как $cur_posting['id'] была пустой).

//update_forum($cur_posting['id']);
update_forum($topic_id);

Не работает.

Offline

#7 2018-03-05 05:10:01

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,236
Сайт

Re: Не получается сделать автоматический постинг

@ugadaykin, в $topic_id у вас номер темы, а в эту функцию нужно номер раздела (форума) передавать, в котором тема обновилась.

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens