آموزش PHP (مقدمه)

معرفی دورهٔ آموزش رایگان زبان برنامه‌نویسی PHP


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

یکی از مزیت‌های این زبان، اصطلاحاً C-Like بودن آن است؛ به عبارت دیگر، PHP جزو خانوادهٔ زبان‌های مشابه C است؛ لذا با یادگیری این زبان، دیگر زبان‌های متعلق به خانوادهٔ C را نیز به راحتی می‌توان فرا گرفت (از جمله دیگر زبان‌های C-Like می‌توان به سی‌شارپ، جاوا و سی‌پلاس‌پلاس اشاره کرد).

پیش‌نیازهای دوره
در دورهٔ آموزش زبان PHP در سکان آکادمی مبنا را بر آن خواهیم گذاشت که دانشجو هیچ‌گونه تجربهٔ کدنویسی با زبان‌های برنامه‌نویسی ندارد اما در عین حال توصیه می‌کنیم دورهٔ آموزش اصول برنامه‌نویسی در سکان آکادمی گذرانده شود تا درک به مراتب بهتری از مباحث کلی برنامه‌نویسی داشته باشید. به طور کلی، مهم‌ترین پیش‌نیازهای شروع این دوره عبارتند از:

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

کلیهٔ مستندات اکثر زبان‌های برنامه‌نویسی،‌ فریمورک‌ها و لایبرری‌های مختلف به زبان انگلیسی هستند. علاوه بر این، اکثر آموزش‌های معتبر در فضای وب همچون یوتیوب، استک اورفلو و غیره نیز به زبان انگلیسی در اختیار علاقمندان قرار گرفته‌اند. همچنین بیشتر پرسش و پاسخ‌های مرتبط با مشکلات برنامه‌نویسی در سایت‌هایی همچون گوگل، استک اورفلو، کوئرا و غیره نیز به زبان انگلیسی است و در این حوزه منابع فارسی معتبر بسیار اندکی وجود دارد.

با این تفاسیر، وقتی کسی با هدف حرفه‌ای شدن در کدنویسی -فارغ از نوع زبان برنامه‌نویسی- وارد حوزهٔ توسعهٔ نرم‌افزار گردد، به ناچار نیاز به مطالعهٔ مستندات، سرچ در گوگل و استک اورفلو،‌ مطالعهٔ آموزش عرضه شده و دیگر مباحث مربوطه خواهد داشت که درصد قابل‌توجهی از تمامی این موارد به زبان انگلیسی هستند. 

در همین راستا، توصیه می‌شود روی این مهارت سرمایه‌گذاری قابل‌توجهی صورت پذیرد. در پاسخ به این سؤال که از میان مهارت‌های مختلف زبان انگلیسی کدام‌ یک برای دولوپرها بیشتر حائز اهمیت هستند، بایستی گفت که به ترتیب مهارت‌های زیر را بایستی به دست آورد: 
– درک مطلب (Comprehension) 
– نوشتار (Writing)
– شنیدار (Listening)

در واقع، برای خواندن مستندات زبان‌های برنامه‌نویسی و غیره ما می‌بایست مهارت اصطلاحاً Reading (خواندن و درک مطلب) خوبی داشته باشیم؛ همچنین چنانچه بخواهیم در تالارهای گفتگو سؤالی را مطرح کنیم و یا در گوگل به دنبال چیزی باشیم، می‌بایست از مهارت اصطلاحاً Writing (نوشتار) خوبی برخوردار باشیم (در نهایت هم می‌توان به تسلط به مهارت اصطلاحاً Listening یا شنیداری اشاره کرد که برای دیدن ویدیوهای آموزشی زبان اصلی بسیار حائز اهمیت است).

چنانچه مهارت زبان انگلیسی شما چندان خوب نیست، توصیه می‌کنیم به مقالهٔ روش‌های یادگیری و آموزش زبان انگلیسی در وبلاگ سکان آکادمی مراجعه نمایید که راه‌کارهایی سریع به منظور تسلط به جنبه‌های مختلف زبان‌های زندهٔ مختلف -به‌خصوص زبان انگلیسی- در آن ارائه شده است.

علاوه بر کلیهٔ موارد فوق، بایستی به این نکته هم اشاره کنیم که در اکثر مصاحبه‌های شغلی برای پوزیشن برنامه‌نویس یا مهندس نرم‌افزار، داشتن تسلط به زبان انگلیسی یک باید است. در واقع، اگر به پادکست‌های منتشر شده در رادیو فول‌استک سکان آکادمی مراجعه نمایید، بلااستثناء خواهید دید که مهمانان روی یادگیری زبان انگلیسی تأکید کرده‌اند.

– تایپ ۱۰ انگشتی: کمتر دولوپر حرفه‌ای را می‌توان یافت که مهارت تایپ ۱۰ انگشتی نداشته باشد. در واقع، توانایی تایپ ۱۰ انگشتی به صورت اصولی و سریع، می‌تواند به ما در توسعهٔ سریع‌تر اپلیکیشن‌ کمک کند. همچنین توانایی تایپ کردن اصولی، کدنویسی را برای دولوپر لذت‌بخش‌تر خواهد ساخت.

– مهارت‌های سرچ در گوگل: پیش از این گفتیم که جستجو در موتورهای جستجو به خصوص گوگل، بخشی لاینفک از زندگی یک دولوپر است اما مهم‌تر از آن، آشنایی با روش‌های صحیح جستجو است. به عبارت دیگر، اینکه بدانیم چه کلیدواژه (کیورد) و چه عباراتی را در سرچ خود بگنجانیم که زودتر به نتیجه برسیم، بسیار مهم است.

– آشنایی با زبان HTML: مخاطبین این دوره نیاز است تا با مفاهیم اصلی زبان HTML آشنایی داشته باشند (از سوی دیگر، در صورت آشنایی با زبان CSS،‌ می‌توان این انتظار را داشت تا نتایج کدهای HTML که توسط زبان PHP ایجاد می‌شوند نیز از لحاظ بصری زیباتر به نظر برسند اما دانش زبان CSS الزامی نیست. همچنین امروزه زبان JavaScript به مهارتی لاینفک در حوزهٔ طراحی وب مبدل شده و چنانچه بخواهید به یک دولوپر اصطلاحاً فول‌استک یا «همه فن حریف» مبدل گردید، تسلط به این زبان نیز الزامی است اما در عین حال، برای شروع این دوره یک باید نیست).

در دورهٔ آموزش رایگان زبان PHP در سکان آکادمی، ابتدا با اصول اولیهٔ کار با این زبان آشنا خواهید شد اما پیش از هر چیز، یک نمای کلی از این زبان محبوب به همراه تاریخچه‌ای مختصر از آن به تصویر کشیده شده، سپس وارد جزئیاتی همچون سینتکس این زبان، تکنیک‌های برنامه‌نویسی با زبان PHP شده و در نهایت، به مباحث پیشرفتهٔ این زبان همچون شیٔ‌گرایی خواهیم پرداخت. 

آیا PHP یک زبان Scripting است یا Programming؟


به منظور درک بهتر تفاوت مابین زبان‌های Scripting با Programming، ابتدا می‌بایست ببینیم که دلیل ابداع زبان‌های اسکریپتینگ چه بوده، سپس به بررسی این موضوع بپردازیم که چنین تقسیم‌بندی اساساً کار درستی است یا نیاز به نوع دیگری از تقسیم‌بندی مابین زبان‌ها داریم.

زبان‌هایی همچون زبان ++C یا Java، برای کدنویسی پروژه‌های نرم‌افزارهای مختلفی مورد استفاده قرار می‌گیرند و این در حالی است که این زبان‌ها جزو اصطلاحاً Compiled Programming Languages (زبان‌های برنامه‌نویسی کامپایل شونده) محسوب می‌شوند چرا که سورس‌کد نوشته شده با این زبان‌ها ابتدا می‌بایست Compile شده -به عبارت دیگر، به زبان قابل‌فهم برای ماشین یا همان 0 و 1 تبدیل شوند- سپس قابل استفاده خواهند بود.

درآمدی بر زبان‌های Scripting

در طول زمان، برنامه‌های مختلفی که با زبان‌های برنامه‌نویسی کامپایل شونده نوشته می‌شدند نیاز به ساز و کاری داشتند تا سایر دولوپرها بتوانند Functionality (عملکرد) جدیدی برای آنها تعریف کنند و این شد که زبان‌های اسکریپتینگ ابداع شدند (در گذشته این‌‌گونه بود که برنامه‌نویسان برای چنین کاری، ابتدا شروع به نوشتن یکسری اسکریپت -یا بهتر بگوییم کامند یا دستور- می‌کردند تا کار خاصی را انجام دهند و همین شد که اصطلاح زبان‌های اسکریپتینگ باب شد).

به طور مثال، بسیاری از بازی‌های کامپیوتری با زبان ++C نوشته می‌شوند اما زبانی تحت عنوان Lua که یک زبان اسکریپتینگ است در این بازی‌ها به کار گرفته می‌شود که دیگر دولوپرها با استفاده از این زبان می‌توانند عملکردهای جدیدی در بازی تعریف کرده و به نوعی محیط بازی را برای خود کاستومایز (شخصی‌سازی) کنند.به خاطر داشته باشیدیک زبان اسکریپتینگ هرگز کامپایل نمی‌شود و به محض آنکه شما کدی را بنویسید که از لحاظ سینتکسی و منطقی درست باشد، آن کد اجرا خواهد شد. 

به هر حال، اگر مرزی هم مابین زبان‌های اسکریپتینگ و برنامه‌نویسی قائل شویم، به خاطر تکنیک‌های کامپایل شدن سریع‌تر در فناوری‌های نوین، روز به روز این تفاوت و مرز کم‌رنگ‌تر می‌شود و شاهد این ادعا هم مثالی است که در ادامه خواهیم آورد. 

به طور مثال، موتور جاوا اسکریپت V8 در مرورگر گوگل کروم، به نوعی کدهای جاوااسکریپت را در لحظه به زبان ماشین کامپایل می‌کند تا سرعت اجرای کدها افزایش یابد اما این در حالی است که زبان جاوااسکریپت در دید بسیاری از برنامه‌نویسان، یک زبان اسکریپتینگ است. با توجه به اینکه گفته می‌شود که زبان‌های اسکریپتینگ از سرعت کمتری نسبت به زبان‌های برنامه‌نویسی کامپایل شونده برخوردارند، به نظر می‌رسد که با این فناوری به کار گرفته شده در مرورگر گوگل کروم، این مشکل سرعت پایین هم حل شده باشد.

نکتهٔ دیگری که در مورد زبان‌های به اصطلاح اسکریپتینگ وجود دارد این است که این دست زبان‌ها معمولاً از دسترسی کمتری به زیرساخت های سیستمی نسبت به زبان‌های برنامه‌نویسی برخوردارند. به طور مثال، زبان جاوااسکریپت هرگز این امکان را ندارد تا به فایل‌های سیستمی دسترسی پیدا کند. به هر حال، با اینکه زبان‌های اسکریپتینگ از سرعت کمتری برخورداند و همچنین به فایل‌های سیستمی دسترسی ندارند، اما این دست زبان‌ها از اقبال خوبی برخوردار شده‌اند چرا که برنامه‌های نوشته شده با این زبان‌ها، به سادگی آپدیت شده و توسعه می‌یابند.

یک زبان اسکریپتینگ صرفاً در پاسخ به یک Event (ایونت یا رویداد) کاری را انجام خواهد داد؛ به عبارت دیگر، چنانچه هیچ درخواست یا رویدادی وجود نداشته باشد، هیچ کاری هم صورت نخواهد گرفت اما این در حالی است که یک زبان برنامه‌نویسی بدون توجه به درخواست‌ها و یا رویدادها، باز هم قادر به انجام دستوراتی است که از پیش تعریف شده‌اند (از جمله زبان‌های برنامه‌نویسی معروف می‌توان به زبان‌های #C ،C++ ،Java ،C و … اشاره نمود).

تفاوت‌ زبان‌های Compiled و Interpreted

با توجه به اینکه زبان‌های اسکریپتینگ خود نوعی از زبان‌های برنامه‌نویسی هستند، به نظر می‌رسد درست این باشد که به جای تقسیم‌بندی زبان‌ها به دو دستهٔ Scripting و Programming، آنها را به دو گروه زبان‌های برنامه‌نویسی Compiled و Interpreted تقسیم‌بندی کنیم. به عبارت دیگر، در زبان‌های برنامه‌نویسی اصطلاحاً Compiled (کامپایل شده)، سورس‌کد برنامه ابتدا کامپایل شده و به کدی فشرده، سریع، تست شده و از همه مهم‌تر قابل‌فهم برای سیستم تبدیل شده و اجرا می‌گردد و این دست زبان‌های برنامه‌نویسی هرگز به رویدادها برای انجام کاری وابسته نیستند.

واژهٔ Interprete (به معنای تفسیر کردن) زمانی که یک ed به انتهایش اضافه شود، صفتی می‌شود به معنای «تفسیر شونده» و به طور کلی منظور از زبان‌های برنامه‌نویسی تفسیر شونده‌یی مثل زبان جاوااسکریپت یا پی‌اچ‌پی، زبان‌هایی است که سورس‌کد آنها کامپایل نشده بلکه در لحظه توسط برنامه‌یی که Interpreter (مفسر) نام دارد، خط به خط تفسیر و بالتبع اجرا می‌گردد.

زبان PHP به کدام گروه تعلق دارد؟

به طور کلی، زبان PHP یک زبان برنامه‌نویسی تفسیرشونده از یک سو و سمت سرور از سوی دیگر است. اگر بخواهیم زبان دیگری از این نوع را یادآور شویم، می‌توانیم به زبان جاوااسکریپت اشاره کنیم اما این در حالی است که زبان‌های PHP با JS با یکدیگر دارای تفاوت‌هایی هم می‌باشند (توجه داشته باشیم که زبان جاوااسکریپت با زبان جاوا فرق می‌کند). در واقع، زبان پی‌اچ‌پی زبانی است Server-side (سمت سرور) اما این در حالی است که زبان جاوااسکریپت زبانی است Client-side (سمت کاربر).

آشنایی با تفاوت مابین زبان‌های Server-side و Client-side

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

حال از آنجا که پی‌اچ‌پی در سمت سرور اجرا می‌گردد، از این‌ رو نیاز به یک نرم‌افزاری داریم تحت عنوان وب سرور تا ارتباط مابین کاربر و سرور را برقرار سازد که در آموزش‌های آتی بیشتر با مفهوم وب سرور آشنا خواهید شد. نکتههمچنین در نظر داشته باشید که سرور با وب سرور فرق می‌کند. در واقع، سرور به یک سخت‌افزار اشاره دارد در حالی که وب سرور یک نرم‌افزار است.

در پایان هم بد نیست اشاره‌یی به زبان‌های Markup داشته باشیم. این دست زبان‌ها صرفاً به منظور نمایش دیتا مورد استفاده قرار می‌گیرد و هرگز این توانایی را ندارند تا در منطق نرم‌افزار دخالت کنند. از جمله زبان‌های Markup (نشانه‌گذاری)، می‌توان به زبان‌های HTML و XML اشاره کرد.

آشنایی با تاریخچهٔ شکل‌گیری زبان برنامه‌نویسی PHP


اولین نسخه از زبان PHP در سال 1994 توسط Rasmus Lerdorf نوشته شد (در ابتدا، PHP مخفف واژگان PersonalHome Page بود). در واقع، این برنامه‌نویس دانمارکی یکسری CGI را با استفاده از زبان Perl نوشت که این وظیفه را داشتند تا رزومهٔ او را در وب‌سایت شخصی‌اش در معرض دید دیگران قرار داده و همچنین ترافیک وب‌سایت شخصی او را نمایش دهند که بعدها این دستورات با استفاده از زبان C بازنویسی شدند (البته نسخه‌یی که امروزه ما استفاده می‌کنیم با آنچه در سال 1994 طراحی شده بود کاملاً متفاوت است).  نکته

اصطلاح CGI مخفف واژگان Common Gateway Interface است. در واقع، CGI به منزلهٔ استانداردی است که با استفاده از آن، وب سرورها می توانند ایجاد محتوای صفحات وب را مدیریت کنند.

اطلاعیهٔ شمارهٔ ۱ انتشار زبان PHP در سال 1995 در گروه خبری یوزنت به شرح زیر است:

From: rasmus@io.org (Rasmus Lerdorf)
Subject: Announce: Personal Home Page Tools (PHP Tools)
Date: 1995/06/08
Message-ID: <3r7pgp$aa1@ionews.io.org>#1/1
organization: none
newsgroups: comp.infosystems.www.authoring.cgi
Announcing the Personal Home Page Tools (PHP Tools) version 1.0.
These tools are a set of small tight cgi binaries written in C.
They perform a number of functions including:
. Logging accesses to your pages in your own private log files
. Real-time viewing of log information
. Providing a nice interface to this log information
. Displaying last access information right on your pages
. Full daily and total access counters
. Banning access to users based on their domain
. Password protecting pages based on users' domains
. Tracking accesses ** based on users' e-mail addresses **
. Tracking referring URL's - HTTP_REFERER support
. Performing server-side includes without needing server support for it
. Ability to not log accesses from certain domains (ie. your own)
. Easily create and display forms
. Ability to use form information in following documents

Here is what you don't need to use these tools:
. You do not need root access - install in your ~/public_html dir
. You do not need server-side includes enabled in your server
. You do not need access to Perl or Tcl or any other script interpreter
. You do not need access to the httpd log files

The only requirement for these tools to work is that you have the ability to execute your own cgi programs. Ask your system administrator if you are not sure what this means.

The tools also allow you to implement a guestbook or any other form that needs to write information and display it to users later in about 2 minutes.

The tools are in the public domain distributed under the GNU Public License. Yes, that means they are free!

For a complete demonstration of these tools, point your browser at: http://www.io.org/~rasmus

--
Rasmus Lerdorf
rasmus@io.org
http://www.io.org/~rasmus

آنچه از اطلاعیهٔ فوق پیدا است، این می‌باشد که توسعه‌دهندگان در آن سال‌ها چه دغدغه‌هایی داشته‌اند؛ چیزهایی همچون صفحاتی برای عرضه به گروه‌های خاصی از کاربران، ساخت فرم‌، دسترسی به دیتای ذخیره شده در دیتابیس و نمایش آن در صفحات و … جزو مسائلی بوده‌اند که آقای Lerdorf را متقاعده کرده بود تا این زبان را ابداع کند.

همان‌طور که پیش از این هم اشاره کردیم، Business Logic یا به نوعی هستهٔ این زبان با استفاده از زبان برنامه‌نویسی C نوشته شده اما ساختار زبان به گونه‌یی است که توسعه‌دهندگان قادر به توسعهٔ این زبان با نوشتن ماژول‌هایی به زبان C می باشند.

در تکمیل تاریخچهٔ نسخه ۱ این زبان، بایستی گفت که آقای Lerdorf روی پروژهٔ نسبتاً بزرگی برای دانشگاه تورنتو کار می‌کرد که این پروژه نیاز به ابزارهایی داشت تا بتوانند داده‌ها را از جاهای مختلفی جمع‌آوری کرده سپس در قالب یک صفحهٔ تحت وب نمایش دهد. وی از همان نسخه‌های ابتدایی زبان PHP برای این پروژه استفاده کرد اما باتوجه به اینکه این نسخه از زبان PHP برای پروژهٔ نسبتاً بزرگی همچون پروژهٔ دانشگاه تورنتو آن‌طور که باید و شاید کارآمد نبود، تغییراتی می‌بایست در وب سرور صورت می‌پذیرفت (وب سرور نام نرم‌افزاری است که ارتباط مابین کاربر و سرور را برقرار می‌سازد).

ابداع وب سرور آپاچی
وب سروری که در آن زمان برای این پروژه استفاده شده بود NCSA نام داشت و تغییرات صورت گرفته در آن، مشکلات این زبان را رفع کرده بود اما این کار یک مشکل بزرگ داشت! اگر کسی قصد داشت از این زبان برای طراحی صفحات وب استفاده کند، حتماً می‌بایست از نسخهٔ تغییر پیدا کردهٔ این وب سرور استفاده می‌کرد.

در همین اثنی، وب سروری به نام Apache (آپاچی) به مرور در میان دولوپرها محبوبیت پیدا می‌کرد و نکتهٔ جالب اینکه این نرم‌افزار دست توسعه‌دهندگان را باز می‌گذاشت تا راحت‌تر بتوانند زبان PHP را روی سرور اجرا کنند.

آقای Lerdorf سپس قابلیت‌های کار با فرم‌ها در صفحات وب و ارتباط با پایگاه داده را نیز به این زبان اضافه نمود که در نهایت چیزی تحت عنوان Personal Home Page/Forms Interpreter یا به طور خلاصه PHP/FI نام گرفت که چنانچه بخواهیم آن را ترجمه کنیم می‌توانیم معادلی همچون «تحلیلگر فرم‌ها و صفحات وب‌سایت شخصی» را برای آن در نظر بگیریم. در حقیقت او به دنبال این مسئله بود تا بتواند به راحتی وب‌سایت شخصی خود را به صورت دینامیک آپدیت نگاه دارد. با تغییراتی که در این زبان صورت گرفت، در نهایت در سال 1996 نسخهٔ (PHP 2.0 (PHP/FI با اطلاعیه‌یی به شرح زیر به دنیا عرضه شد:

From: rasmus@madhaus.utcs.utoronto.ca (Rasmus Lerdorf)
Subject: ANNOUNCE: PHP/FI Server-side HTML-Embedded Scripting Language
Date: 1996/04/16
Newsgroups: comp.infosystems.www.authoring.cgi

PHP/FI is a server-side HTML embedded scripting language. It has built-in access logging and access restriction features and also support for embedded SQL queries to mSQL and/or Postgres95 backend databases.

It is most likely the fastest and simplest tool available for creating database-enabled web sites.

It will work with any UNIX-based web server on every UNIX flavour out
there. The package is completely free of charge for all uses including
commercial.

Feature List:
. Access Logging
 Log every hit to your pages in either a dbm or an mSQL database.
 Having hit information in a database format makes later analysis easier.
. Access Restriction
 Password protect your pages, or restrict access based on the refering URL plus many other options.
. mSQL Support
  Embed mSQL queries right in your HTML source files
. Postgres95 Support
  Embed Postgres95 queries right in your HTML source files
. DBM Support
  DB, DBM, NDBM and GDBM are all supported
. RFC-1867 File Upload Support
  Create file upload forms
. Variables, Arrays, Associative Arrays
. User-Defined Functions with static variables + recursion
. Conditionals and While loops
  Writing conditional dynamic web pages could not be easier than with the PHP/FI conditionals and looping support
. Extended Regular Expressions
  Powerful string manipulation support through full regexp support
. Raw HTTP Header Control
  Lets you send customized HTTP headers to the browser for advanced features such as cookies.
. Dynamic GIF Image Creation
  Thomas Boutell's GD library is supported through an easy-to-use set of tags.

It can be downloaded from the File Archive at: <URL:http://www.vex.net/php>
--
Rasmus Lerdorf
rasmus@vex.net

این اولین باری بود که اصطلاح Scripting Language مورد استفاده قرار گرفت. زبان‌های Scripting با زبان‌های Programming تاحدودی فرق دارند. زبان‌های برنامه‌نویسی -مثل جاوا- فضایی برای برنامه‌نویس ایجاد می‌کنند که یک برنامه را با سینتکسی خاص نوشته سپس سورس‌کد اصطلاحاً کامپایل می‌شود؛ یعنی از کدها به زبان ماشین -یا همان 0 و 1 که توسط سیستم قابل‌فهم هستند- تبدیل می‌شوند و در نهایت برنامه اجرا می‌شود. اما برنامه‌های نوشته شده با زبان‌های اسکریپتینگ هیچ نیازی به کامپایل شدن ندارند. برنامه به محض اجرا، خط به خط اصطلاحاً Interprete (اینترپریت یا تفسیر) می‌شود (برای کسب اطلاعات بیشتر در این باره، به آموزش آیا PHP یک زبان Scripting است یا Programming؟ مراجعه نمایید.)

در اواسط سال 1997، نسخهٔ دوم زبان PHP توانسته بود توسعه‌دهندگان قابل‌توجهی را به خود جلب کند اما کماکان مشکلاتی در زمینهٔ Parsing Engine (موتور پردازشگر) این زبان وجود داشت. علاوه بر این، پی‌اچ‌پی صرفاً توسط یک دولوپر توسعه می‌یافت و فقط چند نفری بودند که در افزودن بخش‌هایی به این زبان مشارکت داشتند.

در همین زمان بود که Zeev Suraski و Andi Gutmans در تلاویو اسرائیل داوطلب شدند تا Parsing Engine این زبان را بازنویسی کنند که در نهایت قرار شد این تغییرات در نسخهٔ 3 اعمال شوند و در سال 1998 بخش‌هایی از این زبان را بازنویسی کرده و آن را تحت عنوان PHP عرضه کردند با این تفاوت که PHP مخفف واژگان PHPHypertextPreprocessor شد که حرف P اول به همان واژگان Personal Home Page اشاره دارد، حرف H به واژهٔ Hypertext و حرف P آخر هم به Preprocessor. به طور کلی منظور از Hypertext Preprocessor این است که زبان پی‌اچ‌پی دیتا را پیش از آنکه در قالب اچ‌تی‌ام‌ال در معرض دید کاربر قرار بگیرد، پردازش می‌کند. به عبارت دیگر، نام جدید این زبان PHP: Hypertext Preprocessor شد (تصویر سمت چپ مربوط به Rasmus Lerdorf، تصویر وسط مربوط به Andi Gutmans و تصویر سمت راست مربوط به Zeev Suraski است):

علاوه بر این دو دولوپر اسرائیلی، افراد دیگری هم پیدا شدند که تمایل خود را برای مشارکت در توسعهٔ بخش‌های دیگر زبان پی‌اچ‌پی نشان دادند و این شد که زبان برنامه‌نویسی پی‌اچ‌پی از یک پروژهٔ تک نفره،‌ به یک پروژهٔ اپن‌سورس واقعی با چندین نفر توسعه‌دهنده از سراسر دنیا مبدل شد. در سال 1998 بیانیه‌یی برای انتشار نسخهٔ PHP 3.0 منتشر شد که متن آن به این شرح است:

June 6, 1998 -- The PHP Development Team announced the release of PHP 3.0, the latest release of the server-side scripting solution already in use on over 70,000 World Wide Web sites.

This all-new version of the popular scripting language includes support for all major operating systems (Windows 95/NT, most versions of Unix, and Macintosh) and web servers (including Apache, Netscape servers, WebSite Pro, and Microsoft Internet Information Server).

PHP 3.0 also supports a wide range of databases, including Oracle, Sybase, Solid, MySQ, mSQL, and PostgreSQL, as well as ODBC data sources.

New features include persistent database connections, support for the SNMP and IMAP protocols, and a revamped C API for extending the language with new features.

"PHP is a very programmer-friendly scripting language suitable for
people with little or no programming experience as well as the
seasoned web developer who needs to get things done quickly. The
best thing about PHP is that you get results quickly," said Rasmus Lerdorf, one of the developers of the language.

"Version 3 provides a much more powerful, reliable, and efficient
implementation of the language, while maintaining the ease of use and
rapid development that were the key to PHP's success in the past,"
added Andi Gutmans, one of the implementors of the new language core.

"At Circle Net we have found PHP to be the most robust platform for
rapid web-based application development available today," said Troy
Cobb, Chief Technology Officer at Circle Net, Inc. "Our use of PHP
has cut our development time in half, and more than doubled our client
satisfaction. PHP has enabled us to provide database-driven dynamic
solutions which perform at phenomenal speeds."

PHP 3.0 is available for free download in source form and binaries for
several platforms at http://www.php.net/.

The PHP Development Team is an international group of programmers who
lead the open development of PHP and related projects.

For more information, the PHP Development Team can be contacted at
core@php.net.

در سال 2000، آقایان Zeev Suraski و Andi Gutmans شرکتی تحت عنوان Zend تأسیس کردند و در آن شرکت هسته اصلی پی‌اچ‌پی را بازنویسی کرده و تغییرات گسترده‌ای در آن ایجاد کردند که این تغییرات در قالب چیزی به نام Zend Engine شکل گرفت و آن را در همین سال در قالب نسخهٔ 4.0 روانهٔ بازار کردند. نسخهٔ PHP 4.0 در 22 ماه مه سال 2000، با تلاش توسعه‌دهندگان بسیاری و صرف زمان قابل‌توجهی به دنیا عرضه شد.

در سال 2004، نسخه 5 از این زبان به دنیا عرضه شد که دارای ویژگی‌های بسیاری بود که از آن جمله می‌توان به برنامه‌نویسی شیئ‌گرایی (OOP) و ارتباط بهتر با پایگاه داده‌ها اشاره کرد (در واقع، هر کدام از نسخه‌های پی‌اچ‌پی دارای آپدیت‌هایی هم می‌باشند؛ مثلاً نسخهٔ 5.2 اما با توجه به اینکه توضیح پیرامون این آپدیت‌ها صرفاً به طولانی‌تر شدن تاریخچه منجر خواهد شد، از توضیح پیرامون این مسئله خودداری خواهیم کرد). به طور کل، نسخهٔ ۵ زبان PHP نقطهٔ عطفی برای این زبان محسوب می‌شود چرا به یک باره قابلیت‌های بیشماری به این زبان اضافه گردید.

چرا زبان PHP نسخهٔ ۶ ندارد؟
یکی از چیزهای جالب در مورد نسخه‌های مختلف زبان پی‌اچ‌پی این است که نسخهٔ PHP 6.0 این زبان هرگز عرضه نشد و به یک باره پس از نسخهٔ PHP 5.6، نسخهٔ PHP 7.0 به بازار عرضه شد. یکی از خصیصه‌های اصلی PHP 6.0، پشتیبانی از Unicode بود. به عبارت دیگر، این نسخه از پی‌اچ‌پی قرار بود تا کاراکترهای کلیهٔ زبان‌های زندهٔ دنیا را ساپورت کند اما طراحان این زبان نتوانستند آن‌طور که باید و شاید این نوع پشتیبانی را به زبان پی‌اچ‌پی بیفزایند و تا حدودی به برند این نسخه از زبان برنامه‌نویسی پی‌اچ‌پی لطمه خورد و از همین روی، توسعهٔ PHP 6.0 متوقف شد!

در دسامبر سال 2015، نسخهٔ PHP 7.0.0 به دنیا عرضه شد. پس از عرضهٔ PHP 5 در سال 2004، نسخهٔ 7 زبان برنامه‌نویسی پی‌اچ‌پی دربرگیرندهٔ مهم‌ترین تغییرات اعمال شده در این زبان است که از آن جمله می‌توان به عملکرد بسیار بالا، کاهش استفاده از حافظه و بسیاری ویژگی‌های جدید اشاره کرد. به یمن استفاده از Zend Engine 3.0، در وب اپلیکیشن‌های نوشته شده با پی‌اچ‌پی نسخهٔ 7 شاهد سرعتی تا 2x و کاهش استفاده از حافظه به میزان 50% خواهیم بود که در نهایت این امکان در اختیار توسعه‌دهندگان قرار می‌گیرد تا بدون ارتقاء سخت‌افزار، بتوانند پرفورمنس وب اپلیکیشن‌های خود را بهبود بخشند.

مزیت زبان برنامه‌نویسی PHP نسبت سایر زبان‌های سمت سرور


جالب است بدانیم که در حال حاضر -سال ۲۰۱۸- بر اساس آمار سایت رسمی زبان پی‌اچ‌پی (php.net)، این زبان در بیش از ۲۴۰ میلیون وب‌سایت مورد استفاده قرار گرفته و در حال حاضر در بیش از 2 میلیون وب سرور مورد استفاده قرار می‌گیرد (لینک به منبع آمار کاربرد زبان پی‌اچ‌پی).

سایت W3Techs که به عنوان یکی از مراجع معتبر در زمینهٔ بررسی‌ فناوری‌های تحت وب شناخته می‌شود نیز در گزارشی اعلام نموده که در حال حاضر -سال ۲۰۱۸- زبان پی‌اچ‌پی موتور محرک 83.1٪ از کل وب‌سایت‌های دنیا است (لینک گزارش). همچنین برای اساس شاخص سایت TIOBE، زبان برنامه‌نویسی PHP در بیشتر سال‌ها جزو ۱۰ زبان محبوب از دید دولوپرهای سراسر دنیا بوده است.

یکی از دلایل کاربرد فوق‌العاده زیاد زبان PHP در طراحی سایت‌های دینامیک، مزیت‌هایی است که این زبان نسبت به سایر زبان‌های سمت سرور دارد که در ادامه با مهم‌ترین آنها آشنا خواهید شد:

PHP زبان تخصصی طراحی وب اپلیکیشن است 
شاید به جرأت بتوان گفت یکی از دلایل محبوبیت زبان برنامه‌نویسی پی‌اچ‌پی به عنوان یک زبان سمت سرور، این است که PHP در ابتدا به عنوان ابزاری برای ساخت صفحات HTML و مدیریت فرم‌ها طراحی شده است. به عبارت دیگر، پی‌اچ‌پی تنها زبانی است که با رویکرد طراحی سایت ابداع شده و به نوعی می‌توان گفت که یک «زبان تخصصی سمت سرور برای طراحی وب اپلیکیشن» است (این ادعا هرگز بدان معنا نیست که با سایر زبان‌های برنامه‌نویسی نمی‌توان سایت‌های دینامیک طراحی کرد؛ بلکه منظور این است که پی‌اچ‌پی برای این کار ساخته شده است و به نوعی می‌توان گفت که زبانی تخصصی برای طراحی سایت است. به علاوه، این ادعا هرگز بدان معنا نیست که پی‌اچ‌پی زبان بهتری نسبت به سایر رقبا است بلکه صرفاً در حوزهٔ فوق‌الذکر، پی‌اچ‌پی یک سر و گردن نسبت به رقبا بالاتر است).

کاربرد PHP در سیستم‌های مدیریت محتوا (CMS) 
بسیاری از سیستم‌های مدیریت محتوا مثل وردپرس، جوملا و دروپال بر پایهٔ زبان پی‌اچ‌پی نوشته شده‌اند؛ بنابراین فراگیری این زبان کمک چشمگیری به نحوهٔ استفاده از این سیستم‌های مدیریت محتوا و همچنین توسعهٔ آنها خواهد کرد.

PHP اپن‌سورس و رایگان است 
رایگان بودن این زبان خود یک مزیت نسبی نسبت به فناوری‌هایی همچون ASP.NET محسوب می‌شود. علاوه بر رایگان بودن، این زبان اپن‌سورس نیز هست؛ وقتی صفت Open Source (متن‌باز) را به یک زبان برنامه‌نویسی می‌چسبانیم، این بدان معنا است که زبان مد نظر Free (رایگان) بوده و توسط تیم گسترده‌یی از توسعه‌دهندگان از سراسر دنیا ارتقاء می‌یابد و کاربران این امکان را دارند تا زبان را به صورت آزاد در اختیار گرفته و در صورت نیاز، تغییراتی در سورس‌کد آن برای شخصی‌سازی بیشتر اعمال کنند.

سازگاری با پلتفرم‌های مختلف 
مزیت دیگر پی‌اچ‌پی این است که اصطلاحاً Cross Platform است. به عبارت دیگر، می‌توان این زبان را در پلتفرم‌های مختلفی از گنو/لینوکس گرفته تا ویندوز و مکینتاش اجرا کرد و این در حالی است که مهاجرت از یک پلتفرم به پلتفرم دیگر، در اکثر مواقع نیاز به تغییر چندانی در پیکربندی وجود نخواهد داشت.

علاوه بر این، PHP با اکثر وب سرورهای معروف دنیا همچون آپاچی، آی‌آی‌اس مایکروسافت، اِنجین‌اِکس و غیره سازگاری دارد. یکی از قابلیت‌های منحصر به فرد زبان پی‌اچ‌پی، پشتیبانی از طیف وسیعی از دیتابیس‌ها است که از آن جمله می‌توان به سیستم‌های مدیریت دیتابیس MySQL ،PostgreSQL ،SQLite ،MongoDB ،Oracle و … اشاره کرد.

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

مستندات و آموزش‌های فراوان PHP
زبان برنامه‌نویسی PHP به دلیل کاربرد فراوانی که در توسعهٔ وب‌سایت‌های مختلف داشته است، بالتبع از مستندات و آموزش‌های رایگان و غیررایگان زیادی نیز در فضای اینترنت برخوردار است.

علاوه بر وب‌سایت رسمی PHP، آموزش‌های بسیاری برای دولوپرها -از مبتدی گرفته تا حرفه‌ای- عرضه شده که از آن جمله می‌توان به دورهٔ آموزش PHP در سایت W3Schools که به زبان انگلیسی است و دورهٔ آموزش PHP وب‌سایت سون لرنکه به فارسی است اشاره کرد.

فرصت‌های شغلی خوب برای دولوپرهای PHP
پیش از این اشاره کردیم که سیستم‌های مدیریت محتوایی همچون وردپرس، جوملا و دروپال که با زبان PHP توسعه داده شده‌اند، به عنوان پلتفرم بخش قابل‌توجهی از وب‌سایت‌های بزرگ و کوچک هستند و همین مسئله منجر گردیده تا بازار کار نسبتاً قابل‌توجهی برای دولوپرهای این زبان وجود داشته باشد (علاوه بر این، امروزه به دلیل محبوبیت بسیار بالایی که فریمورک‌های این زبان پیدا کرده‌اند، بسیاری از کسب‌وکارهای مختلف و استارتاپ‌ها به دنبال دولوپر حرفه‌ای PHP -به‌خصوص کسانی که به فریمورک لاراول تسلط داشته باشند- هستند).

PHP معروف‌ترین فناوری برای طراحی سایت‌های دینامیک است 
وب و اینترنت به منزلهٔ بخش لاینفک دنیای فناوری درآمده و جالب است بدانیم که زبان برنامه‌نویسی پی‌اچ‌پی در این حوزه نقشی کلیدی بازی می‌کند چرا که سایت‌های بزرگی همچون ویکیپدیا، شبکهٔ اجتماعی فیسبوک، سیستم‌های مدیریت محتوایی همچون وردپرس، جوملا، دروپال و غیره، صرفاً تعدادی از مثال‌هایی هستند که زبان پی‌اچ‌پی در شکل‌گیری آنها نقش داشته است.به خاطر داشته باشیدشبکهٔ اجتماعی فیسبوک در ابتدا با استفاده از این زبان راه‌اندازی شد اما این در حالی است که در ادامهٔ راه، مهندسین این غول فناوری از روی زبان PHP زبانی تحت عنوان Hack را ابداع نموده و مورد استفاده قرار داده‌اند.

قابلیت استفاده با معماری‌های مختلف برنامه‌نویسی 
یکی دیگر از نقاط قوت زبان پی‌اچ‌پی این است که با این زبان هم می‌توان به صورت اصطلاحاً Procedural و هم به صورت اصطلاحاً Object-oriented کدنویسی کرد. واژهٔ Procedure از واژهٔ انگلیسی Process (پراسس به معنی پروسه یا فرایند) گرفته شده است و به طور خلاصه، منظور از پارادایم برنامه‌نویسی Procedural (پروسیجرال)، برنامه‌نویسی بر پایهٔ فراخوانی پروسه‌ها است.

پروسه‌ها را می‌توان در قالب توابعی در نظر گرفت که می‌توانند در هر نقطه‌یی در طول اجرای برنامه فراخوانی شوند. در‌ واقع، در پارادایم پروسیجرال ما لیستی از دستورات داریم که این دستورات به سیستم می‌گویند که گام به گام چه کاری را می‌بایست انجام دهد (لازم به ذکر است که برخی دولوپرها از اصطلاح Imperative Programming برای این نوع معماری کدنویسی استفاده می‌کنند).

از جمله زبان‌های برنامه‌نویسی پروسیجرال می‌توان به زبان‌های C ،Cobol و Fortran اشاره کرد. در این‌گونه زبان‌ها، برنامه از بالا به پایین شروع به اجرا شده و فرایندها یکی پس از دیگری عملیاتی شده تا در نهایت برنامه به صورت کامل اجرا گردد.

در نقطهٔ مقابل پارادایم پروسیجرال، برنامه‌نویسی OOP (شییٔ‌گرا) وجود دارد. در پارادایم شییٔ‌گرا، برنامه‌یی که توسعه می‌دهیم بر پایهٔ آبجکت‌ها پیاده‌سازی می‌شود. یک آبجکت -یا بهتر بگوییم شییٔ- ماهیتی واقعی است که از روی یک کلاس که ماهیتی انتزاعی دارا است ساخته می‌شود که این وظیفه را دارا است تا کار خاصی را انجام داده و این توانایی را دارد تا با دیگر آبجکت‌های برنامه تعامل برقرار سازد (از جمله زبان‌های برنامه‌نویسی شییٔ‌گرا می‌توان به Java ،Python ،Perl ،PHP و Ruby اشاره کرد.) جالب است بدانیم که در پارادایم برنامه‌نویسی شییٔ‌گرا، می‌توان با تعداد خطوط کد کمتری برنامه‌های به مراتب گسترده‌تر و پیچیده‌تری نوشت.

لازم به ذکر است یکی از انتقاداتی که همواره به زبان PHP وارد است این می‌باشد که این زبان ابتدا به ساکن Object-oriented طراحی نشده و به مرور زمان (از نسخهٔ ۵ به بعد) قابلیت‌های شییٔ‌گرایی به آن اضافه شده است و همین مسئله منجر می‌گردد تا نسبت به زبانی همچون روبی که از ابتدا فیچرهای Object-oriented در طراحی آن لحاظ شده‌اند، برتری چندانی نداشته باشد. نکتهمنظور از Programming Paradigms (پارادایم‌های برنامه‌نویسی) رویکردهای متفاوت در برنامه‌نویسی به منظور یافتن راه‌کاری برای انجام کاری خاص است.

چه کارهایی با زبان برنامه‌نویسی PHP می‌توان انجام داد؟
تا اینجا، با مزیت‌های زبان برنامه‌نویسی PHP نسبت به سایر زبان‌های سمت سرور آشنا شدیم. علاوه بر آگاهی از مزیت‌های یک زبان، می‌بایست بدانیم که با زبان انتخابی خود چه کارهایی می‌توانیم انجام دهیم. به طور کلی، زبان پی‌اچ‌پی را می‌توان در حوزه‌های زیر مورد استفاده قرار داد:
– برنامه‌نویسی سمت سرور: هدف اصلی از طراحی این زبان، ساخت وب‌سایت‌های دینامیک بوده است و در حال حاضر هم یکی از بهترین زبان‌هایی است که می‌توان برای این کار مورد استفاده قرار داد. به عبارت دیگر، از این زبان برای ساخت محتوای HTML که در نهایت منجر به ساخت صفحات وب می‌شوند می‌توان استفاده نمود. به طور کلی کارهایی که با زبان پی‌اچ‌پی در سمت سرور می‌توان انجام داد عبارتند از:
– ایجاد محتوای دینامیک برای وب سایت خود
– ایجاد، باز کردن، خواندن، نوشتن و بستن فایل‌ها در سمت سرور
– جمع‌آوری و پردازش اطلاعات فرم‌های HTML
– قابلیت اضافه کردن، پاک کردن و ویرایش کردن اطلاعات قرار گرفته روی دیتابیس
– محدود کردن دسترسی به برخی صفحات وب‌سایت
– قابلیت رمزگذاری داده‌ها و …

– برنامه‌نویسی کامندلاین: با استفاده از پی‌اچ‌پی، می‌توان از طریق Command Line اسکرپیت‌های مد نظر خود را اجرا کرد. در پاسخ به این سؤال که اسکرپیت چیست؟، بایستی گفت که به طور مثال از طریق کامندلاین می‌توان کارهایی که یک ادمین شبکه یا وب مستر انجام می‌دهد را هَندل (مدیریت) کرد که از آن جمله می‌توان به بَکاپ گرفتن، لاگ گرفتن و حتی CRON Job نیز اشاره کرد. به خاطر داشته باشیداصطلاح CRON Job به اجرای یکسری اسکریپت‌های خاص در سیستم‌عامل‌های مبتنی بر یونیکس در زمانی خاص گفته می‌شود. به عبارت دیگر، یک برنامه‌نویس با استفاده از کران‌جاب خواهد توانست تا مثلاً به صورت دوره‌یی، هر جمعه رأس ساعت ۱۰ صبح کد خاصی را به صورت اتوماتیک اجرا کند.

– طراحی نرم‌افزارهای تحت دسکتاپ: با استفاده از لایبرری PHP-GTK، می‌توان اقدام به کدنویسی اپلیکیشن‌های تحت دسکتاپ با زبان برنامه‌نویسی PHP کرد. به طور کلی، GTK یک Library (لایبرری یا کتابخانه) برای طراحی GUI (رابط گرافیکی کاربری) است. این لایبرری زمانی شکل گرفت که توسعه‌دهندگان نرم‌افزار GIMP که برای ویرایش تصاویر استفاده می‌شود، آن را با زبان C نوشتند (لذا به آن GIMP Toolkit هم گفته می‌شود).

از آن زمان به بعد، جی‌تی‌کی به عنوان یکی از مشهورترین ابزارهای طراحی رابط کاربری شناخته می‌شود و در دنیای اپن‌سورس، بسیاری از رابط‌های گرافیکی نرم‌افزارها با استفاده از آن طراحی می‌شود. PHP-GTK هم مجموعه‌یی Binding برای زبان برنامه‌نویسی پی‌اچ‌پی است که این امکان را به توسعه‌دهندگان می‌دهد تا با استفاده از این زبان، اقدام به طراحی نرم‌افزارهای دسکتاپ کنند.به خاطر داشته باشیددر دنیای برنامه‌نویسی، منظور از Binding یک زبان برنامه‌نویسی به یک لایبرری این است که یک API طراحی شده که با استفاده از آن می‌توان از کدهای قرار گرفته در لایبرری، در زبان برنامه‌نویسی مد نظر خود استفاده کرد (API مخفف واژگانApplication Programming Interface می‌باشد. به طور خلاصه، ای‌پی‌آی به راحتی این امکان را در اختیار یک برنامه‌نویس قرار می‌دهد تا به‌ برخی یا تمامی قابلیت‌های یک نرم‌افزار دیگر دسترسی پیدا کند).

PHP-GTK توسط توسعه‌دهنده‌یی به نام Andrei Zmievski ابداع شد که به عنوان یکی از توسعه‌دهندگان اصلی زبان PHP و Zend Engine است و اولین نسخه از PHP-GTK در ماه مارس سال 2001 به دنیا عرضه شد.

تفاوت سایت‌های Static و Dynamic


پیش از آشنایی بیشتر با نحوهٔ طراحی وب اپلیکیشن با استفاده از زبان PHP، نیاز است تا با تفاوت سایت‌های به اصطلاح Static (ایستا) و Dynamic (پویا) آشنا شویم چرا که بدون آشنایی با این مقدمات، به هیچ وجه نخواهیم توانست مکانیسم اجرایی این زبان درک کنیم. در همین راستا، در این آموزش قصد داریم تا پایه‌ای‌ترین مفاهیم مرتبط با وب‌سایت‌های دینامیک و تفاوت آنها با وب‌سایت‌های استاتیک را مورد بررسی قرار داده و پس از حصول اطمینان از فراگیری این مفاهیم، به یادگیری اصول کار با زبان PHP خواهیم پرداخت.

در یک نگاه کلی، سایت‌ها را می‌توان به دو دستهٔ Static (استاتیک یا ایستا) و Dynamic (دینامیک یا پویا) تقسیم‌بندی کرد. سایت‌های استاتیک به گروهی از سایت‌ها گفته می‌شود که صرفاً با استفاده از زبان‌های HTML و CSS -و گاهی اوقات هم JS- طراحی می‌شوند که ایستا بوده و فقط و فقط یکسری اطلاعات از طریق این صفحات در معرض دید کاربران قرار می‌گیرد و کاربر به هیچ وجه نخواهد توانست با سایت تعامل داشته باشد.

اما در مقابل، سایت‌های دینامیک قرار دارند -که همان‌طور که از نام آنها پیدا است- این سایت‌ها امکانی را برای کاربران‌شان فراهم می‌سازند تا بتوانند با سایت تعامل داشته باشند. در اینجا تعامل داشتن بدان معنا است که کاربر می‌تواند در سایت ثبت‌نام کند، وارد ناحیهٔ کاربری خود شود، داشبورد مدیریتی خود را شخصی‌سازی کند، عکس آپلود کند، نظر دهد، لایک و دیس‌لایک کند و بسیاری کارهای دیگر (برای درک بهتر این موضوع، تمامی شبکه‌های اجتماعی مثل توییتر و غیره را می‌توان مد نظر قرار داد که علاوه بر کارهای فوق، بسیاری قابلیت‌های دیگر را در اختیار کاربران‌شان قرار می‌دهند).

برای طراحی سایت‌های دینامیک، نیاز به فناوری‌های سمت سرور داریم که زبان PHP نیز یکی از آنها است. با استفاده از زبان‌های سمت سرور، این امکان را خواهیم داشت تا سایت دینامیکی طراحی کنیم که صفحاتی دارا باشد که به صورت دینامیک ساخته می‌شوند. به عبارت دیگر، با فراخوانی داده‌ها از دیتابیس، به صورت بی‌نهایت صفحه می‌توان طراحی کرد (لذا تغییر در این‌گونه صفحات و به‌روز نگاه داشتن آنها به راحتی امکان‌پذیر خواهد بود). 

زمانی که پای انتخاب یک فناوری سمت سرور به میان می آید، علاوه بر زبان PHP یکسری گزینه‌های دیگری نیز پیش‌رو داریم که از آن جمله می‌توان به ASP.NET ،JSP ،Ruby ،Perl و حتی JavaScript اشاره کرد (با Node.js می‌توان با استفاده از زبان جاوااسکریپت در سمت سرور کدنویسی کرد).

ساز و کار یک وب‌سایت استاتیک به چه شکل است؟
به طور کلی، وب‌سایت‌ها از تعدادی فایل HTML و CSS به علاوه تعدادی عکس، ویدیو و … تشکیل شده‌اند که روی یک سرور ذخیره شده‌اند. زمانی که کاربر اقدام به مشاهدهٔ یک وب‌سایت می‌کند، این فایل‌ها از طریق نرم‌افزاری تحت عنوان Web Server (مثل آپاچی) برای مرورگر کاربر ارسال شده و کاربر می‌تواند در مرورگر نصب شده روی سیستم‌عامل خود، بخش‌های مختلف وب‌سایت را مشاهده نماید. هشداربه یاد داشته باشیم که هرگز وب سرور را با سرور اشتباه نگیریم. منظور از سرور، کامپیوتری است که کلیهٔ اطلاعات وب اپلیکیشن ما روی آن ذخیره می‌گردد که شرکت هاستینگ در اختیار ما قرار می‌دهد اما منظور از وب سرور، نرم‌افزاری است که ارتباط مابین مرورگر کاربر و سرور را برقرار می‌سازد که روی سرور نصب می‌گردد.

زمانی که کاربر با استفاده از مرورگر خود ریکوئست (یا درخواستی) از طریق پروتکل HTTP یا HTTPS (برای ارتباط امن) برای مشاهدهٔ یک سایت استاتیک ارسال می‌کند، این درخواست در قالب فرمت یک URL برای وب سرور ارسال می‌گردد (URL مخفف واژگان Uniform Resource Locator است). برای مثال، زمانی که بخواهید سایت سکان آکادمی را مشاهده کنید، این URL به صورت https://sokanacademy.com خواهد بود (لازم به ذکر است که سکان آکادمی با پروتکل HTTPS نمایش داده می‌شود).

در این مرحله، نرم‌افزار وب سرور درخواست کاربر را دریافت کرده و آن را تجزیه و تحلیل می‌کند تا ببیند که به کدام فایل ذخیره شده روی هاست اشاره دارد. در ادامه، نرم‌افزار وب سرور فایل/فایل‌های مورد نیاز را پیدا نموده و محتویات آن را در قالب یک پاسخ HTTP یا HTTPS برای مرورگر کاربر ارسال می‌کند و کاربر خواهد توانست صفحهٔ درخواستی از سایت مد نظرش را در مرورگر مشاهده نماید:

همان‌طور که در تصویر فوق می‌بینیم، Client (کاربر) ابتدا درخواست خود را در قالب یک آدرس URL برای سرور ارسال می‌کند. سپس سرور با استفاده از نرم‌افزار وب سرور -مثلاً آپاچی- درخواست مد نظر را تجزیه تحلیل کرده و فایل مرتبط با آن را پیدا نموده و پاسخ آن درخواست را در قالب یک فایل HTML برای کاربر ارسال می کند.به خاطر داشته باشیددر طراحی سایت همواره بایستی نام فایل صفحهٔ اصلی یا همان «خانه» را index.html قرار دهیم (البته در برخی مواقع بسته به نوع نرم‌افزار وب سرور و تنظیمات آن، از نامی همچون default.html هم استفاده می‌شود که خیلی رایج نیست).

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

از سوی دیگر، کاربران امکان تعامل با وب‌سایت را نداشته و فقط و فقط می‌توانند شاهد خروجی صفحات اچ‌تی‌ام‌الی باشند که روی سرور قرار داده شده‌اند. از جمله وب‌سایت‌های استاتیک می‌توان به پورتفولیوهای شخصی هنرمندان، وب‌سایت‌هایی که به عنوان کاتالوگ آنلاین محصولات استفاده می‌شوند و … اشاره کرد که صاحبین وب‌سایت‌ها اطلاعاتی همچون مشخصات فردی، رزومهٔ کاری، نمونهٔ کارها/محصولات و … را در معرض دید کاربران قرار می‌دهند و اصلاً نیازی به اینکه کاربران بتوانند به تعامل با سایت بپردازند ندارند.

ساز و کار یک وب‌سایت‌ دینامیک به چه شکل است؟
چنانچه بخواهیم این امکان را برای کاربران سایت خود فراهم آوریم تا بتوانند با سایت‌مان تعامل داشته باشند یا به عبارت دیگر در سایت ثبت‌نام کنند، اطلاعات خود را وارد نمایند، به جستجو در سایت بپردازند، وارد ناحیهٔ کاربری خود شوند و بسیاری خصوصیات کاربردی دیگر، می‌بایست با مفهومی تحت عنوان Dynamic Site Development (توسعهٔ پویای وب‌سایت) بیشتر آشنا شویم.

در مورد وب‌سایت‌های دینامیک که گاهاً «وب اپلیکیشن» هم نامیده می‌شوند، علاوه بر نرم‌افزار وب سروری همچون آپاچی که روی سرور هاست نصب است، به ماژول «اپلیکیشن سروری» نیز همچون PHP ،ASP و یا ColdFusion و … نیاز داریم.

در واقع، زمانی که کاربر درخواستی از جنس HTTP یا HTTPS برای مشاهدهٔ یک سایت دینامیک ارسال می‌کند، فرمت این درخواست که به صورت یک URL است برای سرور ارسال می‌شود. در این مرحله، کاربر به هیچ وجه متوجه نخواهد شد که یک اپلیکیشن سرور در پاسخگویی به درخواست وی دخیل است. در این مرحله، وب سروری همچون آپاچی این درخواست را دریافت می‌کند اما برخلاف وب‌سایت‌های استاتیک که خود وب سرور مستقیماً به این درخواست پاسخ می‌گفت، این‌بار وب سرور این درخواست را به اپلیکیشن سرور مربوطه می‌فرستد.

در این مرحله، اگر پسوند فایل درخواستی cfm. بود، وب سرور متوجه می‌شود که این یک درخواست برای اپلیکیشن سرور ColdFusion است، اگر پسوند فایل درخواستی asp. بود متوجه می‌شود که این یک درخواست برای اپلیکیشن سرور Active Server Pages بوده، اگر پسوند aspx. بود متوجه می‌شود که درخواست برای اپلیکیشن سرور ASP.NET است و در نهایت اگر پسوند php. بود نرم‌افزار وب سرور متوجه می‌شود که این درخواست برای یک اپلیکیشن سرور PHP است (در این دوره تمرکز ما روی اپلیکیشن سرور PHP خواهد بود).

در ادامه، ماژول اپلیکیشن سرور با دیتابیس، وب‌ سرویس و APIهای مختلف در صورت نیاز تعامل داشته و کاری که انجام می‌دهد این است که درخواستی در قالب پروتکل HTTP یا HTTPS را از نرم‌افزار وب سرور دریافت کرده سپس به دیتابیس رجوع می‌کند و داده‌های مورد نیاز را دریافت کرده و آنها را مجدد تحویل نرم‌افزار وب سرور می‌دهد و در نهایت وب سرور پاسخی را برای مرورگر کاربر ارسال می‌کند.

به خاطر داشته باشیم که نرم‌افزار وب سرور ابتدا کلیهٔ کدهای PHP را به تگ‌های HTML تبدیل نموده سپس این خروجی را برای مرورگر کاربر ارسال می‌کند چرا که مرورگر صرفاً توانایی درک تگ‌های HTML را دارا است:

همان‌طور که در تصویر فوق مشخص است، کاربر ابتدا درخواست خود را در قالب یک URL برای سرور ارسال می‌کند. در این مرحله، روی سرور یک نرم‌افزار وب سرور مثل آپاچی نصب است که این درخواست را گرفته و برای اپلیکیشن سرور که در این مثال PHP است ارسال می‌کند. حال اپلیکیشن سرور به دیتابیسی همچون MySQL رجوع کرده تا دیتای مرتبط با درخواست را پیدا کند (و در صورت نیاز، به APIهای مختلفی مراجعه می‌کند). پس از یافتن منابع مورد نیاز، پی‌اچ‌پی در صورت لزوم پردازشی روی داده‌های دریافتی انجام می‌دهد و در نهایت مجدد آن داده‌ها را به وب سرور تحویل داده و وب سرور هم آنها را در قالب خروجی HTML برای مرورگر کاربر ارسال می‌کند.

مثال واقعی از نحوهٔ عملکرد سایت‌های دینامیک
برای روشن‌تر شدن این مسئله، مثالی واقعی ذکر می‌کنیم. فرض کنید که قصد دارید تا در سایت سکان آکادمی لاگین کنید تا بتوانید برای این آموزش کامنتی بگذارید. در چنین شرایطی، ابتدا می‌بایست در بخش مربوطه نام کاربری و رمزعبور خود را وارد سازید. پس از فشردن دکمهٔ ورود، اطلاعات نام کاربری و رمزعبور از طریق پروتکل HTTPS برای وب سرور ارسال می‌شود.

در ادامه، وب سرور اطلاعات حساب کاربری شما را برای اپلیکیشن سرور پی‌اچ‌پی ارسال می‌کند. سپس اپلیکیشن سرور برای آنکه متوجه شود که آیا اطلاعات نام کاربری و رمزعبور شما صحیح است یا خیر، به دیتابیس MySQL رجوع می‌کند. پس از آن که تطبیق نام کاربری و رمزعبور شما با آنچه که در دیتابیس پیش از این ثبت شده است صورت گرفت، اپلیکیشن سرور پی‌اچ‌پی اطلاعات مرتبط با صفحهٔ داشبورد را در اختیار وب سرور قرار می‌دهد و وب سرور هم آنها را تبدیل به خروجی HTML کرده و از طریق پروتکل HTTPS برای مرورگرتان ارسال می‌کند و در نهایت هم شما وارد ناحیهٔ کاربری خود شده و از آن پس دسترسی به بخش‌های مختلف ناحیهٔ کاربری خود من‌جمله امکان نوشتن کامنت خواهید داشت.

آشنایی بیشتر با پروتکل HTTP
HTTP مخفف واژگان HyperText Transfer Protocol است که اصطلاحاً Stateless می‌باشد (در ادامه پیرامون این موضوع بیشتر صحبت خواهد شد). همچون هر پروتکل دیگری، هدف از ابداع این پروتکل این بوده تا امکان برقراری ارتباط مابین دو Node بوجود آید (در اینجا منظور از Node هر نوع دیوایسی است). برای این منظور، پیام‌ها می‌بایست دارای فرمتی باشند که هر دو طرف ارتباط آن را کاملاً متوجه شوند و طرفین باید از یکسری قوانین از پیش‌ تعریف شده‌ای تبعیت کنند.

در مثال‌های فوق،‌ ما یک Sender (فرستنده) داشتیم و یک Receiver (گیرنده). فرستنده برای گیرنده پیامی ارسال می‌کند که این پیام اصطلاحاً Request (درخواست) نام دارد که معمولاً از نوع GET است (چنانچه با این اصطلاح آشنایی ندارید، در آموزش‌های آتی به تفصیل پیرامون GET و POST صحبت خواهد شد).

در ادامهٔ کار، گیرنده این ریکوئست را گرفته، پردازش می‌کند و بر آن اساس پیامی ایجاد می‌کند که اصطلاحاً Response (پاسخ) نام دارد. به طور کلی،‌ هر ریسپانس دارای یک اصطلاحاً Status Code (کد وضعیت) است؛ به طور مثال، کد وضعیت ۲۰۰ حاکی از آن است که ریکوئست با موفقیت پردازش شده است (به طور مثال، اگر شما صفحهٔ هوم‌پیج سکان آکادمی را باز نمایید و سایت بدون هیچ مشکلی بالا بیاید، کد وضعیت مرتبط با این ریکوئست/ریسپانس برابر با ۲۰۰ خواهد بود).

در پاسخ به این سؤال که Stateless بودن این پروتکل به چه معنا است؟، بایستی گفت که پروتکل HTTP هر ریکوئستی را مجزا از سایر ریکوئست‌ها هَندل می‌کند؛ به عبارت دیگر، در مثال فوق ریکوئستی که برای باز کردن صفحهٔ هوم‌پیج سکان آکادمی به سمت سرور ارسال می‌شود هیچ ربطی به ریکوئستی که برای باز کردن مثلاً این صفحه ارسال می‌گردد ندارد. در تکمیل این بحث بایستی گفت که وقتی ریکوئستی برای سرور از طرف مرورگر کاربر ارسال می‌گردد و سرور هم به درستی ریسپانس مناسب را باز می‌گرداند، این ارتباط تمام شده تلقی خواهد شد.

پیش از به پایان رساندن این مبحث، توصیه می‌شود برای کسب اطلاعات بیشتر به آموزش‌های تکمیلی زیر از دورهٔ آموزش برنامه‌نویسی مراجعه نمایید:
– نگاهی به پروتوکل HTTP و URL
– متدهای اصلی در پروتکل HTTP
– آشنایی با پیام‌های HTTP
– آشنایی با پورت‌های پروتکل HTTP
 پروتکل امن SSL: سیگنالی هر چند کوچک برای رنکینگ بهتر سایت

درک تفاوت مابین Website ،Web Page و Web Application
گرچه بسیاری از این مفاهیم در مکالمات روزمره به جای یکدیگر مورد استفاده قرار می‌گیرند، اما اگر بخواهیم به طور تخصصی‌تر تعریفی برای تک‌تک آنها داشته باشیم، بایستی تعاریف زیر را در نظر گرفت:
– Web Page: این اصطلاح به یکی از صفحات یک وب‌سایت اشاره دارد. به طور مثال، این صفحه‌ای که در حال مطالعهٔ آن هستید یک وب‌پیج است.

– Website: هر وب‌سایت مجموعه‌ای از تعدادی وب‌پیج است که روی یک سرور قرار داشته و به نوعی به یکدیگر مرتبط هستند.

– Web Application: وب اپلیکیشن نوعی نرم‌افزار است که روی اصطلاحاً یک Client اجرا می‌گردد. این کلاینت معمولاً یک مرورگر -همچون فایرفاکس یا کروم- است که می‌تواند با سرور ارتباط برقرار سازد (لازم به ذکر است که گاهی‌اوقات سرورها هم می‌توانند نقش کلاینت را بازی کنند). چنانچه بخواهیم یک وب اپلیکیشن مشهور را نام ببریم، می‌توانیم به شبکهٔ اجتماعی لینکداین اشاره کنیم که به منزلهٔ نرم‌افزاری است که داخل مرورگر کاربران اجرا می‌شود.

باتوجه به آنچه تاکنون فرا گرفته‌اید، می‌توان گفت که سایت‌های استاتیک به نوعی Website هستند و نام دیگر سایت‌های دینامیک هم Web Application است.

آشنایی با وب سرورهای مشهور دنیا
پیش از به پایان رساندن این آموزش، بد نیست کمی اطلاعات در مورد انواع نرم‌افزارهای وب سرور معروف دنیا داشته باشیم. برای این منظور، می‌توانید به آموزش آشنایی با وب سرورهای مشهور دنیا از دورهٔ آموزش اصول برنامه‌نویسی در سکان آکادمی مراجعه نمایید.

آشنایی با مفهوم هاستینگ و معیارهای انتخاب یک شرکت وب هاست خوب


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

همان‌طورکه در تصویر فوق می‌بینیم، سخت‌افزارهایی مدرن در محیطی امن و محافظت شده که تحت عنوان Web Host شناخته می‌شوند، مسئول ذخیره‌سازی وب‌سایت‌ها و اپلیکیشن‌های آنلاین مختلفی می‌باشند. نکتهٔ جالبی که در مورد وب هاست‌ها وجود دارد این است که ما به عنوان کسی که دارای یک وب‌سایت است قادر خواهیم بود تا برای خود یک وب‌ هاست ایجاد کنیم به این صورت که اطلاعات وب‌سایت خود را روی کامپیوتری شخصی‌مان انتقال داده و کامپیوترمان را به اینترنت متصل نماییم اما این در حالی است که این کار نیاز به دانش فنی نسبتاً زیادی است و در عین حال می‌بایست هزینه‌های بیشتری نسبت به خرید فضای هاست از شرکتی که خدمات هاستینگ ارائه می‌دهد متقبل شویم.

هرچه سایتی که راه‌اندازی می‌کنیم بزرگ‌تر و مهم‌تر بوده و تعداد کاربرانی که هر روز به آن سر می‌زنند بیشتر باشد، اهمیت نوع انتخاب شرکت هاستینگ دوچندان می‌گردد. در انتخاب شرکت هاستینگ، همواره می‌بایست نکات زیر را مد نظر داشته باشیم:
آپ تایم
یکی از مهم‌ترین چیزها در انتخاب هاستینگ، Uptime سرویس‌های آن شرکت است. به عبارت دیگر، می‌بایست ببینیم که احتمال از دسترس خارج شدن سایت‌هایی که در شرکت مد نظر میزبانی می‌شوند چقدر است؛ هرچه این درصد کمتر باشد، این نشان از بهتر بودن شرکت هاستینگ است (البته توجه داشته باشیم که هیچ شرکتی نمی‌تواند ادعا کند که آپ‌تایمش ۱۰۰٪ است. حتی شرکت‌های بزرگی همچون آمازون نیز گاهی‌اوقات با مشکلات سروری مواجه می‌شوند). 99.5٪ امتیاز خوبی است و اگر Uptime شرکتی زیر 99 بود، بایستی احتیاط کرد!

حال ممکن است این سؤال برای شما پیش بیاید که از کجا می‌توان به درصد Uptime یک شرکت هاستینگ پی برد؟ یکی از راه‌کارهای مؤثر، نظرات کاربرانی است که از خدمات و سرویس‌های هاستینگ یک شرکت استفاده می‌کنند؛ معمولاً کاربران ناراضی این عدم رضایتمندی خود را در اکثر شبکه‌های اجتماعی و تالارهای گفتگو مطرح می‌کنند! علاوه بر این، یکسری بنچمارک‌ها هم وجود دارند که شرکت‌های هاستینگ را رتبه‌بندی می‌کنند (البته به چنین آماری خیلی نمی‌توان اکتفا کرد چرا که ممکن است عرضهٔ چنین بنچمارک‌هایی سیاست تبلیغاتی برخی شرکت‌های هاستینگ باشند و صرفاً در صورتی می‌توان این آمار را معتبر تلقی کرد که از طرف سازمانی بی‌طرف ارائه شده باشد).

پشتیبانی 24/7 ساعته
زمانی که ما برای میزبانی سایت خود به یک شرکت دیگر اعتماد می‌کنیم، حتماً می‌بایست اطمینان حاصل کنیم که در مواقع مورد نیاز و زمان‌هایی که با مشکل مواجه می‌شویم، کارشناسان شرکت مد نظر به خوبی از ما پشتیبانی خواهند کرد و آن شرکت پشتیبانی 24/7 دارد. به عبارت دیگر، 7 روز هفته به صورت 24 ساعته پاسخگوی مشتریان خود هستند.

در برخی شرکت‌ها این پشتیبانی به صورت تلفنی است و در برخی دیگر به صورت تیکتینگ و حتی چت آنلاین. روش پشتیبانی هرچه که باشد، مهم آن است که شما به عنوان مشتری به حال خود رها نشوید و به سرعت به جواب خود برسید.

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

هاست داخل ایران
یکی از چیزهایی که هم از دید موتورهای جستجویی مثل گوگل و هم از دید کاربران بسیار مهم انگاشته می‌شوند، سرعت لود شدن سایت است. یکی از چیزهایی که منجر به افزایش سرعت لود سایت می‌شود، میزبانی کردن سایت خود روی سرورهای قرار گرفته در داخل ایران است (البته به شرط آن که اکثر مخاطبین سایت شما از داخل ایران باشند). اگرچه که قیمت سرورهای داخل ایران نسبت به سرورهای خارجی -مثلاً آلمانی یا کانادایی- تاحدودی بیشتر است، اما این افزایش رضایتمندی کاربران در دراز مدت می‌تواند این اختلاف هزینه را به مراتب بهتر جبران کند.

پشتیبانی از زبان سمت سرور مد نظر شما
یکی از مهم‌ترین نکات، این است که شرکت هاستینگ انتخابی شما از فناوری‌هایی که قصد دارید در طراحی وب اپلیکیشن خود مورد استفاده قرار دهید پشتیبانی کند. به طور مثال، خیلی از وب هاست‌ها زبان روبی را ساپورت نمی‌کنند و یا از نسخهٔ PHP 5.6 پشتیبانی می‌کنند و این در حالی است که وب اپلیکیشن شما بر پایهٔ PHP نسخهٔ ۷ است.

شرکت هاستینگ چه نوع سرویس‌هایی ارائه می‌دهد
بررسی انواع سرویس‌های هاستینگ خارج از بحث این آموزش است اما به طور کلی می‌بایست ببینیم که ما به چه نوع سروری نیاز داریم: هاست اشتراکی، هاست اختصاصی، وی‌پی‌اس، هاست دانلود، هاست ابری و غیره. پس از مشخص شدن نیاز خود، حال می‌بایست ببینیم که شرکت انتخابی ما سرویس مد نظر ما را ارائه می‌دهد یا خیر.

علاوه بر این، این نکته را هم مد نظر داشته باشید که برخی شرکت‌های هاستینگ در یک زمینهٔ خاص می‌توانند سرویس خوب ارائه دهند و برخی شرکت‌های دیگر در سایر زمینه‌ها. به طور مثال، ممکن است شرکتی بهترین شرکت داخلی برای ارائهٔ هاست اشتراکی باشد و شرکت دیگری بهترین سرویس را برای هاست لینوکسی ارائه دهد؛ پس نیاز ما تعیین‌کننده خواهد بود که به دنبال چه شرکتی برویم.

قابلیت ارتقاء سرور
یکی دیگر از مسائل مهم در انتخاب شرکت هاستینگ، قابلیت ارتقاء سرور است. به عبارت دیگر، بایستی بررسی کرده و ببینید که آیا در صورت نیاز، شرکت مد نظر به راحتی امکان ارتقاء سرویس را به شما می‌دهد یا خیر.

فرض کنید در ابتدای راه‌اندازی سایت، شما به فضایی معادل با ۱ گیگابایت، CPU چهار هسته‌یی و 2 گیگابایت حافظهٔ RAM نیاز دارید اما به مرور زمان و با افزایش تعداد کاربران سایت‌تان، نیاز به ارتقاء سرویس خود دارید. این مسأله‌یی است که به سادگی و در کمترین زمان ممکن می‌بایست توسط شرکت هاستینگ صورت پذیرد.

هزینه
قیمت سرویس هاستینگ هم به نوعی مهم است؛ اگر شما صاحب یک استارتاپ هستید که هنوز به درآمدزایی نرسیده است، پس می‌بایست تمام تلاش خود را به کار بندید تا هزینه‌های خود را کاهش دهید. برخی شرکت‌های هاستینگ هستند که در ابتدای کار هزینهٔ معقولی دریافت می‌کنند اما برای تمدید سرویس، مشتری هزینهٔ نسبتاً قابل‌توجهی را متحمل خواهد شد.  

نکتهٔ دیگری که در ارتباط با هزینهٔ خرید سرویس هاستینگ می‌بایست مد نظر داشت این است که هر گرانی بی‌علت نیست؛ پس هرگز در این دام نیفتید که ارزان‌ترین قیمت ممکن را بیابید. اگر شرکتی بخواهد از آخرین فناوری‌های روز، تیم پشتیبانی حرفه‌ای و … استفاده کند، همهٔ اینها مستلزم صرف هزینه‌اند؛ لذا قیمت تمام شدهٔ سرویس بالا خواهد رفت و مشتری هم می‌بایست در این افزایش هزینه سهیم گردد.

کنترل پنل کاربرپسند
کنترل پنلی هم که شرکت هاستینگ در اختیار ما قرار می‌دهد می‌بایست راحت و کاربرپسند باشد. امروزه اکثر شرکت‌های هاستینگ از کنترل پنل‌های cPanel ،Plesk و یا DirectAdmin استفاده می‌کنند. خیلی فرقی نمی‌کند که چه کنترل پنلی در اختیار ما قرار گیرد مادامی که کار با آن راحت بوده و تا حد ممکن ما را از نیاز به کارشناسان پشتیبانی بی‌نیاز سازد و پرمیشن‌های کافی برای انجام کارهای مختلف داشته باشیم.

مدت قرارداد و دورهٔ تعلیق
این نکته را می‌بایست بررسی کرد که مدت قراردادهای شرکت هاستینگ به چه صورت است. به طور معمول، قراردادها به صورت سالانه تنظیم می‌شوند. علاوه بر این، بایستی ببینید که در صورت تمدید نکردن قرارداد چه اتفاقی برای سایت شما خواهد افتاد؛ آیا بلافاصله اطلاعات شما پاک می‌شوند و یا یک بازهٔ مثلاً یکی الی دو ماهه اطلاعات شما نگاه داشته می‌شوند.

بکاپ سایت
وقتی که شما صاحب یک سایت می‌شوید، زمان‌هایی پیش می‌آید که همه چیز به‌خوبی پیش نمی‌رود (مثلاً مورد حمله قرار می‌گیرد و یا سروری که وب‌سایت شما روی آن میزبانی می‌شود از کار می‌افتد) که در چنین مواقعی نیاز به Backup (بکاپ یا نسخهٔ پشتیبان سایت) داریم.

شرکت هاستینگ انتخابی می‌بایست به طور روزانه و دائم از سایت بکاپ تهیه کند و حتی این امکان را در اختیار مشتری قرار دهد تا به بکاپ‌های گذشته -مثلاً یک ماه پیش- نیز دسترسی پیدا کند. در ارتباط با بکاپ سایت همواره می‌بایست این مسائل را مد نظر قرار داد:
– آیا وب هاست بکاپ کامل از سایت در اختیارمان قرار می‌دهد یا خیر؟
– آیا جایگزین کردن بکاپ سایت به سادگی از طریق کنترل پنلی که در اختیارمان قرار می‌گیرد امکان‌پذیر است؟
– آیا خود وب‌مستر امکان بکاپ گرفتن از سایت را در زمان‌های دلخواه دارد یا خیر؟

امنیت
اگر شما واقعاً به دنبال راه‌اندازی سایتی هستید که قرار است از آن کسب درآمد کنید، تراکنش‌ها مالی آنلاین انجام دهید، با اطلاعات شخصی کاربران سر و کار دارید و بسیاری مسائل دیگر، امنیت وب هاست می‌بایست جزو اولویت‌های اصلی شما باشد.

در واقع، بایستی بررسی کنید ببینید که مدیران فنی شرکت انتخابی از چه سیاست‌هایی برای ارتقاء امنیت سرویس‌های خود بهره می‌برند. مثلاً خیلی از شرکت‌های هاستینگ هستند که به صورت خودکار جلوی خیلی از حملات DoS را می‌گیرند (برای آشنایی بیشتر با حملات DoS و DDoS،‌ به مقالهٔ دیداس (DDoS) چیست؟ مراجعه نمایید).

راه‌کارهای جلوگیری از اسپم شدن ایمیل
شاید بسیاری از وب‌مسترها در بدو امر به این نکته توجه نکنند اما راه‌کارهایی که شرکت‌های هاستینگ برای جلوگیری از اسپم شدن ایمیل‌های مرتبط با دامین مشتریان به کار می‌گیرند نیز بسیار حائز اهمیت است. فرض کنید که شما دامنه‌یی دارید به آدرس www.example.com و ایمیلی هم دارید به آدرس info@example.com. شرکت هاستینگ شما این تضمین را می‌بایست بدهد که ایمیل‌های ارسالی از این ایمیل سازمانی شما هرگز اسپم نخواهند شد (البته بخشی از این ماجرا در دست شرکت هاستینگ است).

ادب، شخصیت و مشتری‌مداری پرسنل شرکت هاستینگ
شاید این نکته در ظاهر خیلی مهم انگاشته نشود، اما در دراز مدت می‌تواند تأثیر بسزایی در یک همکاری بلندمدت مابین شما و شرکت هاستینگ ایجاد کند. پیش از خرید سرویس از شرکت انتخابی، حتماً از مشتری‌مداری شرکت مد نظر اطمینان حاصل کنید چرا که اگر پس از مدتی کاشف به عمل آید که ایشان از شخصیتی درخور شما برخوردار نیستند، مجبور خواهید بود که سرویس خود را جابه‌جا کنید (حتی اگر سرویس خوبی هم به شما ارائه کرده باشند).

ببینید که سایت‌های حرفه‌ای از خدمات چه شرکتی استفاده می‌کنند
یکی دیگر از راه‌های نسبتاً خوب برای انتخاب یک شرکت هاستینگ این است که چند سایت حرفه‌ای در وب فارسی را نشان کنید، سپس ببینید که این سایت‌ها از خدمات کدام شرکت هاستینگ بهره می‌برند. سایتی که حرفه‌ای عمل کرده و توانسته مخاطبین زیادی به خود جذب کند، به طور حتم در مورد انتخاب شرکت هاستینگ خود نیز وسواس زیادی به خرج داده است.

مطالب مرتبط

2 دیدگاه‌

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

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *