[Powered by Google Translate] [جلسات PHP] [تامی MacWilliam، دانشگاه هاروارد] [این CS50 است.] [CS50.TV] جلسات در PHP را می توان به پیاده سازی توابع استفاده می شود، مثل باری کاربر، در برنامه خود قرار دهید. جلسات PHP به شما اجازه ارتباط اطلاعات با تمام جلسه مرور کاربر نه به سادگی یک صفحه. به طوری که بدان معنی است که کاربر بازدید کنندگان صفحات مختلف PHP که وب سایت شما را تشکیل می دهند، هر گونه اطلاعات در این جلسه ادامه خواهد داشت. به طوری که بدان معنی است که داده ها در جلسه توسط یک صفحه ذخیره شده بعدا می توانید توسط یک صفحه دیگر قابل دسترسی است. ذخیره سازی اطلاعات در یک جلسه آسان است، و ما این کار را از طریق علامت دلار، تاکید، متغیر جلسه سرمایه است. علامت دلار، تاکید، SESSION-درست مانند علامت دلار، تاکید، شو و علامت دلار، تاکید، POST- یک آرایه انجمنی متشکل از جفت کلید است. بنابراین ما می توانیم علامت دلار مانند نحو استفاده کنید، تاکید، جلسه، براکت، نقل قول، تولی، نقل قول، براکت، برابر، نقل قول، نوار، نقل قول، برای ذخیره "نوار" مقدار در کلید "غذایی" با این حال، قبل از ما می تواند خواندن و یا نوشتن از آرایه جلسه، ما نیاز به فراخوانی یک تابع خاص جلسه، تاکید، شروع، () - و این جلسه مقداردهی اولیه. بنابراین اجازه دهید نگاهی به یک مثال. صفحه اول ما، hello.php، استفاده از جلسه به خروجی برخی از داده ها به کاربر. به یاد داشته باشید، ما نیاز به استفاده از خوانی کنیم session_start قبل از ما می تواند هر گونه داده را وارد نمایید دسترسی پیدا کنید. در حال حاضر ما در حال استفاده از Isset PHP را برای تعیین اینکه آیا یک کلید وجود دارد در _SESSION $ آرایه انجمنی. اگر این کلید وجود دارد، که بدان معنی است که کاربر به سیستم وارد شده، بنابراین ما بر روی نام کاربر نمایش داده شود. در صورتی که کلید تنظیم نشده است، این بدان معناست که کاربر به سیستم وارد نشده است، بنابراین ما یک لینک به login.php نمایش داده خواهد شد. بنابراین اجازه دهید نگاهی به login.php. در اینجا، ما باید یک فرم HTML با یک ورودی تک. صفت فرم $ _SERVER ['PHP_SELF'] است، و این به این معنی است که ما می خواهیم به صورت به فایل جاری را مشاهده کنید، که در این مورد، login.php است. بنابراین اجازه بازگشت به بالای این فایل. اگر کاربر ارائه فرم، پس از $ _POST ['نام'] باید تنظیم شود. برای کسب اطلاعات بیشتر در مورد فرم های HTML و پست، چک کردن PHP ویدیو توسعه وب. در صورتی که کاربر را تسلیم فرم، ما می خواهم به ارسال ارزش که آنها در به جلسه تایپ. در حال حاضر ما می تواند کاربر را به hello.php تغییر مسیر. از آنجا که ما ورودی کاربر به جلسه ذخیره کرده اید، hello.php قادر به دسترسی به ارزش است که در login.php تعیین شده خواهد بود. بنابراین اجازه دهید این را بررسی کنید در یک مرورگر وب است. اول، ما به http://localhost/hello.php حرکت. ما در اینجا می توانید ببینید که ما وارد نشده اید و هنوز، بنابراین اجازه دهید که ابتدا ثبت نام ورود به سیستم، که ما را به login.php تغییر مسیر را کلیک کنید. باشه، من بهت نوع به نام من، که پس از آن در جلسه ذخیره می شوند. بزرگ! در حال حاضر ما می تواند ورودی من از login.php در hello.php از طریق جلسه. بنابراین، آنچه در مورد ورود به سیستم کاربر می شود؟ خب، به منظور ورود به سیستم را در کاربر، ما به سادگی ذخیره یک مقدار به نام نمایید. بنابراین برای ورود به سیستم کاربر، ما به سادگی نیاز به حذف نام کلید از آرایه را وارد نمایید. بنابراین اجازه دهید نگاهی به این فایل آخرین، logout.php. یک بار دیگر، ما نیاز به خوانی کنیم session_start () را فراخوانی قبل از ما می توانیم را وارد نمایید هر چیزی مربوط انجام دهد. در حال حاضر ما به سادگی می توانیم session_destroy () را فراخوانی، که مراقبت شدن از تمام داده ها در جلسه شر را و سپس تغییر مسیر به کاربر برگشت به hello.php. پس اگر من بر روی لینک ورود از کلیک، ما می توانید ببینید که سرور را فراموش کرده که من هستم، و من دیگر وارد سایت شوید. بنابراین چه خبر است در اینجا در زیر هود؟ به منظور دریافت رفتار ما فقط دیدم، سرور ما نیاز به انجام 2 چیز است. اول، سرور نیاز به نوعی داده ها را در جلسه ذخیره کنید. فایل های مختلف PHP که شامل وب سایت به عنوان فراخوانی جداگانه ای از مفسر PHP اجرا متغیر محلی می تواند بین آنها به اشتراک گذاشته شود. در عوض، سرور نیاز به ذخیره سازی اطلاعات جلسات ما در برخی از مکان است که چند. فایل های پی اچ پی می تواند دسترسی پیدا کنید. دوم، سرور نیاز به پیوند داده را وارد نمایید تنها با جلسه مرور من. وقتی که من به فیس بوک وارد شوید، احتمالا میلیون ها نفر دیگر نیز به فیس بوک در همان زمان وارد سایت وجود دارد. اما سرور نیاز برخی از راه های ارتباط اطلاعات من با جلسه فعلی من و داده شخص دیگری با یک نشست دیگر. خوشبختانه، نویسندگان PHP در مورد تمام این برای ما فکر کردم، بنابراین ما لازم نیست برای پیاده سازی هر یک از این خودمان. اما اجازه دهید نگاهی به آنچه PHP انجام می دهد به طور پیش فرض. وقتی که من یک صفحه PHP شامل خوانی کنیم session_start برای اولین بار دیدار، PHP یک مقدار تصادفی تولید کند. تا در session_destory نامیده می شود، و یا من هیچ صفحات PHP در آن سایت مراجعه کنید نه برای مدتی- که مقدار تصادفی و احتمالا منحصر به فرد خواهد شد با من در ارتباط است. به این ترتیب این سرور تا برخی از راه های شناسایی را وارد نمایید در حال دیدن سایت من به عنوان به شخص دیگری مخالف است. ما می توانیم نگاهی به ID جلسه فعلی را با استفاده از تابع PHP، session_ID. در اینجا ما به سادگی خروجی ارزش شناسه جلسه ما. بنابراین اگر ما دوباره به عنوان مثال نرم افزار وب وارد شوید، و در حال حاضر حرکت به sessid.php، ما به این رشته طولانی از کاراکتر ها را مشاهده کنید، و شناسه های فعلی برای جلسه من است، و این که چگونه سرور در پیگیری که من هستم. خوب، اما ما تنها را حل نموده نیمی از مشکل. مطمئنا، سرور در حال حاضر برخی از راه های شناسایی من، اما زمانی که من یک صفحه دیگر مراجعه کنید، سرور نیاز به استفاده مجدد است که شناسه همان به جای تولید یک جدید. به یاد داشته باشید، اگر من یک متغیر محلی در foo.php و پس از آن bar.php بازدید، bar.php هیچ راهی برای دانستن اینکه چه چیزی در foo.php اتفاق افتاده است. پس از اجرای جلسه به طور پیش فرض پی اچ پی مستلزم آن است که مرورگر یادآوری سرور که جلسه ID استفاده کنید. این است که در شکل یک کوکی اجرا شده است. کوکی در علاوه بر اینکه یک میان وعده خوشمزه، به سادگی یک فایل متنی کوچک در کامپیوتر شما که یک سرور می تواند از طریق مرورگر وب ارسال. بنابراین پس از PHP تولید منحصر به فرد من ID را وارد نمایید از طریق خوانی کنیم session_start، آن را به مرورگر وب را به ذخیره است که شناسه در یک فایل متنی محلی، و یا یک کوکی. سپس مرورگر وب خواهد شد که شناسه در هر درخواست که آن را به سرور می سازد. پس در واقع، سرور وب است به یاد نمی که من هستم. در عوض، مرورگر وب است که به سادگی به خاطر سپردن شناسه منحصر به فرد است که توسط PHP ایجاد شد و پس از آن به طور مداوم یادآوری سرور آنچه که شناسه است. به این ترتیب، اطلاعات مانند نام کاربر من بر روی سرور مرورگر وب من ذخیره می شود. مرورگر به سادگی می گوید سرور که در PHP ذخیره شده است که اطلاعات بنابراین PHP می توانید آن را بازیابی کنید. به طوری که به این سوال، که در آن است PHP در واقع ذخیره سازی این اطلاعات مستلزم؟ به طور پیش فرض، PHP اطلاعات را وارد نمایید خود را ذخیره کنید در یک فایل داخل / tmp را دارد، و یا پوشه 'دما'. نام آن فایل خواهد ID جلسه شامل بنابراین PHP می تواند تعیین که فایل به خواندن و نوشتن از طریق تنها ID را وارد نمایید. بسیار خوب. بنابراین اجازه دهید باز کردن تب شبکه در دیباگر کروم از طریق نماد آچار در سمت راست بالا. حالا اجازه دهید سر به hello.php دوباره. اجازه دهید به درخواست HTTP را کلیک کنید به hello.php و سپس بر روی عناوین کلیک کنید. در اینجا ما می توانید ببینید که هدر کوکی حاوی یک کلید به نام PHPSESSID، و یا جلسه PHP ID-با ارزش است که که رشته طولانی همان ما شاهد هنگامی که ما sessid.php بازدید کردند. این دقیقا چگونه مرورگر است یادآوری سرور چه ID را وارد نمایید باید مورد استفاده قرار گیرد. این جمله آن را در یک هدر HTTP. بسیار خوب. بیایید سر به ترمینال. اجازه دهید به / tmp را دارد، که در آن PHP است ذخیره سازی اطلاعات را وارد نمایید به طور پیش فرض حرکت. برای اطمینان بیشتر، در داخل این پوشه موقت، در اینجا یک فایل که حاوی دقیقا همان ID را وارد نمایید است. اگر ما برای باز کردن این فایل، ما می توانید ببینید که چگونه PHP است که نشان دهنده وارد نمایید من بر روی دیسک. در اینجا رشته "تامی" است که برای کلید ذخیره نام، که دقیقا همان چیزی است که ما انتظار داشتند. و این یک نمای کلی از جلسه در PHP است. تنها اجرای به طور پیش فرض از جلسه چه ما فقط بود. در واقع، بسیاری از وب سایت تغییر این رفتار پیش فرض برای ذخیره جلسات PHP موثر تر به نفع بهبود عملکرد. نام من تامی است، و این CS50 است. [CS50.TV]