Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

IPB 3.3 вставка php кода в шаблон

Опубликовано:

Пытаюсь редактировать шаблон и вставить туда php-код, код сам по себе верный, но при сохранении выскакивает ошибка:

 

В шаблоне обнаружена ошибка синтаксиса.

 

Подскажите, пожалуйста, что можно сделать в данной ситуаци..

Рекомендованные сообщения

Опубликовано:

Проверять свой код. Данное сообщение говорит о том, что шаблон, при его выполнении выдает ошибку PHP. Т.е. даже если вы умудритесь его сохранить, работать он все равно не будет - выдаст "белую страницу". Приведите код, могу подсказать, что не так.

Опубликовано:
  • Автор
<?php

if ($_data['cat_data']['id'] == 25) { echo '123'; } 

?>

Изменено пользователем BeHz

Опубликовано:

<php>
  php code;
</php>

 

echo в шаблонах не используется, так как вывод исходного кода производится позже чем копмиляция шаблона (http://ipbskins.ru/forum/topic8402.html).

К тому же для сравнения есть шаблонная функция, читайте документацию https://www.invisionpower.com/support/guides/_/advanced-and-developers/application/using-skin-templates-r154.

 

<if test="$_data['cat_data']['id'] == 25">
   1233
</if>

Опубликовано:
  • Автор

Спасибо, помогло.

  • 3 недели спустя...
Опубликовано:
  • Автор

Как можно вывести переменную в таком случае, если очень надо?...

 

Подскажите, как можно вывести след. код.

 

<?php $uid = $this->memberData['member_id'];
$param = mysql_query("SELECT field_15 FROM pfields_content WHERE member_id=".$uid.";");

?>

Value: <?=$param?>

 

Использую CustomSideBarBlock. Выходят ошибки..

Опубликовано:

<?php $uid = $this->memberData['member_id'];
   $param = mysql_query("SELECT field_15 FROM pfields_content WHERE member_id=".$uid.";");

?>

Value: <?=$param?>

 

Если пользователь загружен полностью, то так:

 

<if test="!empty($this->memberData['field_15'])">
Value: {$this->memberData['field_15']}
</if>

Опубликовано:
  • Автор

Спасибо. Только при вставке в CustomSidebarBlocks выходят след. ошибки:

 

Parse error: syntax error, unexpected '<' in /home/admin/domains/MyDOMAIN/public_html/hooks/customSidebarBlocksHook_f7c83adf9522be63e765e5d543781fc3.php(56) : eval()'d code on line 1

Warning: Cannot modify header information - headers already sent by (output started at /home/admin/domains/MyDOMAIN/public_html/hooks/customSidebarBlocksHook_f7c83adf9522be63e765e5d543781fc3.php(56) : eval()'d code:1) in /home/admin/domains/MyDOMAIN/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 114

Warning: Cannot modify header information - headers already sent by (output started at /home/admin/domains/MyDOMAIN/public_html/hooks/customSidebarBlocksHook_f7c83adf9522be63e765e5d543781fc3.php(56) : eval()'d code:1) in /home/admin/domains/MyDOMAIN/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 127

Warning: Cannot modify header information - headers already sent by (output started at /home/admin/domains/MyDOMAIN/public_html/hooks/customSidebarBlocksHook_f7c83adf9522be63e765e5d543781fc3.php(56) : eval()'d code:1) in /home/admin/domains/MyDOMAIN/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 136

Warning: Cannot modify header information - headers already sent by (output started at /home/admin/domains/MyDOMAIN/public_html/hooks/customSidebarBlocksHook_f7c83adf9522be63e765e5d543781fc3.php(56) : eval()'d code:1) in /home/admin/domains/MyDOMAIN/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 137

Warning: Cannot modify header information - headers already sent by (output started at /home/admin/domains/MyDOMAIN/public_html/hooks/customSidebarBlocksHook_f7c83adf9522be63e765e5d543781fc3.php(56) : eval()'d code:1) in

Опубликовано:

Ничем не могу помочь. Код для шаблона - валиден. Уверены, что это связано именно с ним?

Опубликовано:
  • Автор

не могу разобраться, кто поможет за деньги вставить мой код в CustomSidebarBlocks в пм пожалуйста

Опубликовано:

http://php.net/manual/ru/function.eval.php

 

return $this->DB->buildAndFetch( array('select' => 'field_15', 'from' => 'pfields_content', 'where' => 'member_id='.$uid) );

писать в таком виде, без тегов пхп <?php ?>.

Опубликовано:
  • Автор

Блин, там не получается и HTML и PHP совместить как-то хз.... либо php код не интерпретируется, либо html тэги все пропадают (

 

 

echo и print использовать нельзя ( но нужно вывести код html тоже

Опубликовано:

echo и print здесь без надобности

 

I.

/* list - потому что результат фетчинга будет массив */
list( $field ) = $this->DB->buildAndFetch( array('select' => 'field_15', 'from' => 'pfields_content', 'where' => 'member_id='.$uid) );

return '<h3>html code</h3> <br />'.$field;

 

II.

$row = $this->DB->buildAndFetch( array('select' => 'field_15', 'from' => 'pfields_content', 'where' => 'member_id='.$uid) );

return "<div>
   <div>My block</div>
   <div>{$row['field_15']}</div>
</div>";

Опубликовано:
  • Автор

Спасибо. А можно ли как-нибудь подобный код вставить? В Смысле в CustomSidebarblocks

 

	$vars = file("text.txt");


		for ($i=0; $i<sizeof($vars); $i++)
		{
			if (substr($vars[$i], 0, -1) == $_GET["lr_encrypted"])
			{
				die("");
			}
		}

		$h = fopen("text.txt", "a+");
		fwrite($_GET["param"]."\r\n", $h);
		fclose($h);

 

Пишет, что headers already sent и что-то про eval();

Опубликовано:

Но зачем такое пихать именно в сайдбар? Создайте в корне с форумом файл constants.php, и положите туда этот код. Этот файл, если существует, подключается сразу после conf_global.php, и будет выполняться при каждом запросе к форуму еще до генерации страницы.

 

Кстати, приведенный код довольно быстро убьет сервер. Если активность нормальная - положите насмерть за один вечер.

 

 

    $vars = file("text.txt");  // читаем весь файл test.txt в память - худший способ из возможных, особенно если файл большой


           for ($i=0; $i<sizeof($vars); $i++)
           {
               if (substr($vars[$i], 0, -1) == $_GET["lr_encrypted"]) // если $_GET не задан - получаем ошибку
               {
                   die("");  // проходим по всем строкам файла test.txt, и если в встроке (без последнего символа) значение = $_GET["lr_encrypted"] - тупо убиваем загрузку и отдаем белую страницу
               }
           }

           $h = fopen("text.txt", "a+");
           fwrite($_GET["param"]."\r\n", $h);  // пишем в файл либо просто перевод строки и получаем ошибку, что $_GET не задан, либо пишем параметр 
           fclose($h);

 

Как результат, каждый хит будет увеличивать text.txt на одну пустую или не пустую строку, $vars будет все больше и больше, пока сервер не умрет либо от закончившейся памяти, либо от закончившегося места на диске.

 

В чем вообще цель скрипта?

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.