PDA

View Full Version : سوال: ذخیره متغییر در جلسه



yasgig
سه شنبه 30 شهریور 1389, 23:30 عصر
با سلام
چجوری می تونم یه متغییر که به صورت پست دریفت میکنم رو توی یه جلسه یا همون session ذخیره کنم تا توی صفحات دیگه هم بتونم ازش استفاده کنم؟

xoogle.ir
سه شنبه 30 شهریور 1389, 23:34 عصر
:متفکر:



$_SESSION['var_name'] = $_POST['var'];

bestirani2
سه شنبه 30 شهریور 1389, 23:40 عصر
برای ذخیره متغیر میتوانید از serialize استفاده کنید تا آن را به صورت یک رشته در بیارید و بعد ذخیره کنید

yasgig
سه شنبه 30 شهریور 1389, 23:46 عصر
سلام
من کد زیر رو نوشتم:

<?php
$shomare_perseneli = $_POST['shomare_perseneli'];
$password = $_POST['password'];
include('db.php');
$sql = "select * from user where shomare_perseneli = '$shomare_perseneli'";
$result = mysql_query($sql) or die(mysql_error());
$R = mysql_fetch_array($result);
if($shomare_perseneli == "$R[shomare_perseneli]" && $password == "$R[password]" && $shomare_perseneli != "" && $password != "")
{
$_SESSION['userlogin'] = true;
}
if($_SESSION['userlogin'] = true)
{
echo "<center>login ok<br>please click to continue<br><form method=\"get\" action=\"fish.php\"><p><input type=\"hidden\" name=\"shomare_perseneli\" size=\"20\" value=\"$R[shomare_perseneli]\"></p><p><input type=\"submit\" value=\"Submit\" name=\"B1\"></p></form></center>";
}else{
echo '<form action="" method="post"><table border="0" dir="rtl" align="center"><tr><td>نام کاربری:</td><td><input type="text" name="shomare_perseneli" size="35" value="" dir="ltr"></td></tr><tr><td>رمز عبور:</td><td><input type="password" name="password" size="35" value="" dir="ltr" class="textbox"></td></tr><tr><td colspan="2"><input type="submit" name="submit" value="ورود" class="content"></td></tr></table></form>';
}
?>
می تونین اون متغییر شماره پرسنلی رو واسم ذخیره کنین؟آخه زیاد بلد نیستم.
ممنون

shahriyar3
سه شنبه 30 شهریور 1389, 23:47 عصر
برای ذخیره متغیر میتوانید از serialize استفاده کنید تا آن را به صورت یک رشته در بیارید و بعد ذخیره کنید

البته تا اونجائي كه من ميدونم serialize كردن بعد از انتصاب مقدار به نشست انجام ميشه!!!

funpatogh
سه شنبه 30 شهریور 1389, 23:50 عصر
یک مثال از این تابع با کارایی که داره میزنید ممنون میشم


serialize

xoogle.ir
سه شنبه 30 شهریور 1389, 23:52 عصر
من session_start رو توی کدتون ندیدم. اگر جلسه رو استارت نکردید باید قبل از همه این تایع رو اجرا کنید :



session_start();

بعد هم میتونید با این کد شماره پرسنلی تون رو توی سشن ذخیره کنید :



$_SESSION['shomare_perseneli'] = $shomare_perseneli;

اون وقت تا پایان جلسه میتونید از این مقدار استفاده کنید.

funpatogh
سه شنبه 30 شهریور 1389, 23:53 عصر
سلام
من کد زیر رو نوشتم:

<?php
$shomare_perseneli = $_POST['shomare_perseneli'];
$password = $_POST['password'];
include('db.php');
$sql = "select * from user where shomare_perseneli = '$shomare_perseneli'";
$result = mysql_query($sql) or die(mysql_error());
$R = mysql_fetch_array($result);
if($shomare_perseneli == "$R[shomare_perseneli]" && $password == "$R[password]" && $shomare_perseneli != "" && $password != "")
{
$_SESSION['userlogin'] = true;
}
if($_SESSION['userlogin'] = true)
{
echo "<center>login ok<br>please click to continue<br><form method=\"get\" action=\"fish.php\"><p><input type=\"hidden\" name=\"shomare_perseneli\" size=\"20\" value=\"$R[shomare_perseneli]\"></p><p><input type=\"submit\" value=\"Submit\" name=\"B1\"></p></form></center>";
}else{
echo '<form action="" method="post"><table border="0" dir="rtl" align="center"><tr><td>نام کاربری:</td><td><input type="text" name="shomare_perseneli" size="35" value="" dir="ltr"></td></tr><tr><td>رمز عبور:</td><td><input type="password" name="password" size="35" value="" dir="ltr" class="textbox"></td></tr><tr><td colspan="2"><input type="submit" name="submit" value="ورود" class="content"></td></tr></table></form>';
}
?>می تونین اون متغییر شماره پرسنلی رو واسم ذخیره کنین؟آخه زیاد بلد نیستم.
ممنون



<?php
session_start();
$shomare_perseneli = $_POST['shomare_perseneli'];
$password = $_POST['password'];
$_SESSION['personel']=$shomare_perseneli;
include('db.php');
$sql = "select * from user where shomare_perseneli = '$shomare_perseneli'";
$result = mysql_query($sql) or die(mysql_error());
$R = mysql_fetch_array($result);
if($shomare_perseneli == "$R[shomare_perseneli]" && $password == "$R[password]" && $shomare_perseneli != "" && $password != "")
{
$_SESSION['userlogin'] = true;
}
if($_SESSION['userlogin'] = true)
{
echo "<center>login ok<br>please click to continue<br><form method=\"get\" action=\"fish.php\"><p><input type=\"hidden\" name=\"shomare_perseneli\" size=\"20\" value=\"$R[shomare_perseneli]\"></p><p><input type=\"submit\" value=\"Submit\" name=\"B1\"></p></form></center>";
}else{
echo '<form action="" method="post"><table border="0" dir="rtl" align="center"><tr><td>نام کاربری:</td><td><input type="text" name="shomare_perseneli" size="35" value="" dir="ltr"></td></tr><tr><td>رمز عبور:</td><td><input type="password" name="password" size="35" value="" dir="ltr" class="textbox"></td></tr><tr><td colspan="2"><input type="submit" name="submit" value="ورود" class="content"></td></tr></table></form>';
}
?>

xoogle.ir
سه شنبه 30 شهریور 1389, 23:54 عصر
از serialize بیشتر برای دخیره کردن یک آرایه در یک رشته استفاده میشه. فکر نمیکنم برای ذخیره سازی یک متغیر خیلی کار مناسبی باشه.

yasgig
سه شنبه 30 شهریور 1389, 23:57 عصر
اون وقت تا پایان جلسه میتونید از این مقدار استفاده کنید.
مثلا اگه خواستم شماره پرسنلی رو توی صفحات دیگه که جلسه توی اونا هم بکار رفته بخوام چاپ کنم باید به صورت زیر عمل کنم؟

echo $SESSION['shomare_perseneli'];

funpatogh
سه شنبه 30 شهریور 1389, 23:00 عصر
مثلا اگه خواستم شماره پرسنلی رو توی صفحات دیگه که جلسه توی اونا هم بکار رفته بخوام چاپ کنم باید به صورت زیر عمل کنم؟

echo $SESSION['shomare_perseneli'];
بله به این شکل باید مقدارش رو چاپ کنید

shahriyar3
سه شنبه 30 شهریور 1389, 23:05 عصر
یک مثال از این تابع با کارایی که داره میزنید ممنون میشم


serialize




<?php
$the_array = array( "I", "do", "It!" );
$serialized = serialize($the_array);
print $serialized;
?>

xoogle.ir
سه شنبه 30 شهریور 1389, 23:05 عصر
البته SESSION$ اشتباهه ... SESSION_$ درسته :لبخندساده:

bestirani2
چهارشنبه 31 شهریور 1389, 07:53 صبح
از serialize بیشتر برای دخیره کردن یک آرایه در یک رشته استفاده میشه. فکر نمیکنم برای ذخیره سازی یک متغیر خیلی کار مناسبی باشه.

چون گفته بود ذخیره یک متغیر در داخل جلسه این رو گفتم
اینطوری خود متغیر رو با نام و ... اش ذخیره میکنی

بدین صورت


$b =5;
$c = 'old';
$a = serialize ("\$b =$b; \$c = $c;");
$a1 = unserialize($a);
$c = "new";
eval($a1);
echo $c;برای ایجاد یک رشته برای serialize هم کافیه که یک تابع درست کنیم که متغیرها رو از ورودی بگیره و به صورت

"\$b =$b; \$c = $c;"تحویل بده
که کد نویسی کمتری داره تا اینکه بخوای دونه دونه هر کدام رو بریزی تو یک جلسه و در نهایت دوباره دونه دونه بریزی توی یک متغیر، مخصوصاً اگر تعداد متغیر ها زیاد بشه
همچنین سرعت برنامه بیشتر هست چون فقط با یک جلسه کار میکنیم

yasgig
چهارشنبه 31 شهریور 1389, 09:22 صبح
ممنون از همتون.مشکلم حل شد.