Штатный механизм голосования за элемент инфоблоков не подразумевают запись времени и ip, только факт голосования. Если Вы хотите делать сделать такое голосование, Вам нужно либо создавать опросы, либо использовать свою таблицу.
Давайте разберемся с Вашей ситуацией:
создала отдельный файл voting.php в шаблоне компонента
Скорее всего Вы просто создали файл. И в нем соответственно НЕ подключили служебную часть.
Я бы рекомендовал Вам
использовать ORM Битрикса для такой ситуации (очен....
Но как быстрое решение, можно и прямой запрос в базу (хотя это будет менее элегантное решение).
В таком случае код будет выглядеть как-то так:
<?
require $_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php";
/**
* Тут можете проверить, что все переменные пришли
* Я для себя буду использовать переменные:
* - ELEMENT_ID
* - USER_ID
*
* Просто писать факт голосования.
* В таблицу project_element_vote ( ID, ELEMENT_ID, USER_ID )
*/
global $USER;
/* @var object Объект приложения */
$oApplication = \Bitrix\Main\Application::getInstance();
/* @var object Объект соединения с БД */
$oConnection = $oApplication->getConnection();
/* @var object Хелпер для безопасной записи в БД*/
$oHelper = $oConnection->getSqlHelper();
/* @var object Объект для работы с входящими переменными */
$oRequest = $oApplication->getContext()->getRequest();
if ( $oRequest->isAjaxRequest() && !empty( $oRequest->get('ELEMENT_ID') ) )
{
$iUser = $USER->GetId();
$iElement = $oHelper->forSql( $oRequest->get('ELEMENT_ID') );
$sql = "INSERT INTO project_element_vote('ELEMENT_ID','USER_ID') VALUES ('{$iElement}','{$iUser}')";
$res = $oConnection->query($sql);
if ( $res )
{
echo 'ok';
die();
}
}
echo 'bad';