Session ID в строке адреса браузера мешает, когда необходимо дать ссылку на определённую тему форума, приходится вручную обрезать URL, удаляя из него запись вида &sid=xxxx, но неопытные пользователи могут этого не сделать, в результате чего опубликовать на другом ресурсе свой SID, что может быть чревато угоном аккаунта.

Для того чтобы cookies корректно работали, необходимо чтобы некоторые директивы файла php.ini были настроены следующим образом:

session.use_cookies On On
session.use_only_cookies On On
session.use_trans_sid 0 0

После чего необходимо внести следующие изменения в php-файл inсludes/funсtions.php скрипта phpBB:

После кода

// Assign sid if session id is not specified
if ($session_id === false)
{
$session_id = $_SID;
}

необходиомо добавить:

global $user;
if ($user->data[‘user_id’] == ANONYMOUS)
{
$session_id = false;
}

После чего &sid=xxx исчезает из строки адреса браузера, что позволяет дать нормальную ссылку на определённую тему.

Ajax — это технология, которая позволяет без обновления всей страницы, изменить содержимое части страницы при помощи php и javascript, это в значительной степени уменьшает объём траффика между сервером и клиентом, а также снижают нагрузку на сервер и позволяют быстрее отобразить на странице изменённое содержимое.

Для того, чтобы использовать jQuery, нам понадобится js-библиотека jquery.1.7.1.min.js. Также необходимо создать js-файл с функцией, которую мы будем вызывать из php-файла, чтобы сделать запрос на сервер при помощи javascript. Эта функция выглядит следующим образом:
function zapros(data)
{
$.ajax({
type: "POST",
url: "action.php",
data: "do=zapros&perem="+data,
success: function(html){
$("#id").empty();
$("#id").append(html);
}
});
}

где data — это данные, которые необходимо передать в скрипт action.php;
А сам html-файл, из которого мы вызываем функцию, содержит следующий код:

<html>

<head>

<title></title>

<script src=”jquery.1.7.1.min.js”></script>

<script src=”jscript.js”></script>

</head>

<body>

<a href=”#” onClick=”zapros(‘dannye_peremennoy’)”>Send</a>

<div id=”id”>

Thing

</div>

</body>

</html>

В свою очередь, файл action.php, в который поступает наш запрос, содержит следующее содержимое:

<?php

echo $_POST[‘perem’];

?>

Что и выведет содержимое переменной perem на страницу.

Есть два важных момента, о которых не следует забывать, используя jQuery:
1. Вместо файла action.php, может быть тот же самый index.php;
2. Если ссылаться на другой хост, то это не сработает (в отличии от json).

Очень удобно создавать php-код отдельно от html-кода, при этом легко изменить дизайн сайта, далее я опишу как это сделать. Также с помощью tpl-шаблонов можно реализовать многоязычность на сайте.

Для того, чтобы создать страницу на основе шаблонов нам необходима библиотека-парсер, которая будет переваривать особые теги в коде html и отображать на странице значения вместо этих тегов.

Код парсера файлов шаблонов:

class TemplateParser
{
var $vars = array();
var $template;
function
get_tpl($tpl_name)
{
if(empty($tpl_name) || !file_exists($tpl_name))
{
return false;
}
else
{

$this->template = file_get_contents($tpl_name);
}
}
function
set_tpl($key,$var)
{
$this->vars[$key] = $var;
}
function tpl_parse()
{
foreach($this->vars as $find => $replace)
{
$this->template = str_replace($find, $replace, $this->template);
}
}
}

 

Теги имеют вид {ПЕРЕМЕННАЯ}, например если сделать в тегах , то не меняя шаблон страницы, можно изменить значение содержимого.

PHP-код в таком случае выглядит следующим образом:
get_tpl('main.tpl');

$parse->set_tpl(‘{title}’,’Test page’); //подставляем значение в переменную

$parse->tpl_parse();
echo $parse->template;
?>