Перейти к публикации

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

По материалам IT-Security - Долой PHP в шаблонах

Отдельно хочу выразить благодарность Александру Медведеву за найденную ошибку.

В частности, я выводил ссылки тегом {banner_name}. На 8 работает. на 8.2 - нет.

Вероятно скрипт расценивает эту вставку как один из своих баннеров и неправильно обрабатывает.

Сделал специально в выносном файле, мне так удобнее.

1.Создаем файл: splinks.php

В него вставляем:

<?php 

	 if (!defined('_SAPE_USER')){

		define('_SAPE_USER', 'хххххххххххххххххххххххххххххххххх'); 

	 }

	 require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); 

	 $sape = new SAPE_client();


	 $splink01 = '';

	 $splink01.= $sape->return_links(1); 


	 $splink02 = '';

	 $splink02.= $sape->return_links(); 

?>
И кладем этот файл в корневую папку сайта. 2.Вставляем в шаблон, где должны выводиться ссылки, теги: {splink01} {splink02} 3.Открываем index.php и находим:
$tpl->load_template ( 'main.tpl' );


Ниже вставляем:

/*******************SAPE********************/

include (ROOT_DIR."/splinks.php");

$tpl->set("{splink01}", $splink01);

$tpl->set("{splink02}", $splink02);

/*******************SAPE********************/

ВСЁ

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

Этот метод не сработал :-(

Методом перебора и экспериментов получилось запустить и сапу и линкфид.

ниже даю кусок кода index.php может кому пригодится

$tpl->set ( '{AJAX}', $ajax );
$tpl->set ( '{headers}', $metatags );

$tpl->set ( '{content}', "<div id='dle-content'>" . $tpl->result['content'] . "</div>" );
/* код сапе */

define('_SAPE_USER', 'код сапы');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$sape = new SAPE_client();
$tpl->set('{links}', $sape->return_links());

/* конец кода сапе */

/* linkfeed */
define('LINKFEED_USER', 'код линкфида');
require_once($_SERVER['DOCUMENT_ROOT'].'/'.LINKFEED_USER.'/linkfeed.php');
$linkfeed = new LinkfeedClient();
$tpl->set('{linkfeed_links}', $linkfeed->return_links());
/* linkfeed */
$tpl->compile ( 'main' );
$tpl->result['main'] = str_replace ( '{THEME}', $config['http_home_url'] . 'templates/' . $config['skin'], $tpl->result['main'] );
if ($replace_url) $tpl->result['main'] = str_replace ( $replace_url[0]."/", $replace_url[1]."/", $tpl->result['main'] );




if ($replace_url) $tpl->result['main'] = str_replace ( $replace_url[0], $replace_url[1], $tpl->result['main'] );

eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');

$tpl->global_clear ();
$db->close ();[/codebox]

Ссылка на сообщение
Поделиться на других сайтах

ну да оба случая не самым лучшим образом реализованы опять не обошлось без правки кода

вот способ подключения sape создайте в корне папку snippets поместите туда два файла следующего содержания

файл sape.php

<?php 

	 global $sape;

	 if (!defined('_SAPE_USER')){

		define('_SAPE_USER', '0764265b1af72dfcc7b2a690163f4a2d'); 

	 }

	 require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); 

require_once ("sape/sape.php");

	 $sape = new SAPE_client($sape_venality_name);

?>
файл sapeecho.php
<?php 

	global $sape;

	$n = $n ? $n : null; 

	echo $sape->return_links($n);

?>

далее откройте файл main.tpl вашего шаблона и в самом верху добавьте вызов

для DLE < DLE8.2 {include snippet="sape.php" param=""} прежде прочтите это http://4dle.ru/hacks/1147157400-podderzhka...nija-v-dle.html

для DLE8.2 {include file="snippets/sape.php"} еще не тестировал на этой версии но должен работать без ошибок

далее в тех местах где вам надо вывести ссылки добавляем вызов (шаблон main.tpl)

для DLE < DLE8.2 {include snippet="sapeecho.php" param="n=2"} - выведет 2 ссылки {include snippet="sapeecho.php" param=""} а так сразу все

для DLE8.2 {include file="snippets/sapeecho.php?n=2"} - 2 ссылки {include file="snippets/sapeecho.php"} - все ссылки

меняя параметр n можно выводить в разных местах сайта нужное количество ссылок главное чтобы в этом случае последний вызов шел без параметра (написано в руководстве sape)

точно также обстоят дела и с setlink

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

require_once ("sape/sape.php");

наверное тогда уж require_once ("sape/sapeecho.php");

Или как?)

не все верно там еще файл лежит в папке sape но это нюансы выложу на сайте отпишусь

Ссылка на сообщение
Поделиться на других сайтах

Дак решение не найдено , как я понимаю .

Сейчас актуально: чтобы блок оформления не выводился, если площадка не куплена . :rolleyes:

Вот например :

 /*SAPE*/

define('_SAPE_USER', 'мой хэш');

require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');

$sape = new SAPE_client();


$links = $sape->return_links();

if($links!=""){ 

$gototpl = '

<div class="jc">

	<div class="head"><div></div></div>

		<div class="top_top">

		  <div class="top_top">

			<div class="ss_top">

				<div class="ss_con">

					<h3>На правах рекламы:</h3>

					'.$links.'

				</div>

			</div>

		</div></div>

	<div class="top_top"><div></div></div>

</div>';

}  

/*SAPE*/

$tpl->set("{sape}",$gototpl);


$tpl->compile ( 'main' );

Сам его не пробовал но должен работать .

Источник .

Сделать бы это через API . Может кто-то сможет это реализовать ?

Писал пользователям форума sape , решения пока нет .

Ссылка на сообщение
Поделиться на других сайтах

soot,

потенциально опасный код вы предлагаете.

После

$sape = new SAPE_client();

надо добавить

$gototpl = '';

Почему опасный ?

Дайте безопасный с подключением API , ни кто не против :rolleyes:

Ссылка на сообщение
Поделиться на других сайтах

API никакого отношения не имеет к этому коду. Так как его предназначение в другом.

Ссылка на сообщение
Поделиться на других сайтах

IT-Security,

Возможно, я не программист .

Дак можно подключить sape не меняя файлов движка или нет ? Чтобы блок тоже прятался если ссылок нет ?

Ссылка на сообщение
Поделиться на других сайтах

Можно конечно :) Я всегда именно так и делаю :)

Ссылка на сообщение
Поделиться на других сайтах

Я вставляю Sape так:

В index.php сразу после:

$tpl->load_template ( 'main.tpl' );
прописываю:
include (ROOT_DIR . '/engine/modules/mymod.php');
Далее по адресу: /engine/modules/ создаю файл mymod.php и в него прописываю:
<?php

//////////////////////////// Вывод блока ссылок /////////////////////////////

// Код Sape

if (!defined('_SAPE_USER')) {

	define('_SAPE_USER', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

}

require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');

$sape = new SAPE_client();

//


// Подключение к шаблону

$zeos_sape = $sape->return_links();

if (isset($zeos_sape) and $zeos_sape != "") {

	$tpl->set ( '[zeos_sape]', "" );

	$tpl->set ( '{zeos_sape}', $zeos_sape );

	$tpl->set ( '[/zeos_sape]', "" );

} else {

	$tpl->set_block ( "'\\[zeos_sape\\](.*?)\\[/zeos_sape\\]'si", "" );

}

//

/////////////////////////////////////////////////////////////////////////////

?>

Вместо xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx прописываем свой ID от Sape

Далее в шаблоне main.tpl тегом {zeos_sape} выводим ссылки.

Тег [zeos_sape] ставим вначале рекламного блока.

Тег [/zeos_sape] ставим в конце рекламного блока.

И тогда, если на странице никто не купил ссылку, то блок исчезает и не портит дизайн :)

Изменено пользователем WWW.ZEOS.IN
Ссылка на сообщение
Поделиться на других сайтах

Почему опасный ?

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

Дайте безопасный с подключением API , ни кто не против

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

Во-вторых, я бы написал тоже самое, что ответил вам IT-Security, но честно говоря уже задолбался это писать и читать. Разберитесь что такое API, а потом уже предлагайте его использовать. Слово API видать всем массово понравилось :lol:

В-третьих, вы подсмотрели код на форуме сапы, схватили первое, что нашли и помчались.... а там буквально на пару постов ниже показан вариант более удобного подключения для версий дле 8,2 и выше... Скорее всего именно это вы пытались выдать за API.

Изменено пользователем Al-x
Ссылка на сообщение
Поделиться на других сайтах

В index.php

А без редактирования index.php ни как ?

Я не сильно разбираюсь , не хотелось бы отходить от оригинальных файлов .

Разберитесь что такое API, а потом уже предлагайте его использовать. Слово API видать всем массово понравилось :lol:

Ни че слово :rolleyes: , я его услышал у одного разработчика , который делает модули - я и думал что это новый способ подключения .

Посоветуйте ресурс про php :) .

В-третьих, вы подсмотрели код на форуме сапы, схватили первое, что нашли и помчались.... а там буквально на пару постов ниже показан вариант более удобного подключения для версий дле 8,2 и выше... Скорее всего именно это вы пытались выдать за API.

Я изучал всю тему , старенький способ подключения подходит на все версии , а вот новая возможность подключения через {include file="engine/modules/mymod.php"} .

Но если ни как без изменений , то какой тогда толк от этого расширения в DLE ? Что им можно сделать , если простенькую сапу не подключить - зачем она нужна ?

Ссылка на сообщение
Поделиться на других сайтах

Вставляю Сапу, как написано в панели ВМ и не парюсь. Способов полно, для DLE, установка зависит от "кривизны рук".

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

golian, http://forum.dle-news.ru/index.php?showtopic=47185&view=findpost&p=222351

Если не выйдет, пишите мне в ICQ, возможно Вы где-то допускаете ошибку :rolleyes:

Ссылка на сообщение
Поделиться на других сайтах

Я так сейчас ставлю (v.8.2, работало и на более ранних версиях).

1. Подключаю php Использование любых PHP вставок в шаблонах

2. Далее в самый верх main.tpl

<?php 

     if (!defined('_SAPE_USER')){

        define('_SAPE_USER', 'название папки вашей сапы'); 

     }

     require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');  

	   $o['host'] = 'www.имя сайта (или без www).ru';

        $sape = new SAPE_client($o);

        unset($o);

?>
3. Вывод ссылок
<? echo $sape->return_links(1); ?>

Пункты 2 и 3 ставлю через рекламные материалы блоками, (1) кол-во ссылок в блоке.

Изменено пользователем Captain
Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

ZEOS спасибо, только в коде форум искажает переводы строк :lol:

В этом случае скрипт работать не будет.

вставляете в индекс.пхп этот код или как Зеос, прописываете этот код в mymod.php,если хотите 2 ссылки. Если хотите продавать больше ссылок со страницы то копируете и соответственно заменяете sap1 на sap2 и тд. Но не советую, оптимизаторы любят минимум ссылок, поэтому по 2 будет в самый раз.

if (!defined('_SAPE_USER')) {define('_SAPE_USER', 'ваш код');}

require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');

$o['host'] = 'http://ваш сайт';

$sape = new SAPE_client();

$sap1 = $sape->return_links(1);

if (isset($sap1) and $sap1 != "") {

$tpl->set ( '[sap1]', "" );

$tpl->set ( '{sap1}', $sap1 );

$tpl->set ( '[/sap1]', "" );

} else {

$tpl->set_block ( "'\\[sap1\\](.*?)\\[/sap1\\]'si", "" );

}

$sap = $sape->return_links();

if (isset($sap) and $sap != "") {

$tpl->set ( '[sap]', "" );

$tpl->set ( '{sap}', $sap );

$tpl->set ( '[/sap]', "" );

} else {

$tpl->set_block ( "'\\[sap\\](.*?)\\[/sap\\]'si", "" );

}

А все остальное - как написал ZEOS и у Вас будет красивый дизайн сайта

ЗЫ Да, и не забывайте закрыть все внешние ссылки с сайта, в том числе и счетчики тегами noindex и nofollow, вот здесь можно проверить на количество внешних - http://seonuf.com/

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

Изменено пользователем polly
Ссылка на сообщение
Поделиться на других сайтах

вот здесь можно проверить на количество внешних - http://seonuf.com/
Тут ты проверить сможешь только 1 страницу сайта, толку 0

Мне надо вот что: http://forum.dle-news.ru/index.php?showtopic=48469

Нашел прогу, но она стоит 600$ crazy.gif жесть

Ссылка на сообщение
Поделиться на других сайтах

Я вставляю код следующим способом...

В index.php находим строчку:

$tpl->set ( '{content}', "<div id='dle-content'>" . $tpl->result['content'] . "</div>" );
Сразу после неё вставляю:
//*****************************sape****************************\\ 

define('_SAPE_USER', 'секретный код');

require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');

$o['host'] = 'http://здесь адресс сайта с www или без';

$sape = new SAPE_client($o);

$tpl->set('{sape}', $sape->return_links(предполагаемое кол-во ссылок для вывода));

//*****************************sape****************************\\ 
В файле main.tpl шаблона прописываю в месте, где надо выводить ссылки:
{sape}
Мне нужно реализовать замысел ZEOS, а именно чтоб убирался блок если ссылки на нём не куплены. И что-то криво у меня получется это)))) При реализации варианта ZEOS ссылки выводятся, но на страницах, где они не куплены виден код вывода:
[zeos_sape]{zeos_sape}[/zeos_sape]

polly, твой вариант попробую вечером.

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

Вообще, было бы не лишним создать отдельную тему по оптимизации сайтов на DLE для ПС ;) ... А куда обращаться за помощью, в личку?

Изменено пользователем vancer
Ссылка на сообщение
Поделиться на других сайтах

Мне нужно реализовать замысел ZEOS, а именно чтоб убирался блок если ссылки на нём не куплены. И что-то криво у меня получется это)))) При реализации варианта ZEOS ссылки выводятся, но на страницах, где они не куплены виден код вывода:

[zeos_sape]{zeos_sape}[/zeos_sape]

Значит не правильно ты что-то сделал. Всё работает ок :) Пиши в аську помогу :rolleyes:
Ссылка на сообщение
Поделиться на других сайтах

Вообще, было бы не лишним создать отдельную тему по оптимизации сайтов на DLE для ПС ;) ... А куда обращаться за помощью, в личку?

vancer Обращайся через лс, обсудим твой сайт в аське

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...