Home › Category Archives › PHP

Работаем с несколькими сессиями в PHP

Сессии в PHP нужны для сохранения различных данных при работе с клиентскими запросами. Например чтобы знать, что несколько запросов разнесенные по времени к серверу принадлежат одному пользователю, то для него открывается сессия.

Создаем сессию командой session_start();

При этом на сервере создается файл с данными о сессии, а клиенту отправляется HTTP заголовок:

Set-Cookie: PHPSESSID=c3700a86946ba8a60c6397d7e388a801; path=/

Клиент должен при каждом запросе передавать в заголовке это значение куки. Таким образом сервер и PHP будет понимать, что этот тот самый клиент.

Теперь можно используя глобальную переменную $_SESSION записывать и считывать значения из файла с данными на сервере. Доступ, к которому, имеет PHP на сервере.

Если не работаю куки на клиенте, то ID сессии можно передавать от клиента запросами GET и POST.

По умолчанию сессия для клиента создается одна и имеет имя session.name прописанное в конфигурации. В нашем случае это PHPSESSID.

Функция session_name() позволяет задать другое имя или вернуть текущее.

Таким образом мы можем создавать несколько сессий для одного клиента.

session_name(«SESSID1»);

session_start();

$_SESSION[«myvar»] = «session_var1»;

А в другом файле:

session_name(«SESSID2»);

session_start();

$_SESSION[«myvar»] = «session_var2»;

Соответственно мы зарегистрируем две сессии с разными ID и myvar в них будет отличаться.

Получить ID сессии можно функцией session_id()

Данные, сохраняемые в файле сессии могут быть любыми, которые можно сериализовать. Например нельзя сохранить в файле сессии ресурс PHP

OpenCart — дерево папок в менеджере изображений

Есть такой бесплатный  скрипт для электронного магазина OpenCart.

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

Решается проблема просто, надо заменить файл

admin\view\template\common\filemanager.tpl

На новый: filemanager1.5.4.1

Протестировано на версии OpenCart 1.5.4.1

Обратите внимание вот на эти строчки в filemanager.tpl

<script type=»text/javascript» src=»view/javascript/jquery/jquery-1.7.1.min.js»></script>
<script type=»text/javascript» src=»view/javascript/jquery/ui/jquery-ui-1.8.16.custom.min.js»></script> 

Если у вас версии скриптов jquery другие, то поменяйте на свои.

Русификация панели Kloxo

 

Есть такая панель управления хостингом как Kloxo.

Эта русификация позволяет выбрать русский язык в панели управления для отображения почти всех надписей на русском языке.
Локализация выполнена не на 100% есть не переведенные места.

Для установки русской локализации необходимо скачать этот архив и разместить папку ru в папке lang:

/usr/local/lxlabs/kloxo/httpdocs/lang/

Проверка производилась на пвнели Kloxo версии 6.1.12

Кодировка руссификации UTF8

IIS windows и серверная переменная ‘REQUEST_URI’

Если у вас PHP работает на сервере с IIS от Windows, то может возникнуть ситуация когда серверная переменная $_SERVER[‘REQUEST_URI’] возвращает НИЧЕГО.

В таком случае ваши скрипты будут работать некорректно.
В этом случае поступаем следующим образом. Надо написать такой код:


if (!isset($_SERVER['REQUEST_URI']))
{
       $_SERVER['REQUEST_URI'] = substr($_SERVER['PHP_SELF'],1 );
       if (isset($_SERVER['QUERY_STRING'])) { $_SERVER['REQUEST_URI'].='?'.$_SERVER['QUERY_STRING']; }
}

После этого ваш скрипт будет работать корректно.

ПС: Иногда необходимо добавить слеш к получаемой переменной.
$_SERVER[‘REQUEST_URI’] = «/».substr($_SERVER[‘PHP_SELF’],1 );

REQUEST_URI в php на Windows IIS

Решение проблемы с возвращением переменной окружения REQUEST_URI на IIS.

Дело в том, что эта переменная окружения не возвращает корректного значения или возвращает пустую строку.

Для решения этой проблемы вставляем следующий код:

[php]
if(strlen($_SERVER[‘REQUEST_URI’])==0){
if(strlen($_SERVER[‘QUERY_STRING’])){
$_SERVER[‘REQUEST_URI’] = $_SERVER[‘SCRIPT_NAME’]."?".$_SERVER[‘QUERY_STRING’];
}
else{
$_SERVER[‘REQUEST_URI’] = $_SERVER[‘SCRIPT_NAME’];
}
}[/php]

Установка zlib расширения к php

Итак имеем уже установленную версию PHP и Apache на машине.
Но нам необходимо установить zip расширение для PHP, чтоб php смог работать с zip архивами.

Приступим:

Проверяем установлен модуль php-pear

$ yum info php-pear

Если установлен делаем апдейт

$ yum update php-pear

Если нет то устанавливаем

$ yum install php-pear

Обновляем с pecl.php.net

$ pecl channel-update pecl.php.net

Устанавливаем pcre-devel

$ yum install pcre-devel

Проверяем утановлены ли модули zlib и zlib-devel если их нет устанавливаем

$ yum install zlib zlib-devel

Устанавливаем zip

$ pecl install zip

После этого все должно заработать, тольк необходимо добавить строчку в php.ini

extension=zip.so

для загрузки zip расширения для php.