Базовый ФАК по SSI (Basic SSI FAQ)

Автор Avdenago, 15 ноября 2006, 22:39:11

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Avdenago

Базовый ФАК по SSI
(Basic SSI FAQ)
Перевод. Оригинал тут:
http://www.simplemachines.org/community/index.php?topic=12936.0

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

!ВАЖНО: НЕ ИЗМЕНЯЙТЕ ФАЙЛ 'SSI.PHP'!
(Все описанное ниже делается без каких-либо изменений в данном файле)

SSI - Server Side Includes (Включения на Стороне Сервера) - это набор функций, которые позволяют связать ваш форум с остальными страницами на Вашем сайте и использовать другие возможности форума, такие как статистика, новости, обсуждения, последние сообщения и т.д. на страницах вашего сайта.

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

Именно для чего-либо подобного и необходимо применение SSI. Реализация займет несколько минут.

Как мне начать использовать SSI?
Первое. Создаем у себя на сайте новый .php файл. Затем открываем его в текстовом редакторе и прописываем в него следующий код:
<?php
require("/home/simple/public_html/forum/SSI.php"); 
?>

Очень важно указать правильный путь к Вашему файлу 'SSI.php', который обычно находится в корневом каталоге Вашего форума. Правильный путь вы можете посмотреть в начале файла 'ssi_examples.php', который также находится в корневом каталоге Вашего форума.

Я добавил путь к файлу 'SSI.php". Что теперь?
Итак вы добавили путь к файлу 'SSI.php" и сохранили созданный Вами файл.
Далее мы попробуем добавить какую-нибудь возможность на страницу(в меню, список On-line) вашего сайта. Вставьте нижепреведенный код в созданный Вами файл после 'require("YOUR_PATH_TO_SSI.php");'
ssi_menubar();
Теперь просмотрим созданный файл в браузере. Если все сделано правильно вы увидите меню форрума. Если же ничего не сработало или появилось сообщение об ошибке, значит вы неправильно указали путь к файлу 'SSI.php' в первой строчке.
Итак. теперь мы имеем небольшое представление о том как SSI работает и как он может пригодится. Вы можете ознакомится со всем набором функций SSI в файле 'ssi_examples.php', который также находится в корневом каталоге Вашего форума.

Что еще можно сделать используя SSI?
Как уже говорилось SSI имеет большое количество функций. Сейчас мы рассмотрим работату с правами пользователей.
Пример: У вас есть сайт и, соответственно, форум и вы хотите, чтобы пользователи, вошедшие на форум, видели отдельную область закачки.
Это делается без каких-либо проблем с использованием всего лишь php оператора 'if':
<?php
require("YOUR_PATH_TO_SSI.php"); 

if (
$context['user']['is_guest'])
 {
   echo 
   
'<h5>Доступ запрещен</h5>
   У Вас нет прав для просмотра данной страницы.'
;
 }
else
 {
   echo
   
'<h5>Здравствуйте, '$context['user']['name'], '!</h5>
   Это страница закачек:'
;
 }
?>

Несколько комментариев по работе данного примера. В примере использыется оператор 'if'. Если выражение (в данном случае $context['user']['is_guest']) ИСТИННО,то активируется первый блок операторов, если же выражение ЛОЖНО, то выполняется блок 'else'.
В нашем примере - если пользователь не вошел на форум, то выражение принимает значение ИСТИННО и отображается сообщение об отсутсвии прав для просмотра страницы. Если же пользователь вошел на форум, то отобразится страница закачек.

Можно сделать похожее с Администратором:
if ($context['allow_admin'])
  {
   Блок операторов
  }
else
  {
Блок операторов
  }



Вот Вы и дочитали до конца Базовый ФАК по SSI.
Если есть желание можно продолжить освоение SSI перейдя к Углубленному ФАКу по SSI (Advanced SSI FAQ)

В прикрепленных файлах находится код еще нескольких небольших примеров.

-Lamper


От переводчика:
Если данный ФАК помог вам и ответил на ваши вопросы, или наоборот у вас появились вопросы, а также если вы нашли неточности или ошибки, вы можете обсудить его в данной теме.
Также следует отметить, что вышеприведенный перевод, довольно таки вольный... Но идеи и мысли сохранены.

Также хочется отметить следующее. В общем смысле слова SSI - не совсем то что тут описано. Дело в том, что SSI реализуется в принципе на стороне именно сервера, то есть это какой-либо набор команд включенный именно в ! сервер.
В данном же случае это реализуемо через файл, содержащий нужные функции для форума. Или точнее сказать для связи форума и других страничек...

Вот также интересная ссылка, иллюстрирующая работу SSI:
http://www.simplemachines.org/community/ssi_examples.shtml



m412

ЦитироватьПравильный путь вы можете посмотреть в начале файла 'ssi_examples.php', который также находится в корневом каталоге Вашего форума.

Я не могу определить правильный путь...
в файле ssi_examples.phpу меня написано: "require(dirname(__FILE__) . '/SSI.php');"

и поэтому видимо не работает....что делать?
я на денвере пробую...

Avdenago

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

m412


Avdenago

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

F:\\AppServ\\www\\smf/SSI.php

m412

Спасибо! все заработало....
немного надо было подправить...
у меня это выглядит так:
"Z:/home/tmndnb/www/forum/SSI.php"

Илья

Столкнулся с подобной проблемой...(в пихипи не силён)
фраза :
"Правильный путь вы можете посмотреть в начале файла 'ssi_examples.php', который также находится в корневом каталоге Вашего форума." - в корне не верна!
Путь можно посмотреть не в самом файле, естественно там написана функция dirname(__FILE__) !
Чтобы узнать путь, необходимо перейти на страницу ssi_examples.php (набрав в броузере адрес с этим файлом) у меня например получилось узнать:
<?php require("/home/u73761/forum.internetsad.ru/www/SSI.php"); ?>

matroskyn

Большое спасибо за перевод! Весьма помогло с пониманием.
я с помощью враппера в джумле вставил ssi_login() и  ssi_welcome() .
увы, знаний пока не хватает - пытаюсь сейчас все понять и сделать... медленно, но получается..
Но...
Тут казус один есть... ПРи вводе логина и пароля он в этом же окне (wrapped) и загружает форум - а мне нужно, чтобы он загружал в мэин.. ну либо в новом окне - если только это и останется.. ну и естессно, чтобы враппер как раз показывал кнопку Выход....
Ребяты.. с меня скоро уже пыль можно смахивать - сижу, копаюсь.. Читал вроде внимательно форум.. может что упустил?
Покажите, пожалуйста, путь истинный!

Avdenago

Думаю вам лучше искать там, где могут дать совет по джумле. Это либо тут в соответсвующем разделе, либо где-нить в других местах...  Я вот не берусь консультировать по джумле, ибо не знаю ее.

highwhite

Здравствуйте. Есть проблема. Форум находится на моем сервере. А сайт собственно на хостинге.
С помощью require на SSI.php с сайта не работает. По УРЛ до SSI.php Тоже не добраться :'(

Так как можно подключить SSI.php с форма на моем сервере  на сайт у хостера?

digger®

Цитата: highwhite от 26 мая 2008, 04:46:25
Здравствуйте. Есть проблема. Форум находится на моем сервере. А сайт собственно на хостинге.
С помощью require на SSI.php с сайта не работает. По УРЛ до SSI.php Тоже не добраться :'(

Так как можно подключить SSI.php с форма на моем сервере  на сайт у хостера?

Включить allow_url_fopen и allow_url_include.

highwhite

allow_url_fopen включен. Вторую опцию в конфиге ненашел. Все то же.

Warning: require(T:\home\virtual\xxxxxxx.yyy\forum\SSI.php) [function.require]: failed to open stream: No such file or directory in /home/xxxxxxx_zz_www/index.php on line 2 // корень сайта у хостера

Fatal error: require() [function.require]: Failed opening required 'T:\home\virtual\xxxxxxx.yyy\forum\SSI.php' (include_path='.:/www/php2/lib/php') in /home/xxxxxxx_zz_www/index.php on line 2

   Если инклудом, до SSI.php ругается.

digger®

Цитата: highwhite от 26 мая 2008, 15:51:39
allow_url_fopen включен. Вторую опцию в конфиге ненашел. Все то же.

Warning: require(T:\home\virtual\xxxxxxx.yyy\forum\SSI.php) [function.require]: failed to open stream: No such file or directory in /home/xxxxxxx_zz_www/index.php on line 2 // корень сайта у хостера

Fatal error: require() [function.require]: Failed opening required 'T:\home\virtual\xxxxxxx.yyy\forum\SSI.php' (include_path='.:/www/php2/lib/php') in /home/xxxxxxx_zz_www/index.php on line 2

   Если инклудом, до SSI.php ругается.


Ну так надо делать require('http://.../SSI.php'), а не require('T:\...\SSI.php')

mod

а может он не работать из за chmod на SSI 644 &

Dux

Цитата: digger от 26 мая 2008, 18:15:38
Ну так надо делать require('http://.../SSI.php'), а не require('T:\...\SSI.php')

Та же история. Написал напрямую через HTTP://. Выдает ошибку:

Warning: require() [function.require]: URL file-access is disabled in the server configuration in /home/www/z87548/delphicode/test.php on line 7

Warning: require(http://forum.delphicode.ru/SSI.php) [function.require]: failed to open stream: no suitable wrapper could be found in /home/www/z87548/delphicode/test.php on line 7

Fatal error: require() [function.require]: Failed opening required 'http://forum.delphicode.ru/SSI.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/www/z87548/delphicode/test.php on line 7

digger®

Цитата: Dux от 27 апреля 2009, 16:53:08
Та же история. Написал напрямую через HTTP://. Выдает ошибку:

Warning: require() [function.require]: URL file-access is disabled in the server configuration in /home/www/z87548/delphicode/test.php on line 7

Warning: require(http://forum.delphicode.ru/SSI.php) [function.require]: failed to open stream: no suitable wrapper could be found in /home/www/z87548/delphicode/test.php on line 7

Fatal error: require() [function.require]: Failed opening required 'http://forum.delphicode.ru/SSI.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/www/z87548/delphicode/test.php on line 7


Выше написано почему выдает ошибку.
Что вас заставляет подключать SSI.php как удаленный файл? Почему нельзя в файловой системе подключить, как и положено?

Dux

Цитата: digger от 27 апреля 2009, 18:25:18
Выше написано почему выдает ошибку.
Что вас заставляет подключать SSI.php как удаленный файл? Почему нельзя в файловой системе подключить, как и положено?

Где выше, ткните пальцем, если не затруднит, уже все перепробовал. Дело в том, что есть сайт www.site.ru и форум forum.site.ru - находятся в разных папках, поэтому правильный путь прописать невыходит...

digger®

Цитата: Dux от 27 апреля 2009, 18:59:01
Где выше, ткните пальцем, если не затруднит,
http://www.simplemachines.ru/index.php/topic,1008.msg28526.html#msg28526

Цитата: Dux от 27 апреля 2009, 18:59:01
уже все перепробовал. Дело в том, что есть сайт www.site.ru и форум forum.site.ru - находятся в разных папках, поэтому правильный путь прописать невыходит...
Ну и какая разница что в разных папках. На сервере то на одном?
Почему нельзя в скрипте на сайте написать
require_once('/home/forum/SSI.php');

Dux

Прописал вот так:

<?php
require_once("/home/www/z87548/delphiforum/SSI.php"); 
ssi_whosOnline();
?>


Выдает следующую ошибку:
Notice: SSI.php не может загрузить сессию! Возможно это проблема связана с выходом или другими функциями - пожалуйста убедитесь что SSI.php вставлен в самом начале перед всеми другими скриптами! in /home/www/z87548/delphiforum/SSI.php on line 170
0 Гостей, 1 Пользователь
Dux

Kerlen

Возможно ли применения SSI не в отдельном .php-файле, а в рамках CMS для вывода заданных данных с форума? И если да, то каким образом?

digger®

Цитата: Dux от 01 мая 2009, 00:48:47
Прописал вот так:

<?php
require_once("/home/www/z87548/delphiforum/SSI.php"); 
ssi_whosOnline();
?>


Выдает следующую ошибку:
Notice: SSI.php не может загрузить сессию! Возможно это проблема связана с выходом или другими функциями - пожалуйста убедитесь что SSI.php вставлен в самом начале перед всеми другими скриптами! in /home/www/z87548/delphiforum/SSI.php on line 170
0 Гостей, 1 Пользователь?
Dux


Вызов SSI.php точно в самом начале файла вставлен?

Dux

Вот листинг всего файла:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>

<?php
require_once("/home/www/z87548/delphiforum/SSI.php"); 
ssi_whosOnline();
?>

<body>
</body>
</html>

hype

там в первом посте membergroup.txt неправильный... :)
влаживаю нужный


Dux

Цитата: digger от 02 мая 2009, 14:20:09
Ну и почему просто не поставить вызов ssi в начало файла?

Ну наконец-то все заработало!!! Спасибо Digger. Необходимо было строчку
<?php require_once("/home/www/z87456/delphiforum/SSI.php"); ?> поставить в самое начало файла, а код:

<?php
ssi_whosOnline
();
?>
туда, где необходимо вывести результат.

vetatto

Помогите...такая проблема подключаю SSI так /home/n/nkostroma/forum/public_html/SSI.php
Функция ssi_whosOnline(); выводит данные,а вот получить имя пользователя не удается
if ($context['user']['is_guest'])
{
   print $context['user']['is_guest'];
   print "<a href='?action=register'>Регистрация</a><br>";
}
else
{
   echo   'Здравствуйте, '.$context['user']['name'].'!';
}

Пишет или просто Здравствуйте, или Регистрация...Как быть?

Спасибо..


vetatto

Цитата: digger от 02 декабря 2009, 15:22:27
А ssi_welcome() чего пишет?

Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Mavn

ну так авторизуйся и получишь имя пользователя
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

vetatto

#29
Цитата: Mavn от 02 декабря 2009, 19:45:24
ну так авторизуйся и получишь имя пользователя
Спасибо разобрался...

Использовать независимые cookies для субдоменов
(сначала отключите локальное хранение cookies!) - нужно было просто галочку поставить

RayEagle

подскажите, плз, действую по инструкции: создаю свой файл myssi.php, прописываю в нем путь к SSI.php

а как теперь прикрутить сей файл к моему сайту (у меня он на Wordpress)? Я так понимаю, что в каком-то файле надо прописать <?php include('myssi.php'); ?>, а потом в нужном мне месте вызывать нужные мне SSI функции? Так? Если так, то в каком файле сайта, и в каком месте этого файла крутить?

0daliska

http://www.simplemachines.ru/ssi_examples.php Поможет?
ЦитироватьTo use SSI.php in your page add at the very top of your page before the <html> tag on line 1 of your php file:
Уехала отдыхать. Сейчас без интернета до 1 августа. Приеду - выполню все обещания
® For members of Russian community (simplemachines.ru) only

starocean

Добрый день! Подскажите пожалуйста, какой код надо прописать, чтобы выводить последние сообщения форума? Перечитала тему, проглядела вложения, не нашла.
Тыкните, пожалуйста, носом. Спасибо.

BIOHAZARD

Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ