آموزش SESSION در php

Image تحقیقات

آموزش SESSION در php

SESSION هم همانند COOKIE راهی است که از آن طریق می توان یکسری داده های خاص را زمانیکه از یک صفحه سایت به صفحه دیگری می رویم انتقال داده و به عبارتی به خاطر آورد. به عبارت دیگر، فرض کنیم در سایتی ثبت نام کرده ایم و با استفاده از نام کاربری و رمز عبور خود وارد ناحیه کاربری می شویم. پس از ورود به ناحیه کاربری، اگر به صفحات مختلف رجوع کنیم، سایت مد نظر نام کاربری و رمز عبور ما را به خاطر خواهد آورد که این کار بدون استفاده از مفهوم SESSION در زبان برنامه نویسی PHP امکان پذیر نمی باشد.
تفاوت عمده ای که مابین کوکی و سِشِن وجود دارد این است که کوکی ها اطلاعات مورد نیاز خود را روی سیستم کاربر ذخیره می سازند (لذا خیلی ایمن نیستند) اما این در حالی است که سِشِن ها داده های مد نظر خود را روی سرور ذخیره می سازند. از آنجا که سِشِن ها داده های خود را سمت سرور ذخیره می کنند، دارای یکسری مزیت نسبت به کوکی ها می باشند که عبارتند از:
SESSION ها به مراتب ایمن تر هستند چرا که نیازی ندارند تا دائماً دادها را مابین سرور و کلاینت رد و بدل کنند.
SESSION ها این امکان را به شما می دهند تا اطلاعات بیشتری را نسبت به کوکی ها ذخیره سازید و بعداً از آنها استفاده نمایید.
کوکی ها برای آنکه مورد استفاده قرار گیرند می بایست توسط کاربر تایید شوند اما SESSION ها نیازی به تایید کاربران ندارند.
درست است که SESSION ها به مراتب کاربردی تر از کوکی ها هستند، اما جاهایی در برنامه نویسی پی اچ پی وجود دارد که استفاده از کوکی ها منطقی تر است که عبارتند از:
استفاده و فراخوانی کوکی ها در کل آسانتر است.
به طور کلی، منابع سمت سرور کمتری استفاده می کند.
ماندگاری آنها در طول زمان بیشتر است.


به طور خلاصه، بایستی گفت زمانی می بایست از کوکی ها استفاده کرد که خیلی نیازی به امنیت نداشته باشیم و بخواهیم حجم داده های اندکی را ذخیره سازیم.
ساز و کار سِشِن به این صورت است که وقتی یکی از آنها را ایجاد می کنیم، یک Session ID به صورت تصادفی ایجاد شده (یک شماره تصادفی ایجاد می گردد) و در یک فایل متنی که روی سرور قرار گرفته است ذخیره می گردد و این در حالی است که هر کاربری Session ID مخصوص به خود را خواهد داشت.
برای روشن شدن این مسئله مثالی می زنیم. فرض کنیم که در سایتی ثبت نام کرده ایم و با استفاده از نام کاربری و رمز عبور خود وارد ناحیه کاربری می شویم. به محض ورود به ناحیه کاربری، روی سرور یک Session ID برای ما ایجاد شده و به صورت پیش فرض در قالب یک کوکی برای مرورگر ما ارسال می شود. از این پس، مرورگر از آن کوکی برای دریافت اطلاعات پنل کاربری ما استفاده خواهد کرد تا زمانیکه آن کوکی حذف گردد.

نحوه ساخت یک SESSION در زبان PHP

به طور کلی، ایجاد، فراخوانی و حذف یک سِشِن با استفاده از متدی تحت عنوان ()session_start صورت می گیرد. جایگاه قرارگیری این متد هم همانند کوکی ها، می بایست قبل از هر کدی (خواه کد پی اچ پی و خواه کد اچ تی ام ال) صورت گیرد (حتی Space هم نمی بایست قبل از آن باشد.)
بنابراین، در هر صفحه ای که می خواهیم از سِشِن استفاده کنیم، می بایست کد زیر را در اولین خط قرار دهیم:

پس از آنکه سِشِن آغاز شد، می توان داده های مختلفی را از طریق آرایه SESSION_$ روی آن ذخیره ساخت (نحوه استفاده از این آرایه، همانند آرایه های POST و GET و COOKIE و … است که پیش از این با آنها آشنا شده ایم.)
برای روشن شدن این مسئله، کدهای زیر را مد نظر قرار می گیریم:
اکنون برای آنکه به صورت عملی سِشِن را مورد استفاده قرار دهیم، کدهای آموزش “تست کردن یک فرم برای اطمینان حاصل کردن از پر بودن تمامی فیلدهای آن” را مد نظر قرار می دهیم:



    Netshahr.com PHP Course

LOGIN FORM:
    ';
            echo '';
            echo '
';
            echo '';
        }
    ?>

حال کدهای فوق را به صورت زیر تکمیل می کنیم:





    Netshahr.com PHP Course

LOGIN FORM:
    ';
            echo '';
            echo '
';
            echo '';
        }
    ?>

 

همانطور که در کد فوق ملاحظه می شود، در اولین خط از این صفحه از متد session_start استفاده نموده ایم (به خاطر داشته باشیم که چه بخواهیم یک سِشِن ایجاد کنیم و یا یک سِشِن را فراخوانی کنیم، می بایست از این متد استفاده کنیم.)
در ادامه، می بایست تا با استفاده از آرایه ای تحت عنوان SESSION نام کاربری و رمز عبور را در این آرایه ذخیره سازیم. برای این منظور، کدهای فوق را به صورت زیر تکمیل می کنیم:





    Netshahr.com PHP Course

LOGIN FORM:
    ';
            echo '';
            echo '
';
            echo '';
        }
    ?>

همانطور که در کد فوق می بینیم، داخل شرطی که چک می کند ببیند آیا نام کاربری و رمز عبور درست هستند یا خیر، با استفاده از آرایه SESSION اقدام به ساخت مقداری تحت عنوان user_name کرده و مقدار این آرایه را برابر با Behzad قرار داده ایم.
از این پس، به محض اینکه کاربر نام کاربری و رمز عبور خود را به صورت صحیح وارد فرم لاگین کند، این آرایه ساخته شده و به راحتی می توانیم از این آرایه در سایر صفحات وب سایت برای شناسایی کاربر استفاده کنیم.
برای اینکه متوجه شویم که سِشِن به درستی کار می کند، اقدام به ساخت فایل جدیدی تحت عنوان logged-in.php می کنیم و اقدام به نوشتن کدهای زیر داخل آن می نماییم (فقط توجه داشته باشیم که این فایل جدید می بایست دقیقاً داخل همان فولدری باشد که فایل index.php داخل آن قرار دارد):

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

آموزش SESSION در php

 

حال نام کاربری behzad و رمز عبور test-pass را وارد فیلدهای مربوطه می کنیم:

آموزش SESSION در php

آموزش SESSION در php

پس از وارد کردن نام کاربری و رمز عبور، روی دکمه Login کلیک می کنیم:

آموزش SESSION در php

آموزش SESSION در php

می بینیم از آنجا که نام کاربری و رمز عبور درست هستند، پیام Welcome به معنی “خوش آمدید” نمایش داده می شود. در این مرحله یک سِشِن ایجاد شده است و نام کاربری را هم در خود ذخیره ساخته است. اکنون می خواهیم وارد فایل logged-in.php شویم:

آموزش SESSION در php

آموزش SESSION در php

همانطور که در تصویر فوق مشخص است، وارد فایل logged-in.php شده ایم و از آنجا که در این فایل هم از متد session_start استفاده نموده ایم، پس اطلاعات کاربری ما را به خاطر خواهد آورد. حال یکبار مرورگر را بسته و مجدد آن را باز می کنیم و آدرس localhost/php/logged-in.php را وارد آن می کنیم:

آموزش SESSION در php

آموزش SESSION در php

پس از بسته شدن مرورگر، سِشِن از بین رفته است و وقتی که مجدد می خواهیم وارد صفحه logged-in.php شویم با ارور فوق مواجه خواهیم شد.
برای رفع این مشکل می بایست از یک دستور شرطی استفاده کنیم مبنی بر اینکه اگر آرایه user_name اصطلاحاً Set نشده بود، کاربر به صفحه index.php اصطلاحاً Redirect شود. برای این منظور، فایل logged-in.php را به صورت زیر ویرایش می کنیم:

آموزش SESSION در php

می بینیم که وارد localhost شده سپس وارد فولدر مربوطه شده (که در اینجا نام آن php است) و در نهایت هم آدرس فایل logged-in.php را تایپ کرده ایم. اکنون دکمه اینتر را می فشاریم:

آموزش SESSION در php

آموزش SESSION در php

می بینیم از آنجا که آرایه user_name اصطلاحاً Set نشده است یا “ایجاد” نشده است، لذا به صفحه index.php ارجاع داده می شویم.

 

نحوه حذف یک SESSION در زبان PHP

زمانیکه یک سِشِن ایجاد می شود، داده های آن در دو محل ذخیره می شوند: یکی داخل آرایه SESSION و دیگری در یک فایل متنی که روی سرور قرار دارد و هر وقت هم که بخواهیم یک سِشِن را حذف کنیم، می بایست هر دو جا را پاک کنیم.
طبق معمول، برای حذف یک سِشِن بایستی ابتدا از متد session_start استفاده نماییم:

برای آنکه نحوه پاک کردن سِشِن را به طور عملی یاد بگیریم، پروژه ای که در آموزش قبل نوشتیم را مورد استفاده قرار می دهیم. در این آموزش، قصد داریم تا امکان خروج از ناحیه کاربری را به پروژه خود اضافه نماییم. برای این منظور، فایل logged-in.php را به صورت زیر تکمیل می کنیم:

آموزش SESSION

اکنون می بایست فایل logout.php را ایجاد کرده و کدهای آنرا به صورت زیر تکمیل کنیم:

آموزش SESSION

پس از وارد کردن نام کاربری و رمز عبور و وارد شدن به آدرس logged-in.php با تصویر فوق مواجه خواهیم شد. اکنون روی لینک Logout کلیک می کنیم:

آموزش SESSION

آموزش SESSION

می بینیم که پس از پاک شدن سِشِن، به صفحه index.php ارجاع داده شده ایم.
نکته پایانی که در مورد سِشِن ها وجود دارد این است که با استفاده از متدی تحت عنوان unset می توان مقادیر آرایه SESSION را به صورت تک به تک نیز حذف نمود. برای مثال، کدهای فوق را می توان به صورت زیر بازنویسی کرد:

<?php
    session_start();
    unset($_SESSION['user_name']);
    session_destroy();
    header("Location:index.php");

همانطور که در کد فوق می بینیم، از متد unset استفاده نموده (این متد عکس متد isset است) و مقدار user_name را در آرایه SESSION هدف قرار داده ایم و آنرا حذف نموده ایم.

برگرفته از  نت شهر