Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Ошибка при выполнении запроса именно в functions_post.php

Форум для авторов модов для phpBB 2.0.x.
CyberDragon
phpBB 1.0.0
Сообщения: 1
Стаж: 15 лет 1 месяц

Ошибка при выполнении запроса именно в functions_post.php

Сообщение CyberDragon »

Требуется выполнить вот такой код

Код: Выделить всё

			$sql = 'SELECT * 
				FROM ' . CONFIRM_TABLE . " 
				WHERE confirm_id = '$confirm_id' 
				AND session_id = '" . $userdata['session_id'] . "'";

				
			if (!($result = $db->sql_query($sql)))
			{
				message_die(GENERAL_ERROR, 'Could not obtain confirmation code', '', __LINE__, __FILE__, $sql);
			}
Запрос составлен правильно, вот он если его вывести с помощью echo:

Код: Выделить всё

SELECT * FROM phpbb_stroyplanerka_confirm WHERE confirm_id = '9feac95a3255c8bd0f849e910eb70540' AND session_id = '81e1278f64fc2db36adb32d51440b0c3'
Вне данного файла выполняется на раз - ставил его перед вызовом процедуры. Но в файле Posting.php у меня вызывается функция prepare_post из functions_post.php (подкючается в самом начале "include($phpbb_root_path . 'includes/functions_post.'.$phpEx);") и функция sql_query в этом коде выдаёт 500 ошибку.

Из за чего это происходит? Что такого особенного именно в данном файле, если везде в других местах этот код не вызывает ошибок?

Вот вызов функции (отмечено жирным)

Код: Выделить всё

...$conf_id = ( !empty($HTTP_POST_VARS['confirm_id']) ) ? $HTTP_POST_VARS['confirm_id'] : '';...
	prepare_post($mode,$conf_id, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);
вот код функции (место возникновения ошибки отмечено "!!!!!!!!!!!!!!!!!!!!!!!!!!!")

Код: Выделить всё

function prepare_post(&$mode,&$conf_id, &$post_data, &$bbcode_on, &$html_on, &$smilies_on, &$error_msg, &$username, &$bbcode_uid, &$subject, &$message, &$poll_title, &$poll_options, &$poll_length)
{
	global $board_config, $userdata, $lang, $phpEx, $phpbb_root_path;

	// Check username
	
	if (!empty($username))
	{
		$username = phpbb_clean_username($username);

		if (!$userdata['session_logged_in'] || ($userdata['session_logged_in'] && $username != $userdata['username']))
		{
			include($phpbb_root_path . 'includes/functions_validate.'.$phpEx);

			$result = validate_username($username);
			if ($result['error'])
			{
				$error_msg .= (!empty($error_msg)) ? '<br />' . $result['error_msg'] : $result['error_msg'];
			}
		}
		else
		{
			$username = '';
		}
	}
	
	
	if ($board_config['enable_confirm'] && $mode == 'newtopic')
	{
		if (empty($conf_id))
		{
			echo "NET?!";
			$error = TRUE;
			$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
		}
		else
		{
			$confirm_id = htmlspecialchars($conf_id);
			if (!preg_match('/^[A-Za-z0-9]+$/', $confirm_id))
			{
				$confirm_id = '';
			}
			
			$sql = 'SELECT * 
				FROM ' . CONFIRM_TABLE . " 
				WHERE confirm_id = '$confirm_id' 
				AND session_id = '" . $userdata['session_id'] . "'";

!!!!!!!!!!!!!!!!!!!!!!!!!!!	
			if (!($result = $db->sql_query($sql)))
			{
				message_die(GENERAL_ERROR, 'Could not obtain confirmation code', '', __LINE__, __FILE__, $sql);
			}
!!!!!!!!!!!!!!!!!!!!!!!!!!!
			

			if ($row = $db->sql_fetchrow($result))
			{
				if ($row['code'] != $confirm_code)
				{
					$error = TRUE;
					$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
				}
				else
				{
					$sql = 'DELETE FROM ' . CONFIRM_TABLE . " 
						WHERE confirm_id = '$confirm_id' 
							AND session_id = '" . $userdata['session_id'] . "'";
					if (!$db->sql_query($sql))
					{
						message_die(GENERAL_ERROR, 'Could not delete confirmation code', '', __LINE__, __FILE__, $sql);
					}
				}
			}
			else
			{		
				$error = TRUE;
				$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Confirm_code_wrong'];
			}
			$db->sql_freeresult($result);
		
		
		}
	}

	// Check subject
	if (!empty($subject))
	{
		$subject = htmlspecialchars(trim($subject));
	}
	else if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post']))
	{
		$error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Empty_subject'] : $lang['Empty_subject'];
	}

	// Check message
	if (!empty($message))
	{
		$bbcode_uid = ($bbcode_on) ? make_bbcode_uid() : '';
		$message = prepare_message(trim($message), $html_on, $bbcode_on, $smilies_on, $bbcode_uid);
	}
	else if ($mode != 'delete' && $mode != 'poll_delete') 
	{
		$error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Empty_message'] : $lang['Empty_message'];
	}

	//
	// Handle poll stuff
	//
	if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post']))
	{
		$poll_length = (isset($poll_length)) ? max(0, intval($poll_length)) : 0;

		if (!empty($poll_title))
		{
			$poll_title = htmlspecialchars(trim($poll_title));
		}

		if(!empty($poll_options))
		{
			$temp_option_text = array();
			while(list($option_id, $option_text) = @each($poll_options))
			{
				$option_text = trim($option_text);
				if (!empty($option_text))
				{
					$temp_option_text[intval($option_id)] = htmlspecialchars($option_text);
				}
			}
			$option_text = $temp_option_text;

			if (count($poll_options) < 2)
			{
				$error_msg .= (!empty($error_msg)) ? '<br />' . $lang['To_few_poll_options'] : $lang['To_few_poll_options'];
			}
			else if (count($poll_options) > $board_config['max_poll_options']) 
			{
				$error_msg .= (!empty($error_msg)) ? '<br />' . $lang['To_many_poll_options'] : $lang['To_many_poll_options'];
			}
			else if ($poll_title == '')
			{
				$error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Empty_poll_title'] : $lang['Empty_poll_title'];
			}
		}
	}

	return;
}
З.Ы. Форум облазил вдоль и поперёк, но ручаться не могу, так как слишком много уже инфы накопилось, поэтому если есть ответ на мой вопрос, то сносите тему, мне не жалко, но ссылочку на ответ скинте в личку плиз.
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2208
Стаж: 16 лет 3 месяца
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 339 раз
Контактная информация:

Re: Ошибка при выполнении запроса именно в functions_post.php

Сообщение nissin »

Код: Выделить всё

global $db;
Всё повторяется. nurlan.info
Закрыто

Вернуться в «Для авторов (phpBB 2.0.x)»