ذخیره اطلاعات در متغیرها برای کاربردهای مختلفی در پیاچپی در اختیار توسعه دهندگان قرار گرفته است. علاوه بر این با ذخیره دادهها در بانک داده MySql آشنا شدید. اما گاهی نیاز به نوع دیگری از ذخیره دادهها خواهید داشت. مثلا متغیرهایی که در تمام پروژه در دسترس باشند. از سشن (Session) و کوکی (Cookie) دقیقا به همین منظور در پیاچپی استفاده میکنیم.
در برنامهنویسی وب بسیار پیش میآید که شما نیاز به ذخیره اطلاعات در متغیرهایی داشته باشید که در سراسر پروژه در دسترس باشند. در این شرایط میتوان از Session ها و Cookie ها استفاده کرد.
تفاوت Session و Cookie در آن است که سشنها در سرور ذخیره میشوند ولی کوکیها در دستگاه کاربر ذخیره خواهند شد.
برای استفاده از سشنها باید در ابتدای صفحه ابتدا آن را آغاز کنید. کد شروع یک سشن به صورت زیر است:
<?php
session_start();
?>
اما چگونه میتوانیم در سشنها اطلاعات مورد نظر را ذخیره کنیم. اگر مبحث آرایه را به یاد داشته باشید بخش سشنها نیز بی شباهت به آن نیست. فرض کنید قصد ایجاد یک سشن به نام user را داریم و میخواهیم مقدار آن را نیز برابر mojtaba قرار دهیم. پس باید کدی به شکل زیر بنویسیم:
<?php
session_start();
$_SESSION['user'] = "mojtaba";
?>
همانطور که احتمالا حدس میزنید برای دسترسی به مقدار ذخیره شده در یک سشن کافی است نام آن را به شکل زیر مورد استفاده قرار دهیم. درست همانند آنچه در مورد روش دسترسی به اطلاعات آرایهها بکار میگرفتیم.
<?php
session_start();
$_SESSION['user'] = "mojtaba";
echo $_SESSION['user'];
?>
کد بالا باعث نمایش کلمه mojtaba در مرورگر کاربر میشود. اما برای اینکه نوع عملکرد سشنها را بهتر درک کنید، یک مثال ساده میزنیم. نرمافزار Xampp را مثل همیشه اجرا کنید. حالا در پوشه htdocs یک پوشه به اسم exam ایجاد کرده و در این پوشه نیز دو فایل به نامهای yek.php و do.php بسازید. فایل yek.php را باز کرده و کد زیر را در آن قرار دهید:
<?php
session_start();
$_SESSION['isAdmin'] = true;
$_SESSION['username'] = "zoomit";
?>
حال فایل را ذخیره کنید و فایل do.php را باز کرده و کدهای زیر را در آن قرار دهید:
<?phpsession_start();
if ($_SESSION['isAdmin'] == true){
echo "you are admin and your username is $_SESSION['username']";
}else{
echo "session is not set!";
}
?>
پس از آغاز سشن، ما دو سشن جدید به نامهای isAdmin و username را در فایل yek.php ایجاد کردیم و مقدار آنها را به ترتیب true و zoomit تعیین کردیم. دقت کنید که مقدار سشن isAdmin از نوع Boolean تعیین شده است. حال در فایل do.php پس از اجرای سشن با تابع ()session_start با یک دستور if مقدار سشن isAdmin را بررسی کردهایم که در صورت true بودن پیامی چاپ شود و در این پیام مقدار سشن username نیز به کاربر نمایش داده میشود. در غیر این صورت پیام session is not set به کاربر نمایش داده میشود.
همانطور که میبینید ما سشنها را در فایل yek.php ایجاد کردیم ولی توانستیم در فایل do.php نیز به آنها دسترسی داشته باشیم.
روش کارکرد کوکیها نیز تقریبا به همین صورت است با این تفاوت که کوکیها در سرور ذخیره نخواهند شد و در عوض در سیستم کاربران ذخیره و در مواقع نیاز از طریق مرورگر فراخوانی میشوند. از کوکیها بیشتر به منظور شناسایی کاربران استفاده میکنیم. با استفاده از پیاچپی میتوانیم کوکیهای جدید را ایجاد و مقداردهی و نیز فراخوانی کنیم.
برای تعریف یک کوکی جدید از تابع setcookie استفاده میکنیم. به کد زیر دقت کنید:
<?php
setcoockie(name, value, expire, path, domain, secure, httponly);
?>
برخی از ورودیهای تابع فوق الزامی و برخی دیگر اختیاری هستند. در ادامه به توضیح ورودیهای این تابع میپردازیم.
name: نام کوکی جدید که قصد تعریف آن را داریم
value: مقداری که می خواهیم در کوکی مورد نظرمان ذخیره شود
expire: مدت زمانی که کوکی پس از آن متقضی خواهد شد (بر حسب ثانیه)
path: تعیین مسیر ذخیره کوکی در سرور
domain: تعیین اینکه کوکی در چه دامینی در دسترس باشد
secure: تعیین اینکه آیا کوکی فقط در ارتباطات امن در دسترس باشد یا خیر
httponly: اگر این مقدار true باشد کوکی فقط از طریق http در دسترس خواهد بود
در کد زیر یکی کوکی جدید به نام name میسازیم و مقدار آن را برابر با Mojtaba قرار میدهیم. همچنین زمان انقضای این کوکی را ۳۰ روز میخواهیم تعیین کنیم و بنابراین ۸۴۰۰۰ ثانیه را در ۳۰ ضرب کرده و نتیجه را برای زمان انقضا در نظر گرفتهایم. کاراکتر / به معنای در دسترس بودن کوکی در سراسر دامین است. برای دسترسی به مقدار کوکی همانند سشنها از COOKIE_$ استفاده کردهایم.
<?php
$value = "Mojtaba";
setcoockie ("user", $value, time() + (86400 * 30), '/');
if (isset($_COOKIE['user'])
{
echo "cookie is set and this cookie is: $_COOKIE['user']";
}
?>
در کد بالا تابع isset را در شرط if بکار بردهایم. این تابع بررسی میکند که آیا آنچه قصد بررسیاش را داریم حاوی مقدار است یا خیر. همچنین تابع time زمان کنونی سرور را برمیگرداند.
نکته مهم در مورد استفاده از تابع setcoockie این است که باید حتما پیش از تگ <html> از آن استفاده کنید. مقادر ذخیره شده در کوکیها به صورت رمزنگاری شده درمیآیند و هنگام فراخوانی مجددا به صورت خودکار از حالت رمزنگاری شده خارج میشوند. با این وجود هیچگاه برای ذخیره سازی اطلاعات مهم از کوکیها استفاده نکنید.
از سشنها و کوکیها برای هویت سنجی کاربران میتوان استفاده کرد. تقریبا میتوان گفت که بیشتر سایتهایی که با پیاچپی ایجاد شدهاند، از کوکی و سشن یا ترکیبی از این دو برای بخش ورود کاربران، ورود به بخش مدیریت سیستم و... استفاده میکنند.
در جلسه بعد قصد داریم cms نوشته در جلسات قبل را ارتقا دهیم و بخشی برای ورود مدیر ایجاد کنیم که از آن طریق بتوان فقط در صورتی که نام کاربری و رمزعبور مربوطه را داریم اقدام به ارسال مطلب و دسترسی به بخشهای مدیریت داشته باشیم.
آموزش PHP - جلسه اول معرفی و ابزارهای مورد نیاز | رفتن به مطلب | |
آموزش PHP - جلسه دوم، متغییرها و توضیحات در کدها | رفتن به مطلب | |
آموزش PHP - جلسه سوم: عملگرها | رفتن به مطلب | |
آموزش PHP - جلسه چهارم: آرایه ها | رفتن به مطلب | |
آموزش PHP - جلسه پنجم: عبارات شرطی، دستور if | رفتن به مطلب | |
آموزش PHP - جلسه ششم: حلقه های While و For | رفتن به مطلب | |
آموزش PHP - جلسه هفتم: دستور Switch و آشنایی با Include و Require | رفتن به مطلب | |
آموزش PHP - جلسه هشتم: توابع | رفتن به مطلب | |
آموزش PHP - جلسه نهم: متغیرهای پیش فرض و فرم ها | رفتن به مطلب | |
آموزش PHP - جلسه دهم: پروژه ارسال ایمیل | رفتن به مطلب | |
آموزش PHP - جلسه یازدهم: اتصال به بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه دوازدهم: درج اطالاعات در بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه سیزدهم: خواندن دادهها از بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه چهاردهم: ویرایش داده در بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه پانزدهم: حذف داده ها از بانک اطلاعاتی MySQL | رفتن به مطلب | |
آموزش PHP - جلسه شانزدهم: Session و Cookie | رفتن به مطلب | |
آموزش PHP - جلسه هفدهم: کار با فایل ها | رفتن به مطلب | |
آموزش PHP - جلسه هجدهم: کار با تاریخ و ساعت و تاریخ هجری شمسی | رفتن به مطلب | |
آموزش PHP - جلسه نوزدهم: فیلترهای پی اچ پی (مقدماتی) | رفتن به مطلب | |
آموزش PHP - جلسه بیستم: کار با رشته ها | رفتن به مطلب | |
آموزش PHP - جلسه بیست و یکم: شیء گرایی | رفتن به مطلب | |
آموزش PHP - جلسه بیست و دوم: شیء گرایی (بخش دوم) | رفتن به مطلب | |
آموزش PHP: جلسه بیست و سوم: شیءگرایی (بخش سوم) | رفتن به مطلب | |
آموزش PHP: جلسه بیست و چهارم: شیءگرایی (بخش پایانی) | رفتن به مطلب |