mohammads نوشته است:
آقا مجتبي شما گفتيد سشن ها رو تو فايلي نگه مي داره !
مي شه بگيد اين فايل ها چيه ! که من به مسئول سرور بگم که مشکل رو رفع کنه ..!
حالا اگر هم نمي دونيد ، اگه براي من همين که اطلاعات سشن رو تو ديتابيس ذخيره کنم رو توضيح بديد ، خيلي کارم گيره !
ممنون ميشم منو راهنمايي کنيد
سلام،
با استفاده از تابع session_save_path مي تونيد مسيرش رو پيدا کنيد. ولي به طور پيشفرض توي Apache در tmp ذخيره مي شه.
براي ذخيره session ها توي ديتا بيس اول يه Table بسازيد با شرايط زير:
کد:
CREATE TABLE `sessions` (
`SessionID` varchar(32) NOT NULL,
`Expire` int(10) unsigned NOT NULL,
`Val` text NOT NULL,
PRIMARY KEY (`SessionID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
حال کدي زير رو توي يه فايل ذخيره کنيد و هر جا که خواستيد از Session ها استفاده کنيد اين فايل رو Include کنيد.
کد:
<?php
$HANDLER = "";
$LIFETIME = get_cfg_var("session.gc_maxlifetime");
/*------------------------------------------------------------------------------*/
function sessionOpen($save_path, $session_name)
{
global $HANDLER;
$HANDLER = connect(true);
return true;
}
/*------------------------------------------------------------------------------*/
function sessionClose()
{
return true;
}
/*------------------------------------------------------------------------------*/
function sessionRead ($SessionID)
{
global $session;
$SessionID = addslashes($SessionID);
$Sql = "SELECT `Val` FROM `" . TablePrefix . "sessions` WHERE `SessionID` = '$SessionID'";
$Query1 = new Query($Sql);
$Query1 -> Open();
if ($Query1 -> RecordCount() == 1)
{
return $Query1 -> Result(0);
} else {
return false;
}
}
/*------------------------------------------------------------------------------*/
function sessionWrite ($SessionID, $val)
{
global $session;
$SessionID = addslashes($SessionID);
//$val = addslashes($val);
$Sql = "SELECT COUNT(*) FROM `" . TablePrefix . "sessions` WHERE `SessionID` = '$SessionID'";
$Query1 = new Query($Sql);
$Query1 -> Open();
$session = $Query1 -> Result(0);
if ( !$session )
{
$Sql = "INSERT INTO `" . TablePrefix . "sessions` (`SessionID` , `Expire` , `Val`)
VALUES ('$SessionID', ". time() ." , '$val' )";
$Query1 -> Query($Sql);
$Query1 -> Open(1);
$return = $Query1 -> q_result;
}else {
$Sql = "UPDATE `" . TablePrefix . "sessions` SET `Val` = '$val', `Expire` = ". time() ." WHERE `SessionID` = '$SessionID'";
$Query1 -> Query($Sql);
$Query1 -> Open(1);
$return = $Query1 -> q_result;
}
return $return;
}
/*------------------------------------------------------------------------------*/
function sessionDestroyer ($SessionID)
{
global $session;
$SessionID = addslashes($SessionID);
$Sql = "DELETE FROM `" . TablePrefix . "sessions` WHERE `SessionID` ='$SessionID'";
$Query1 = new Query($Sql);
$Query1 -> Open(1);
$return = $Query1 -> q_result;
return $return;
}
/*------------------------------------------------------------------------------*/
function sessionGc ($maxlifetime)
{
global $session, $LIFETIME;
$expirationTime = time() - $LIFETIME;
$Sql = "DELETE FROM `" . TablePrefix . "sessions` WHERE `Expire` < ". $expirationTime;
$Query1 = new Query($Sql);
$Query1 -> Open(1);
$return = $Query1 -> q_result;
return $return;
}
session_set_save_handler ('sessionOpen','sessionClose','sessionRead','sessionWrite','sessionDestroyer','sessionGc');
session_start();
?>
البته براي اجراي Query ها به روش خودتون کار کنيد.
موفق باشيد.