php کاربر نمایه را لمس کرد. ایجاد پروفایل کاربری ثبت شده

من می خواهم این درس را به خلق کردن اختصاص دهم پروفایل شخصیبرای کاربران ثبت نام شده (افزودنی به درس ایجاد ثبت نام کاربر در سایت). اکنون کاربران می توانند آواتار خود را اضافه کنند، نام و نام خانوادگی خود را تغییر دهند، محل زندگی و تاریخ تولد خود را اضافه کنند. برای انجام این کار، در جدول کاربرانبیایید چند فیلد اضافه کنیم:

حالا بیایید یک صفحه پروفایل ایجاد کنیم profile.phpو آن را به صفحه اضافه کنید index.phpبه آن پیوند دهید

اکو"
پروفایل من"؛ حالا کد مربوط به خود صفحه profile.php

مشخصات<?php echo $login; ?>

مشخصات



"؛ پژواک" ".$array["name_user"]." ".$array["نام خانوادگی"]."
"; switch ($array["birthdate_month"])(//تبدیل شماره ماه به نام "1" : $month = "January"; break; case "2" : $month = "February"; break; case " 3 " : $month = " 4 " : $month = "April " ; "June case" : $ماه وقفه "8"; 10" : $month = "اکتبر"؛ ​​شکست؛ مورد "11" : $month = "نوامبر"؛ break; $month = "دسامبر"; echo "تاریخ ثبت: ".$array[" reg_date"]."
"; echo "جنسیت: ".$array["sex"]."
"; echo "Birthday: ".$array["birthdate_day"]." ".$month." ".$array["birthdate_year"]."
"; echo "Country: ".$array["country"]."
"; echo "City: ".$array["city"]."
"; if($_GET["id"] == $id_user)(//فقط مالک می تواند پژواک نمایه را ویرایش کند "ویرایش نمایه"؛ ) )else( print<<ورود:
وارد شدن: کلمه عبور:
ثبت نام بازیابی رمز عبور در اینجا؛ )؟>

طبیعتا با رفتن به این صفحه شاهد یک آواتار استاندارد خواهیم بود noAvatar.jpgو احتمالاً نام و نام خانوادگی، در صورتی که کاربر هنگام ثبت نام آنها را ذکر کرده باشد، موارد باقیمانده خالی خواهد بود. در انتهای این صفحه پیوندی به صفحه ویرایش پروفایل وجود دارد edit.php. کد این صفحه بسیار سبک است و از فرم های ورود اطلاعات تشکیل شده است. با توجه به حجم نسبتاً زیاد، من آن را در اینجا به طور کامل ارائه نمی دهم، اما فقط بخشی از آن را می توان به طور کامل در فایل های منبع دریافت کرد.

همه اشکال دیگر مشابه هستند و به یک کنترل کننده اشاره می کنند save_edit.php، که تغییراتی را در پایگاه داده ایجاد می کند. همچنین کد نسبتاً بزرگی دارد و من آن را در اینجا نیز ارائه نمی‌کنم، اما فقط کمی در مورد آنچه در آن اتفاق می‌افتد به شما می‌گویم (همچنین می‌توانید کد کامل را در فایل‌های منبع پیدا کنید). اول از همه، یک آواتار ایجاد می کنیم، البته اگر کاربر آن را آپلود کرده باشد، در غیر این صورت استاندارد را رها می کنیم. اگر اینطور است، ابتدا آن را در پوشه دانلود می کنیم آواتارها(به هر حال، این پوشه را ایجاد کنید و پس از بررسی با پسوندهای مجاز، مجوز نوشتن 755 را به آن بدهید). سپس یک تصویر جدید با فرمت بسته به حالت انتخاب شده ایجاد می شود: $rezim = 1یک تصویر مربع ایجاد می شود، Rezim $ = 2تصویر متناسب با تصویر اصلی است. همچنین باید عرض تصویر ایجاد شده را تنظیم کنید $wو کیفیت کیفیت دلار. با استفاده از تابع تصویر ایجاد شده را با فرمت jpg ذخیره می کنیم imagejpegو یک نام تصادفی برای آن ایجاد کنید. اکنون باید تصویر قدیمی را حذف کرده و در پایگاه داده با یک تصویر جدید به روز کنید. این همه برای تصاویر است.

تمام موارد دیگر در این فایل برای به روز رسانی داده های شخصی در مورد کاربر در نظر گرفته شده است و عبارت است از پرس و جوهای ساده به پایگاه داده برای به روز رسانی فیلدها. قبل از به روز رسانی، وجود متغیرهای ورودی و ایمنی آنها با استفاده بررسی می شود نوارهای شلاقیو کاراکترهای ویژه html. اگر آپدیت با موفقیت انجام شود، بلافاصله کاربر را به صفحه نمایه هدایت می کنیم.
حالا بیایید مطمئن شویم که کاربر وارد شده می تواند همه کاربران ثبت نام شده دیگر را ببیند. برای این کار بیایید یک صفحه ایجاد کنیم user.php، که همه کاربران را در یک حلقه نمایش می دهد.

قبلاً در مورد کاربران وردپرس نوشتم (به لینک مراجعه کنید). اما مانند هر ابزاری (به جز پتک)، Adminimize ایده آل نیست و نمی تواند همه چیز را به طور کامل حذف کند، اگرچه این فقط به لطف برنامه نویسان وردپرس است.

این پست به طور خود به خود متولد شد، می توانید با تشکر از مهمان Blow. اصل سوال او این بود (بیشتر شبیه به یک سری سوال):

1. چگونه می توان "انتخاب طرح رنگ" را برای کاربر پنهان کرد؟

2. چگونه «کلیدهای داغ» و «ویرایشگر بصری» را در پنل وردپرس مخفی کنیم؟

من مستقیماً می روم سر اصل مطلب. با استفاده از این روش می توانید هر عنصری را برای کاربر در پروفایل خود و سایر صفحات نیز مخفی کنید. ساده ترین راه ویرایش فایل نمایشی است!

برای "نمایه" این یک فایل است user-edit.php، که در پوشه قرار دارد wp-admin.شما باید آن را با دقت ویرایش کنید، در غیر این صورت می توانید به خوبی برای آزمایش های خود "پرداخت" کنید.

راه حل (یکپارچه):

1. فایل را در کامپیوتر خود دانلود کنید و از آن یک کپی تهیه کنید (ایمن...)

2. ما به دنبال کد HTML هستیم که وظیفه نمایش اطلاعات مورد نیاز ما را بر عهده دارد.

3. با دقت در مورد آن نظر دهید و دوباره آن را با جایگزینی «پر کنید».

اکنون تمرین کنید (ویرایش User-edit.php):

راستش یادم نمیاد چه ورژنی از WP رو تو سایت تست دارم ولی قطعا کمتر از 2.8.2 نیست.

ابتدا فایل را در رایانه شخصی خود دانلود کردم و با استفاده از Chrome Code Viewer به کد آن نگاه کردم و کد مورد نیاز را در Notepad++ پیدا کردم.

(دو خط تیره در هر طرف "-")

1. "ویژوال ویرایشگر" را پنهان کنید

تغییر به کد:

—>

ps: این کد را کپی نکنید، بلکه خودتان آن را تغییر دهید - احتمال خطا زیاد است!!!

2. "انتخاب طرح رنگ" را مخفی کنید.

امیدوارم متوجه تفاوت کدها شده باشید - در مجموع 7 کاراکتر اضافه شده است. برای پنهان کردن این مورد ما به دنبال آن هستیم if (count($_wp_admin_css_colors) > 1)و زیر خط تمام کدهای بین را کامنت کنید قبل از

3. "کلیدهای داغ" را پنهان کنید.

مسائل کلی

س:نمایه ساز فعالیت سرور را نشان می دهد، اما همه درخواست ها و جلسات را نشان نمی دهد.

آ:فراموش نکنید که روی دکمه Start کلیک کنید تا ضبط جلسات شروع شود.

س:من موفق به اتصال به MySQL شدم، اما Session ها نشان داده نمی شوند.

آ: Neor Profile SQL به عنوان یک سرور پروکسی کار می کند. این بدان معنی است که فقط جلساتی که از نمایه ساز عبور می کنند را می توان نشان داد. برنامه (یا وب سایت) شما باید به نمایه ساز متصل باشد، گویی یک سرور MySQL معمولی است. نمایه ساز فقط از اتصالات ورودی TCP استفاده می کند. و سپس نتیجه را در تب Sessions خواهید دید.

س:چرا برخی از جلسات درخواست هایی با زمان صفر دارند؟

آ:پرس و جوهای زمان صفر بسیار سریع و بدون تاخیر اجرا می شوند. برای مثال، اگر سرور قدرتمند و جداول بهینه سازی شده ای دارید، چنین پرس و جوهایی می توانند توسط DBMS ذخیره شوند یا خیلی سریع اجرا شوند.

س:% از نظر زمان و مدت در یک جلسه به چه معناست؟

آ:"Time %" درصدی از کل زمان اجرای جلسه است. "Duration %" درصد طولانی ترین درخواست در جلسه است (نسبت به طولانی ترین درخواست).

س:من از JetProfiler استفاده می کنم و تنظیم آن راحت تر است.

آ: JetProfiler اطلاعات را از سرور MySQL از طریق دستور "show status" دریافت می کند و نمی تواند تمام اطلاعات سرور را به دست آورد، زیرا به صورت مجزا کار می کند. Neor Profile SQL کاملاً تمام پرس و جوها را به پایگاه داده نشان می دهد. و این نیاز به پیکربندی برنامه شما برای مسیریابی جریان درخواست از طریق پروفایلر دارد.

س:دکمه Profile در تب SQL نتیجه را نشان نمی دهد

آ:ویژگی نمایه سازی در ویرایشگر SQL از طریق دستور SHOW PROFILES کار می کند که با شروع نسخه 5.0.37 به MySQL Community Server اضافه شد. نسخه سرور MySQL خود را بررسی کنید.

س:آیا می توان پروفایلر را مبتنی بر کنسول ساخت؟

آ:برای کنسول، از ترکیبی از لاگ و دم DBMS یا ابزارهای کنسول ویژه استفاده کنید که تعداد کمی از آنها وجود دارد. Neor Profile SQL یک برنامه سیستم عامل پنجره ای است که برای قرار دادن در سیستم توسعه دهنده طراحی شده است.

س:پروفایلر کار می کند اما به دلایلی نمودار اصلی آمار را نمایش نمی دهد؟

آ:نمودار اصلی از دستور SHOW STATUS برای سرور اصلی استفاده می کند. ممکن است شما اجازه اجرای این دستور را در سرور نداشته باشید. مطمئن شوید که مجوز این دستور را دارید.

س:چگونه نصب کننده را در حالت بی صدا اجرا کنیم؟

آ: sqlprofiler-4.1.1.exe /S /D:C:Program Files (x86)Neor Profile SQL

پنجره ها

س:چگونه اتصال Profiler را بررسی کنیم؟

آ:از کلاینت کنسول MySQL برای اتصال به پروفایلر استفاده کنید. اگر جلسه خود را در تب Sessions مشاهده کردید، به این معنی است که همه چیز به درستی پیکربندی شده است.
مثلا:
سپس یک دستور ساده SQL را اجرا کنید:
نمایش جداول؛
و به آنچه در تب Sessions در پروفایلر رخ داده است نگاه کنید.

لینوکس

س:من نمیتونم از طریق لوکال هاست وصل بشم

آ:لینوکس سعی می کند لوکال هاست را با یک اتصال سوکت مرتبط کند، اما Neor Profile SQL فقط با اتصالات TCP کار می کند. آدرس سرور در پروفایلر را به جای لوکال هاست روی 127.0.0.1 قرار دهید. شما می توانید همین کار را در تنظیمات برنامه خود انجام دهید.
مثلا:
mysql --host=127.0.0.1 --user=LOGIN --password=PASSWORD --port=4040

س:من نمیتونم به 127.0.0.1 وصل بشم.

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

س:چگونه Neor Profile SQL را تحت OpenSUSE نصب کنیم؟

آ:در حال حاضر ما فقط از بسته DEB پشتیبانی می کنیم که بر روی توزیع های Ubuntu، Debian و لینوکس سازگار اجرا می شود. شما می توانید یک فایل RPM خودتان بسازید و در نتیجه کمک کنید.

س:چرا نمی توانم درخواست های Sysbench را رهگیری کنم؟

آ:نمایه ساز فقط از اتصالات ورودی TCP استفاده می کند. Sysbench را با پارامترهای میزبان و پورت اجرا کنید:
sysbench --test=oltp --mysql-host=127.0.0.1 --mysql-port=4040--mysql-user=root --mysql-password=password آماده سازی

Mac OS X

س:نمایه ساز نمی تواند به سرور MAMP MySQL متصل شود.

آ:مشکل اتصال شبکه در پیکربندی MySQL:

  1. MAMR
    نسخه رایگان- پیکربندی استاندارد MySQL را در پوشه کپی کنید
    /Applications/MAMP/conf/my.cnf
    نسخه حرفه ای– منوی FILE – EDIT – قالب MySQL را باز کنید
  2. در پیکربندی my.cnf، خط skip-networking را حذف کنید
  3. در تنظیمات Profiler، آدرس میزبان پایگاه داده را از localhost به 127.0.0.1 تغییر دهید.

تغییر پورت MySQL در اسکریپت

در Neor Profile SQL، پورت پیش فرض 4040 است. برای جمع آوری پرس و جوهای SQL، باید مقادیر پیش فرض اتصال به هاست MySQL و پورت 3306 را در اسکریپت خود تغییر دهید.

string connStr = " server=127.0.0.1;port=4040;پایگاه داده=YOUR_DATABASE;user=YOUR_USER;password=YOUR_PASSWORD;";
http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-intro.html


تغییر پورت در CMS محبوب

وردپرس

فایل: wp-config.php
Code: define("DB_HOST", "localhost :4040 ");

پرستاشاپ

فایل: config/settings.inc.php
کد: define("_DB_SERVER_", "localhost :4040 ");

OpenCart

فایل: config.php
Code: define("DB_HOSTNAME", "localhost :4040 ");

در درس دوم دو کلاس دیگر می نویسیم و قسمت داخلی فیلمنامه را به طور کامل تمام می کنیم.

طرح

هدف از این مجموعه آموزشی ایجاد یک اپلیکیشن ساده است که به کاربران امکان ثبت نام، ورود به سیستم، خروج از سیستم و تغییر تنظیمات را می دهد. کلاسی که شامل تمام اطلاعات کاربر خواهد بود User نامیده می شود و در فایل User.class.php تعریف می شود. کلاسی که مسئول ورودی/خروجی خواهد بود UserTools (UserTools.class.php) نامیده می شود.

کمی در مورد نامگذاری کلاس

آداب مناسب این است که فایل هایی را نامگذاری کنید که کلاسی را با همان نام خود کلاس توصیف می کنند. این امر تعیین هدف هر فایل در پوشه کلاس ها را آسان می کند.

همچنین اضافه کردن .class یا .inc به انتهای نام فایل کلاس معمول است. به این ترتیب ما هدف فایل را به وضوح تعریف می کنیم و می توانیم از htaccess. برای محدود کردن دسترسی به این فایل ها استفاده کنیم.

کلاس کاربر (User.class.php)

این کلاس هر کاربر را تعریف می کند. با رشد این نرم افزارممکن است تعریف "کاربر" به طور قابل توجهی تغییر کند. خوشبختانه، برنامه نویسی OOP اضافه کردن ویژگی های کاربر اضافی را آسان می کند.

سازنده

در این کلاس از سازنده استفاده خواهیم کرد - این تابعی است که به طور خودکار هنگام ایجاد کپی بعدی کلاس فراخوانی می شود. این به ما اجازه می دهد تا پس از ایجاد پروژه، برخی از ویژگی ها را به طور خودکار منتشر کنیم. در این کلاس، سازنده یک آرگومان منفرد را می گیرد: یک آرایه انجمنی که شامل یک ردیف از جدول کاربران پایگاه داده ما است.

require_once "DB.class.php"؛ کلاس کاربر ($id عمومی، نام کاربری عمومی، $hashedPassword عمومی، ایمیل عمومی $.
عمومی $joinDate;
//سازنده زمانی فراخوانی می شود که یک شی جدید ایجاد شود//یک آرایه انجمنی را با ردیف DB به عنوان آرگومان می گیرد. تابع __construct($data) ($this->id = (isset($data["id"])) ? $data["id"] : ""؛ $this->username = (isset($data[" نام کاربری"])) ? $data["username"] : ""; $this->hashedPassword = (isset($data["password"])) ? $data["password"] : ""; $this- >email = (isset($data["email"]) $data["email"] : "" $this->joinDate = (isset($data["join_date"]) $data["join_date"; "] : "";)
تابع عمومی save($isNewUser = false) ( //یک شی پایگاه داده جدید ایجاد کنید. $db = new DB(); //اگر کاربر قبلا ثبت نام کرده باشد و ما //فقط اطلاعات او را به روز کنیم. if(!$isNewUser ) (//تنظیم آرایه داده $data = array("username" => ""$this->username"", "password" => """$this->hashedPassword"",
"email" => ""$this->email"");
//به روز رسانی ردیف در پایگاه داده $db->update($data, "users", "id = ".$this->id); )else (//اگر کاربر برای اولین بار ثبت نام می کند. $data = array("username" => ""$this->username"", "password" => """$this->hashedPassword"" , "email" => ""$this->email"", "join_date" => """.date("Y-m-d H:i:s",time())."""); ->insert($data, "users") $this->joinDate = time(); ) ) ?>

توضیح

قسمت اول کد، خارج از منطقه کلاس، اتصال کلاس به پایگاه داده را تضمین می کند (زیرا کلاس User تابعی دارد که به این کلاس نیاز دارد).

به جای متغیرهای کلاس "حفاظت شده" (که در درس اول استفاده می شود)، آنها را به عنوان "عمومی" تعریف می کنیم. این بدان معناست که هر کد خارج از کلاس هنگام کار با شی User به این متغیرها دسترسی دارد.

سازنده آرایه ای می گیرد که در آن ستون های جدول کلید هستند. ما یک متغیر کلاس را با استفاده از $this->variablename تعریف می کنیم. در مثال این کلاس، ابتدا بررسی می کنیم که آیا مقدار یک کلید خاص وجود دارد یا خیر. اگر بله، متغیر کلاس را روی آن مقدار قرار می دهیم. در غیر این صورت، رشته خالی. کد از شکل کوتاه نماد استفاده می کند اگر:

$value = (3 == 4) ? "الف": "ب"؛

که در در این مثالبررسی می کنیم که آیا 3 برابر است با چهار! اگر بله - پس $value = "A"، نه - $value = "B". در مثال ما، نتیجه $value = "B" است.

ما اطلاعات کاربران را در پایگاه داده ذخیره می کنیم

تابع ذخیره برای ایجاد تغییرات در جدول پایگاه داده با مقادیر فعلی در شی User استفاده می شود. این تابع از کلاس DB که در درس اول ساختیم استفاده می کند. با استفاده از متغیرهای کلاس، آرایه $data تنظیم می شود. اگر داده‌های کاربر برای اولین بار ذخیره می‌شوند، $isNewUser به عنوان $true (به طور پیش‌فرض نادرست) ارسال می‌شود. اگر $isNewUser = $true باشد، تابع insert() کلاس DB فراخوانی می شود. در غیر این صورت تابع update() فراخوانی می شود. در هر دو مورد، اطلاعات از شی کاربر در پایگاه داده ذخیره می شود.

کلاس UserTools.class.php

این کلاس حاوی توابعی است که به کاربران مرتبط هستند: login()، logout()، checkUsernameExists() و get(). اما با گسترش این اپلیکیشن، می توانید بسیاری دیگر را اضافه کنید.

//UserTools.class.php require_once "User.class.php"; require_once "DB.class.php"؛
کلاس UserTools (
//کاربر را وارد کنید. ابتدا بررسی می کند که آیا // نام کاربری و رمز عبور با یک ردیف در پایگاه داده مطابقت دارند یا خیر. //در صورت موفقیت آمیز بودن، متغیرهای جلسه // را تنظیم کنید و شی کاربر را در آن ذخیره کنید.
ورود به سیستم عملکرد عمومی ($username، $password)
{
$hashedPassword = md5($password); $result = mysql_query("SELECT * FROM users WHERE username = "$username" AND password = "$hashedPassword""); if(mysql_num_rows($result) == 1) ($_SESSION["user"] = serialize(کاربر جدید(mysql_fetch_assoc($result))); $_SESSION["login_time"] = time(); $_SESSION["logged_in" "] = 1؛ بازگشت true; )else( return false; ))
//کاربر را از سیستم خارج کنید. متغیرهای جلسه را از بین ببرید. عملکرد عمومی logout() ( unset($_SESSION["user"]); unset($_SESSION["login_time"]); unset($_SESSION["logged_in"]); session_destroy(); ) //بررسی کنید ببینید آیا یک نام کاربری وجود دارد //این در هنگام ثبت نام فراخوانی می شود تا مطمئن شود همه نام های کاربری منحصر به فرد هستند. عملکرد عمومی checkUsernameExists($username) ($result = mysql_query("انتخاب شناسه از کاربرانی که username="$username""); if(mysql_num_rows($result) == 0) ( return false; )else( return true; )
}
//دریافت یک کاربر //یک شی User را برمی گرداند. شناسه کاربران را به عنوان یک تابع عمومی ورودی دریافت می کند get($id) ($db = new DB(); $result = $db->select("users", "id = $id")؛ بازگشت کاربر جدید($result ) )
?>

تابع login().

تابع login() با نامش مشخص است. آرگومان های کاربر $username و $password را می گیرد و مطابقت آنها را بررسی می کند. اگر همه چیز مطابقت داشت، یک شی User با تمام اطلاعات ایجاد می کند و آن را در جلسه ذخیره می کند. لطفا توجه داشته باشید که ما فقط از تابع PHP serialize() استفاده می کنیم. این یک نسخه ذخیره شده از شی ایجاد می کند که می تواند به راحتی با استفاده از unserialize () غیر سریال شود. همچنین زمان ورود ذخیره خواهد شد. این می تواند بعداً برای ارائه اطلاعات در مورد مدت اقامت در سایت به کاربران استفاده شود.

همچنین ممکن است متوجه شوید که $_SESSION["logged_in"] را روی 1 تنظیم کرده ایم. این به ما امکان می دهد به راحتی در هر صفحه بررسی کنیم که آیا کاربر وارد شده است یا خیر. کافی است فقط این متغیر را بررسی کنید.

تابع ()logout

همچنین عملکرد ساده. تابع PHP unset () متغیرها را در حافظه پاک می کند، در حالی که session_destroy () جلسه را حذف می کند.

تابع checkUsernameExists().

هر کسی که انگلیسی بلد باشد به راحتی عملکرد را درک خواهد کرد. به سادگی از پایگاه داده می پرسد که آیا از یک ورود مشابه استفاده شده است یا خیر.

تابع get().

این تابع شناسه منحصر به فرد کاربر را می گیرد و با استفاده از کلاس DB، یعنی تابع select() یک پرس و جو در پایگاه داده ایجاد می کند. یک آرایه انجمنی با تعدادی از اطلاعات کاربر می گیرد و یک شی کاربر جدید ایجاد می کند و آرایه را به سازنده ارسال می کند.

کجا می توانم از این استفاده کنم؟ به عنوان مثال، اگر صفحه ای ایجاد می کنید که نیاز به نمایش پروفایل های کاربر خاص دارد، باید این اطلاعات را به صورت پویا واکشی کنید. به این صورت می توانید این کار را انجام دهید: (فرض کنید URL http://www.website.com/profile.php?userID=3 است)

//note: ابتدا باید یک اتصال پایگاه داده را باز کنید. // برای اطلاعات بیشتر در مورد انجام این کار به قسمت 1 مراجعه کنید. //همچنین باید مطمئن شوید که فایل های کلاس را وارد کرده اید.
$tools = new UserTools(); $user = $tools->get($_REQUEST["userID"]); echo "Username: ".$user->username.""; echo "Joined On: ".$user->joinDate."";

به آسانی! آیا حقیقت دارد؟

آخرین لمس در سمت سرور: global.inc.php

global.inc.php برای هر صفحه در سایت مورد نیاز است. چرا؟ به این ترتیب ما تمام عملیات معمولی را که به آن نیاز داریم در صفحه قرار می دهیم. برای مثال، session_start() را شروع می کنیم. اتصال پایگاه داده نیز باز خواهد شد.

require_once "classes/UserTools.class.php";
require_once "classes/DB.class.php";
//اتصال به پایگاه داده $db = new DB(); $db->connect();
//initialize UserTools شی $userTools = new UserTools(); //شروع جلسه
session_start();
//بازخوانی متغیرهای جلسه اگر وارد شده باشید if(isset($_SESSION["logged_in"])) ($user = unserialize($_SESSION["user"]); $_SESSION["user"] = serialize($userTools-> get($user->id) ) ?>

داره چیکار میکنه؟

اینجا چند چیز در جریان است. اول از همه، ما یک اتصال به پایگاه داده را باز می کنیم.

پس از اتصال، تابع session_start() را شروع می کنیم. اگر کاربر قبلاً وارد شده باشد، عملکرد یک جلسه ایجاد می کند یا جلسه فعلی را ادامه می دهد. از آنجایی که برنامه ما برای ورود/خروج کاربران طراحی شده است، این ویژگی در هر صفحه مورد نیاز است.

بعد، بررسی می کنیم که آیا کاربر وارد شده است یا خیر. اگر چنین است، $_SESSION["user"] را به روز می کنیم تا بیشترین بازتاب را داشته باشد آخرین اطلاعاتدر مورد کاربر به عنوان مثال، اگر کاربر ایمیل خود را تغییر دهد، ایمیل قبلی در جلسه ذخیره می شود. اما با به روز رسانی خودکار این اتفاق نمی افتد.

این قسمت دوم را به پایان می رساند! فردا منتظر درس آخر این موضوع باشید.

بهترین ها!

اشتراک گذاری