PDA

View Full Version : سوال: مشکل با ذخیره session در دیتابیس



alî_pr
جمعه 30 اسفند 1387, 21:48 عصر
سلام
دو تا صفحه دارم، صفحه اصلی و صفحه کاربر
کد صفحه اصلی من اینه


<?php
require_once('Sess_Hdl.php');
mysql_connect("localhost", "root", "");
mysql_select_db("ali");
session_set_save_handler("sess_open", "sess_close", "sess_read",
"sess_write", "sess_destroy", "sess_gc");
session_start( );
echo session_id();
$_SESSION['uName'] = "ali Gholami";
?>
<a href="User.php">User</a>

و کد صفحه کاربر اینه:


<?php
require_once('Sess_Hdl.php');
mysql_connect("localhost", "root", "");
mysql_select_db("ali");
session_set_save_handler("sess_open", "sess_close", "sess_read",
"sess_write", "sess_destroy", "sess_gc");
session_start( );
echo session_id();
echo $_SESSION['uName'];
?>
<a href="index.php">Home</a>

من با استفاده از کد زیر که از یه کتاب کپی کردم، توابع مربوط به خواندن و نوشتن در session و دیگر توابع مورد نیاز رو در یه فایل نوشتم و include کردم:


<?php
function sess_open($sess_path, $sess_name)
{
return true;
}
function sess_close( )
{
return true;
}
function sess_read($sess_id)
{
$result = mysql_query("SELECT Data FROM sessions WHERE SessionID
= '$sess_id';");
$CurrentTime = time( );
if (!mysql_num_rows($result))
{
mysql_query("INSERT INTO sessions (SessionID, DateTouched)
VALUES ('$sess_id', $CurrentTime);");
return '';
}
else
{
extract(mysql_fetch_array($result), EXTR_PREFIX_ALL, 'sess');
mysql_query("UPDATE sessions SET DateTouched = $CurrentTime
WHERE SessionID = '$sess_id';");
$row = mysql_fetch_assoc($result);
return $sess_Data;
}
}
function sess_write($sess_id, $data)
{
$CurrentTime = time( );
mysql_query("UPDATE sessions SET Data = '$data', DateTouched =
$CurrentTime WHERE SessionID = '$sess_id';");
return true;
}
function sess_destroy($sess_id)
{
mysql_query("DELETE FROM sessions WHERE SessionID = '$sess_id';");
return true;
}
function sess_gc($sess_maxlifetime)
{
$CurrentTime = time( );
mysql_query("DELETE FROM sessions WHERE DateTouched + $sess_
maxlifetime < $CurrentTime;");
return true;
}
?>

حالا مشکل:
با لینکی که تو صفحه اول هست به صفحه کاربر می رم، اما تو اون صفحه که باید نام کاربر رو نشون بده (نامی که در صفحه اصلی ست شده)، هیچی نشون نمی ده.
تو دیتابیس بدرستی ذخیره می شه ولی فیلد Data با null مقدار دهی میشه!
لطفا فقط اگه به مشکل پی بردید جواب بدید. من چندین روزه که دنبال جوابم اما...

alî_pr
شنبه 01 فروردین 1388, 19:18 عصر
سلام
یکی نظر بده، اشکال نداره اگه جواب رو هم نمی دونید بازم یه چیزی بگید که دلمون خوش باشه:افسرده:

narsic
یک شنبه 02 فروردین 1388, 02:04 صبح
با سلام
بعد از مقدار دهی Session اون رو یک بار چاپ کنید ببینید نتیجه چی بر میگردونه .
در ضمن به این نیازی نیست .



session_set_save_handler("sess_open", "sess_close", "sess_read",
"sess_write", "sess_destroy", "sess_gc");
به جای require هم از include استفاده کنید .
موفق باشید

سال نو مبارک

alî_pr
یک شنبه 02 فروردین 1388, 09:35 صبح
سلام
ضمن تشکر از آقای narsic،
اصل ماجرا تابع session_set_save_handler هست

بعد از مقدار دهی Session اون رو یک بار چاپ کنید ببینید نتیجه چی بر میگردونه .

توصفحه اصلی بعد از مقداردهی که چاپ میکنه، توی صفحه دوم چاپ نمی کنه.
من همه کد ها رو گذاشتم که تستش برای شما خیلی راحت باشه.

به جای require هم از include استفاده کنید .

این کار رو هم کردم فایده ای نداشت.

narsic
یک شنبه 02 فروردین 1388, 18:02 عصر
این کار رو هم کردم فایده ای نداشت.
با سلام
ربطی به درست شدن مشکلتون نداشت تنها برای توصیه بود .
موفق باشید