-
این درسته که جوملا session ها ریست میکنه ولی مکانیزمی داره که شما نیازی به value نشست نخواهید داشت
با استفاده از میتونید مشخص کنید که کاربر login کرده یا خیر.
(اگر نیاز به value داشته باشید به این صورت
کد:
$session =& JFactory::getSession();
$session->set('name', "value");
میتونید به اون دسترسی داشته باشید)
اما راه حل مشکل شما :
کد:
$user =& JFactory::getUser();
if (!$user->guest) {
// YOU'r Bussiness logic
}else{
header("Location: YOUR LOGIN PAGE.php");
}
جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.
-
-
02-21-2012 08:50 AM
# ADS
تبلیغات در جوملا فارسی
-
راه حل پیشنهادی شما توی لینکی که گذاشتم اومده ولی برای من جواب نداد.
کد من همچین چیزیه:
کد:
<?php
//اینجا متغیر خودمو بررسی می کنم که ست شده یا خیر
//اگه ست نشده باشه میره سراغ جوملا و اگه ست شده باشه اسکریپتی که خودم نوشتم اجرا می شه
if (!isset($_SESSION['started']))
{
$started = $_SESSION['started'];
// Set flag that this is a parent file.
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
if (file_exists(dirname(__FILE__) . '/defines.php')) {
include_once dirname(__FILE__) . '/defines.php';
}
if (!defined('_JDEFINES')) {
define('JPATH_BASE', dirname(__FILE__));
require_once JPATH_BASE.'/includes/defines.php';
}
require_once JPATH_BASE.'/includes/framework.php';
// Mark afterLoad in the profiler.
JDEBUG ? $_PROFILER->mark('afterLoad') : null;
// (۱)
// ست کردن مقدار در نشست جوملایی
if(isset($started))
{
$session =& JFactory::getSession();
$session->set( 'started', $started );
}
// Instantiate the application.
$app = JFactory::getApplication('site');
// Initialise the application.
$app->initialise();
// Mark afterIntialise in the profiler.
JDEBUG ? $_PROFILER->mark('afterInitialise') : null;
// Route the application.
$app->route();
// Mark afterRoute in the profiler.
JDEBUG ? $_PROFILER->mark('afterRoute') : null;
// Dispatch the application.
$app->dispatch();
// Mark afterDispatch in the profiler.
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;
// Render the application.
$app->render();
// Mark afterRender in the profiler.
JDEBUG ? $_PROFILER->mark('afterRender') : null;
// Return the response.
echo $app;
}
else // اگه مقدار گرفته باشه این کار رو انجام بده
{
// (۲)
$_SESSION['started'] = 1;
echo "started!";
}
?>
بعد توی یکی از ماژولهای جوملا همچین اسکریپتی دارم که مقدار msg رو از توی نشست جوملایی می خونه و اگه مقدار داشت ازش استفاده می کنه:
کد:
<?php
defined('_JEXEC') or die;
JHtml::_('behavior.keepalive');
define('_JEXEC', 1);
define('DS', DIRECTORY_SEPARATOR);
$session =& JFactory::getSession();
$started = $session->get( 'started' );
if(isset($started))
{
switch ($started)
{
case 1:
// some code
break;
case 2:
// some code else
break;
case 3:
// another some code
break;
default:
// Do nothing
}
}
// و ادامه اسکریپت ...
?>
اما مشکل اینه که توی ماژول (یعنی همین کد آخری) همواره "ست نشده" باقی می مونه!
ویرایش توسط farajian86 : 02-21-2012 در ساعت 03:37 PM
جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.
-
علاقه مندی ها (Bookmarks)