Joomla ile özel Oturumları

6 Cevap php

Ben premium içerik için kullanabilirsiniz böylece benim mevcut sitenize entegre Joomla kurmak için çalışıyor ettik.

Ben zaten kendi oturum değişkenlerini ayarlar özel bir dahili kimlik doğrulama sistemi var.

Nedense, (farklı bir dizinde bulunan) Joomla session_start () eklerken bile, bu oturum değişkenleri tanımak istemiyor; Tüm Joomla sayfaların üst hattı.

Ben sadece premium kullanıcılara Joomla bulunan içeriğini sınırlamak, böylece ben Joomla benim özel oturum değişkenleri tanımak için nasıl alabilirim herhangi bir fikir?

Teşekkür ederim.

6 Cevap

Eğer alışkanlık garanti çalışmak php oturumu kullandığınızda Joomla böylece kendi oturum yönetimi kullanır. Bu almak için sadece joomla oturum yönetimi juse çalışın.

This may solve you problem.

Bu eski bir soru olduğunu biliyorum ama birisi hala arıyor burada durumunda bir çözüm sonrası karar verdi.

Joomla kendi çerçevesi ve aktif yönetimini kullanıyor. Hala php dosyaları ve erişim Joomla oturum değişkenleri kendi yazabilirsiniz. Eğer sadece php komut dosyası içine joomla çerçeveyi yüklemeniz gerekir.

J 1.6 için size php script başında aşağıdaki satırları eklemeniz gerekir. NOT: joomla () bir session_start aramak için gidiyor gibi bu çok üstünde dahil edilmesi gerekir.

define( '_JEXEC', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/..' )); //you will need to update this path to represent your installation. This path works if you store all your custom php scripts in a subdirectory off the main joomla install directory.

define( 'DS', DIRECTORY_SEPARATOR );

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe = JFactory::getApplication('site');
$mainframe->initialise();

Eğer kullandığınız oturum değişkenleri saklayabilirsiniz kere o:

$session->set('msgjson',$msgjson);

kullanarak oturum değişkenleri okuyun:

$msgjson = $session->get('msgjson')

ve unset oturum değişkenleri kullanarak:

$session->clear('msgjson');

Bu J 1.6 için çalışır. Muhtemelen diğer sürümleri için joomla çerçevesini yüklemek hatları değiştirmek gerekir. Bu çerçeve yüklemek için olduğu gibi ben Joomla kök dizininde index.php ile başlamak istiyorum.

Bu yardımcı olur umarım.

Joomla büyük olasılıkla ("A" Bu oturumu arayacağım o kullanıcının "prim" oturumu alırsa belirler hangi hakkında konuşuyor, diğer sistemden ayırmak (biz oturumu "B" diyeceğiz) kendi oturum bulunuyor başlatmak olacaktır .) Session "B" başladıktan sonra, ben oturum "B" oturum "A" bilgilere erişmek için mümkün olacağını sanmıyorum.

Bu etrafında almak için önerim saf PHP oturum yönetimi kod yazmak ve kendi oturum bulunuyor Joomla yüklenmeden önce bu kodu çalıştırmak olacaktır. Session_start çalıştırın bu şekilde () o oturumu "A" yakalamak gerekir.

Joomla içine bu almak için iyi bir yolu "Sistem" eklenti yazmak ve işlevini çağırmak için "onAfterInitialise" Joomla önce denen bu işlevi get it oturumu bile kurulum var olacaktır (en azından ben bu konuda eminim .. haha) .

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.plugin.plugin' );

class  plgSystemPremium extends JPlugin
{
    function onAfterInitialise() {
        // ... load session
        // if premium user, return
        // else, redirect user to a registration page or whatever
    }
}
?>

Joomla 1.5 a JSession sınıfını kullanır.

Joomla her şey kendi iç çerçevesi tarafından desteklenmektedir olarak, ben onu kendi iç oturum yönetim kodunu başlatır Joomla eski oturum değişkenleri yazar olasıdır olarak, oturumları gibi bir şey için saf PHP yazılı tavsiye etmem.

Ben, jumi herhangi bir dosya bağlantıları ve oturum verileri korur joomla için büyük bir serbest bileşeni kullanılır.

Eğer temiz bir sayfa gerekiyorsa, joomla şablon temizlemek için sonunda ob_end_clean(); yeni dosyanın üstünde ve die; kullanın.

i phpsessions joomla çalışmaz ve ben onların oturum yönetimi için joomla çerçeve öğrenmek için hazır olmadığını söyleyerek insanları görmeye devam, ben onun için hiçbir zaman vardı, bu yüzden bazı testler yaptık ve ben buldum eğer sadece Temanızın ana sayfasında php oturumu başlatmak ve web sitenizin ana sayfada iyi çalışması olmaz. Sadece şablon sayfasının üst sayfasında bu kod satırı koyun:

<?php
// Starting the phpsession
session_start();    
?>