پی اچ پی (به انگلیسی: PHP) یک زبان برنامه نویسی است که برای طراحی وب توسعه یافته است، اما می توان از آن به عنوان یک زبان عمومی نیز استفاده کرد. طبق آمار، تا ژانویهٔ سال ۲۰۱۳ میلادی پی اچ پی بر روی ۲۴۴ میلیون وب سایت و ۲٫۱ میلیون سرور وب نصب شده است و این یعنی بیش از 81 درصد سایتهای دنیا و بزرگترین سایتهای جهان یعنی فیسبوک و ویکیپدیا با این زبان طراحی شده است. این زبان در سال ۱۹۹۵ میلادی توسط راسموس لِردورف (به انگلیسی: Rasmus Lerdorf) ساخته شد و در حال حاضر توسعهٔ آن بر عهدهٔ گروه پی اچ پی می باشد. در ابتدا پی اچ پی از عبارت صفحهٔ خانگی شخصی (به انگلیسی: Personal Home Page) گرفته شده بود. اما اکنون این کلمه مخففِ بازگشتی PHP: Hypertext Preprocessor به معنی پی اچ پی: پیش پردازندهٔ ابرمتن می باشد.
کدهای پی اچ پی توسط یک سرور وب که نرم افزار پی اچ پی بر روی آن نصب باشد، تفسیر می شوند. دستورهای این زبان می توانند به صورت مستقیم در درون کدهای HTML قرار بگیرند. زبان پی اچ پی از نسخهٔ ۴٫۳ به بعد قابلیت پشتیبانی از واسط خط فرمان را نیز به امکانات خود اضافه کرد. این قابلیت می تواند برای ایجاد نرم افزارهای غیر وبی و یا نرم افزارهایی با واسط گرافیکی کاربر مورد استفاده قرار بگیرد. پی اچ پی یک نرم افزار آزاد است که تحت مجوز پی اچ پی انتشار یافته است. این مجوز به دلیل قرار دادن محدودیت بر روی استفاده از عنوان پی اچ پی، با مجوز همگانی گنو (GPL) سازگار نیست. پی اچ پی را می توان بر روی اکثر سرورهای وب نصب کرد. همچنین قابلیت نصب آن به صورت یک شل جداگانه بر روی تقریباً تمامی سیستم های عامل و پلت فرم ها (یا سکوها) وجود دارد. تمامی این استفاده ها رایگان است.
در این دوره، بصورت مرحله به مرحله از پایه (دانلود و نصب نرم افزارها و پیکربندی سیستم عامل) تا تولید یک وب سایت کاربردی و کامل با امکان مدیریت ورود و خروج کاربران و درج، ویرایش و حذف مطالب آشنا خواهید شد. یکی از مهمترین مزایای این دوره، آموزش همزمان در دو محیط لینوکس و ویندوز و درنتیجه آشنایی برنامه نویسان وب به محیط لینوکس می باشد. این موضوع از آن جهت اهمیت پیدا می کند که اکثر سرورهای قدرتمند و امن وب، در بستر لینوکس به فعالیت خود ادامه می دهند و در نهایت، وب سایت شما باید روی یکی از همین سرورها اجرا شود و آشنایی مقدماتی با این سیستم عامل و تفاوتهای آن با ویندوز، یکی از مهمترین نیازهای هر برنامه نویس وب با PHP به شمار می رود.
سرفصل مطالب
مشاهده برنامه زمانی و ثبت نام: http://academy.ncis.ir/course/basic-php
کدهای پی اچ پی توسط یک سرور وب که نرم افزار پی اچ پی بر روی آن نصب باشد، تفسیر می شوند. دستورهای این زبان می توانند به صورت مستقیم در درون کدهای HTML قرار بگیرند. زبان پی اچ پی از نسخهٔ ۴٫۳ به بعد قابلیت پشتیبانی از واسط خط فرمان را نیز به امکانات خود اضافه کرد. این قابلیت می تواند برای ایجاد نرم افزارهای غیر وبی و یا نرم افزارهایی با واسط گرافیکی کاربر مورد استفاده قرار بگیرد. پی اچ پی یک نرم افزار آزاد است که تحت مجوز پی اچ پی انتشار یافته است. این مجوز به دلیل قرار دادن محدودیت بر روی استفاده از عنوان پی اچ پی، با مجوز همگانی گنو (GPL) سازگار نیست. پی اچ پی را می توان بر روی اکثر سرورهای وب نصب کرد. همچنین قابلیت نصب آن به صورت یک شل جداگانه بر روی تقریباً تمامی سیستم های عامل و پلت فرم ها (یا سکوها) وجود دارد. تمامی این استفاده ها رایگان است.
در این دوره، بصورت مرحله به مرحله از پایه (دانلود و نصب نرم افزارها و پیکربندی سیستم عامل) تا تولید یک وب سایت کاربردی و کامل با امکان مدیریت ورود و خروج کاربران و درج، ویرایش و حذف مطالب آشنا خواهید شد. یکی از مهمترین مزایای این دوره، آموزش همزمان در دو محیط لینوکس و ویندوز و درنتیجه آشنایی برنامه نویسان وب به محیط لینوکس می باشد. این موضوع از آن جهت اهمیت پیدا می کند که اکثر سرورهای قدرتمند و امن وب، در بستر لینوکس به فعالیت خود ادامه می دهند و در نهایت، وب سایت شما باید روی یکی از همین سرورها اجرا شود و آشنایی مقدماتی با این سیستم عامل و تفاوتهای آن با ویندوز، یکی از مهمترین نیازهای هر برنامه نویس وب با PHP به شمار می رود.
سرفصل مطالب
- نصب ویندوز و لینوکس بصورت مجازی
- دانلود و نصب پکیج AMP در لینوکس
- دانلود و نصب پکیج XAMPP در ویندوز
- دانلود و نصب OpenJDK در لینوکس (موردنیاز برای NetBeans)
- دانلود و نصب Java Runtime Environment در ویندوز (موردنیاز برای Zend Studio)
- دانلود و نصب NetBeans IDE در لینوکس
- دانلود و نصب Zend Studio در ویندوز
- تعریف Permissionهای موردنیاز در لینوکس
- دانلود و نصب Firefox در ویندوز
- دانلود و نصب Themeهای موردنیاز در Zend Studio و NetBeans
- تست نصب صحیح پکیجهای AMP و XAMPP با فراخوانی مسیر localhost در مرورگر
- تفاوت صفحات وب پویا با ایستا
- نحوه پردازش درخواست کاربر و تولید خروجی موردنظر با همکاری وب سرور و مفسر PHP
- آشنایی با دستور echo
- اولین قانون در PHP
- توضیحات در PHP
- متغیرها
- قواعد نامگذاری متغیرها
- تفاوت روشهای مقداری و ارجاعی در استفاده از متغیرها
- انواع متغیرها در PHP
- کار با رشته ها
- ادغام رشته ها
- تفاوت رشته های محصور در گیومه تک و جفت
- استفاده از عدد بعنوان رشته
- استفاده از رشته بعنوان عدد
- محاسبه طول رشته
- تفاوت کارکترهای Unicode و معمولی
- عملگرها در PHP
- عملگرهای ریاضی
- عملگرهای مقایسه ای
- عملگرهای منطقی
- عملگرهای بیتی
- اولویت و خاصیت انجمنی عملگرها
- نصب ++Notepad و تنظیمات آن
- ساختار شرطی if...elseif...else
- کاربرد elseif و تفاوت آن با else if
- کاربرد else
- استفاده از آکولاد برای مشخص کردن بلاک دستورات
- بررسی خطاهای احتمالی کاربران در استفاده از ساختار if
- معرفی ساختار switch...case
- مواردی که نمیتوان از switch استفاده کرد
- نقش دستور break در ساختار switch و بررسی موارد کاربرد عدم استفاده از آن در ادغام چند case
- نکات امنیتی در استفاده از ساختار switch (بحث تبدیل نوع متغیر و حفره های امنیتی احتمالی که ممکن است ایجاد شود و راهکار جلوگیری از آن)
- معرفی دستور settype جهت تغییر نوع متغیر
- ساختار شرطی سه گانه : ?
- شرایط لازم برای امکان استفاده از این ساختار
- ساختار تکرار while
- موارد کاربرد
- نکات مهم در هنگام استفاده از while جهت پرهیز از حلقه بینهایت
- معرفی تنظیمات PHP در php.ini جهت تعیین حداکثر زمان اجرای اسکریپت
- معرفی ساختار کدنویسی استاندارد جهت آکولادها برای بهره بردن از امکانات IDEهای پیشرفته
- حلقه while معکوس (تکرار تا زمان عدم برقراری شرط و خروج به محض برقرارشدن شرط حلقه)
- معرفی ساختار تکرار do...while و تفاوت آن با while در بررسی شرط در پایان حلقه
- معرفی ساختار for
- بررسی جداگانه بخشهای Initialization و Conditions و Iteration در حلقه for
- نوشتن و اجرای بیش از یک دستور در بخشهای مختلف حلقه for
- حذف بخشهای مختلف حلقه for
- حلقه تو در تو
- خروج اضطراری از حلقه در شرایط خاص
- نادیده گرفتن یک دور از حلقه در شرایط خاص
- استفاده از PHP و حلقه های تودرتو برای تولید جدول ضرب (کاربرد PHP در تولید کد HTML سفارشی - رنگ آمیزی جدول و... - بصورت پویا)
- مفهوم آرایه
- تفاوت آرایه های PHP با سایر زبانها
- چرا آرایه ها در PHP اینقدر معروف و قدرتمند هستند؟
- انواع روشهای مختلف تعریف آرایه در PHP (با کمک کروشه و دستور array)
- محاسبه تعداد عناصر آرایه (دستور count)
- تغییر عناصر آرایه
- حذف عناصر آرایه (معرفی دستور unset)
- آرایه با اندیس رشته ای
- ایجاد آرایه خالی
- نمایش کلی آرایه (معرفی و توضیح دستورات print_r و var_dump و var_export و تفاوت آنها)
- معرفی و توضیح دستور range
- پیمایش آرایه با foreach و روشهای مختلف کاربرد و محدودیتهای آن
- دستور each و تفاوت آن با ساختار foreach
- معرفی و توضیح دستورات کار با آرایه ها
- دستور array_change_key_case
- دستور array_chunk
- دستور array_column
- دستور array_count_values
- دستور array_diff
- دستور array_key_exists
- دستور in_array
- دستور array_map
- دستور array_merge
- دستور array_replace
- دستور array_reverse
- دستور array_sum
- دستور array_unique
- دستور current
- دستور each
- دستور end
- دستور next
- دستور prev
- دستور reset
- دستور shuffle
- دستور sizeof
- دستور sort
- آرایه های چند بعدی
- پیمایش آرایه های چند بعدی با حلقه های تودرتو
- کاربرد دستور explode در تبدیل رشته به آرایه
- کاربرد دستور implode در تبدیل آرایه به رشته
- چیدن عناصر آرایه در متغیرهای معمولی با دستور list
- پیمایش آرایه های دارای اندیس رشته ای با حلقه for (معرفی دستورات array_keys و array_values)
- روشهای مختلف استخراج عنصر تصادفی از آرایه (معرفی دستورات array_rand و rand)
- متغیرهای متغیر (Variable variables)
- داده و کد: دو رکن اساسی برنامه نویسی
- مفهوم و نقش تابع
- تعریف تابع در PHP
- ارسال مقادیر ورودی برای تابع
- محدوده اعتبار متغیرها (Scope)
- تشریح تفاوت پارامتر و آرگومان
- استفاده از پارامترهای ارجاعی
- دریافت خروجی از تابع
- استخراج بیش از یک خروجی از تابع با کمک پارامترهای ارجاعی
- خروج از تابع بدون دریافت مقدار
- متغیرهای ایستا (static) در توابع
- توابع متغیر
- توابع بدون نام
- حذف توابع بدون نام تعریف شده
- دستورات کار با توابع:
- دستور call_user_func_array
- دستور call_user_func
- دستور create_function
- دستور func_get_arg
- دستور func_get_args
- دستور func_num_args
- دستور function_exists
- دستور get_defined_functions
- دستور register_shutdown_function
- دستور register_tick_function
- دستور unregister_tick_function
- توضیح مفهوم callback
- تعریف پارامترهای اختیاری (با مقدار پیشفرض)
- نحوه رد کردن (Skip) پارامترهای اختیاری
- بررسی وجود Named Parameters در PHP با جستجو در اینترنت (و نتیجه عدم وجود و آموزش معادلسازی)
- توضیح روش جایگزین جهت شبیه سازی قابلیت Named Parameters
- نوشتن کد معادل تابع array_map با کمک توابع متغیر
- دسترسی به متغیرهای سراسری از داخل تابع
- متغیرهای فوق سراسری (SuperGlobal) در PHP
- تشریح کامل تفاوت نحوه ارسال مقادیر با روشهای Post و Get
- نقاط ضعف و قوت روش Get
- نقاط ضعف و قوت روش Post
- معرفی آرایه های فوق سراسری POST_$ و GET_$
- دریافت مقادیر عناصر text
- دریافت مقادیر عناصر password
- حذف حساسیت نام کاربری به بزرگی و کوچکی حروف
- دریافت مقادیر عناصر radio
- دریافت مقادیر عناصر checkbox
- دریافت مقادیر عناصر select
- عنصر select با قابلیت انتخاب چندگانه و پردازش آن بصورت آرایه در PHP
- دریافت مقادیر عناصر hidden
- خنثی سازی کارکترهای خطرناک در ورودیهای کاربر
- آپلود فایل و تغییرات لازم در فرم
- معرفی آرایه فوق سراسری FILES_$
- انواع خطا در آپلود فایل
- علت لزوم بررسی مجدد اندازه فایل در سمت سرور
- آپلود چند فایل بصورت همزمان
- امنیت آپلود (پسوندهای چندگانه و مجوزهای اجرا)
- بحث مجوزهای پوشه آپلود در لینوکس جهت ایجاد امکان ذخیره سازی فایل در پوشه توسط PHP
- توضیح دستورات chmod و chown و chgrp در PHP و لینوکس
- معرفی دستور shell_exec در PHP
- آرایه فوق سراسری REQUEST_$ و یادآوری نکات امنیتی مربوط به استفاده از آن
- توضیح یک مورد درخواستی توسط کاربران: پردازش فرمهایی با چند دکمه submit و تشخیص دکمه فشرده شده
- توضیح مراحل سه گانه کار با فایلها
- باز کردن فایل در PHP (دستور fopen)
- مدیریت خطاهای احتمالی (معرفی دستورات die و exit و ساختار @)
- خواندن از فایل (دستورات fgetc و fgets و fread و file و file_get_contents)
- نوشتن در فایل (دستورات fputs و fwrite و file_put_contents)
- تشخیص رسیدن به انتهای فایل (دستور feof)
- بستن فایل (دستور fclose)
- معرفی دستورات کار با فایل:
- دستور basename
- دستور chgrp
- دستور chmod
- دستور chown
- دستور clearstatcache
- دستور copy
- دستور delete
- دستور dirname
- دستور disk_free_space
- دستور disk_total_space
- دستور fflush
- دستور fgetcsv
- دستور fgetss
- دستور file_exists
- دستور fileatime
- دستور filectime
- دستور filegroup
- دستور fileinode
- دستور filemtime
- دستور fileowner
- دستور fileperms
- دستور filesize
- دستور filetype
- دستور flock
- دستور fseek
- دستور ftell
- دستور ftruncate
- دستور glob
- دستور is_dir
- دستور is_executable
- دستور is_file
- دستور is_link
- دستور is_readable
- دستور is_uploaded_file
- دستور is_writable
- دستور mkdir
- دستور pathinfo
- دستور realpath
- دستور rename
- دستور chdir
- دستور glob
- دستور opendir
- دستور scandir
- دستور closedir
- دستور readdir
- دستور rewind
- دستور tempnam
- دستور tmpfile
- دستور touch
- دستور unlink
- ساخت گالری عکس ساده ولی زیبا با کمک PHP و HTML و CSS
- تست گالری و تنظیمات مربوط به مجوزها در محیط لینوکس
- توضیح مفهوم پایگاه داده ها و تفاوت آن با سیستم فایل معمولی
- توضیح مفهوم DBMS و پایگاه داده رابطه ای و RDBMS
- معرفی چند نمونه از DBMSهای رایج
- تشریح مفاهیم دیتابیس، جدول، فیلد و رکورد
- توضیح علت کاربرد گسترده MySQL در کنار PHP
- آشنایی با محیط خط فرمان MySQL
- آشنایی با محیط phpMyAdmin
- ساخت دیتابیس و مفهوم Collation و معرفی کدگذاریهای رایج برای زبان فارسی
- نحوه اجرای دستورات SQL در phpMyAdmin
- ایجاد جدول جدید در محیط phpMyAdmin
- اضافه کردن فیلدهای دلخواه به جدول
- معرفی ستون Name
- معرفی ستون Type
- معرفی ستون Length/Values
- معرفی ستون Default و تشریح مقادیر مختلف آن (معرفی مفهوم Timestamp)
- معرفی ستون Collation
- معرفی ستون Attributes و تشریح مقادیر مختلف آن
- معرفی ستون Null
- معرفی ستون Index و تشریح انواع Primary و Unique و Index و FullText
- معرفی ستون A_I یا Auto Increment
- معرفی ستون Comments
- معرفی ستون MIME type
- معرفی ستون Browser transformation
- معرفی تفاوتهای Storage Engineهای مختلف مثل InnoDB و MyISAM و نقش و کاربرد و مزایا و معایب هرکدام با ارجاع به سایت dev.mysql.com
- درج رکوردهای موردنظر در داخل phpMyAdmin
- معرفی روشهای مختلف اتصال از PHP به MySQL (شامل mysql و mysqli و PDO)
- تشریح افزونه mysql و موکول شدن mysqli و PDO به بعد (همراه با توضیح علت - عدم آشنایی کاربران برنامه نویسی شئ گرا تاکنون)
- اتصال به MySQL از درون PHP
- انتخاب دیتابیس موردنظر
- روش پنهان کردن خطاهای پیشفرض و نمایش خطاهای دلخواه
- اجرای کوئری دلخواه و گرفتن نتایج از MySQL
- تشریح مفهوم Fetch کردن و روشهای مختلف آن (با اندیس عددی و رشته ای و شئ و...)
- آزادسازی حافظه اختصاص داده شده به خروجی MySQL بعد از استفاده
- بستن اتصال به MySQL
- تشریح علت بروز خطای Too Many Connections در MySQL
- مشکل نمایش حروف فارسی بصورت ????? و راه حل برطرف کردن آن
- پیاده سازی چهار عمل اصلی دیتابیس (CRUD مخفف Create و Read و Update و Delete) در برنامه بصورت عملی
- تغییر در مقدار فیلد Auto Increment
- جلوگیری از ارسال مجدد فرم با کمک دستور header و عمل Redirect
- بهره گیری از Javascript در نمایش پیغام هشدار قبل از حذف رکوردها
- اجرای یک نمونه حمله SQL Injection ساده جهت آشنایی کاربران با میزان خطر و آموزش نحوه رفع این حفره امنیتی
- تست برنامه در محیط لینوکس
- دانلود و نصب آخرین نسخه phpMyAdmin بصورت دستی در محیط لینوکس
- تنظیمات config.inc.php جهت کارکرد صحیح phpMyAdmin
- یک نکته مهم در بحث Escape کردن اطلاعات در MySQL در زمان استفاده از متون فارسی
- توضیح مفهوم کوکی (Cookie) و کاربرد آن
- توضیح نحوه کارکرد سیستم کوکی و رفتار مرورگر در مدیریت آن
- تعریف کوکی در PHP (دستور setcookie)
- خواندن اطلاعات کوکی با کمک آرایه فوق سراسری COOKIE_$
- تعیین طول عمر برای کوکی به دو روش بازه زمانی و تاریخ مشخص
- روش حذف کوکی
- مشاهده کوکی در مرورگر و حذف دستی آن
- پیاده سازی سیستم Login و Logout با کوکی همراه با قابلیت Remember me
- یک نکته مهم درخصوص بدست آوردن اطلاعات کوکی بعد از تعریف کردن
- تشریح مفهوم Outbut Buffering و نقش آن در مدیریت اطلاعات
- تفاوت کدگذاری UTF-8 و UTF-8 without BOM و نحوه رفع خطای معروف Cannot modify headers و خطاهای مشابه آن
- معرفی سشن
- تفاوتهای سشن و کوکی و نقاط قوت و ضعف هرکدام
- معرفی تنظیمات مختلف سشن در php.ini
- ارتباط بین سشن و کوکی
- مشاهده فایلهای سشن ایجاد شده در سیستم
- نقش Session ID
- کاربرد دستور session_start
- تعریف و خواندن اطلاعات سشن با کمک آرایه فوق سراسری SESSION_$
- روش حذف سشن
- معرفی دستور session_unset
- معرفی دستور session_destroy
- معرفی حملات Session Hijacking و Session Fixation و نحوه جلوگیری از آنها (معرفی دستور session_regenerate_id)
- پیاده سازی سیستم Login و Logout با سشن
- اجرای امن دستور session_start
- ایجاد کاربر اختصاصی برای دیتابیس و تعیین حق دسترسی
- ایجاد فایل تنظیمات
- نحوه معرفی فایل تنظیمات به سایر اسکریپتها
- معرفی دستورات include و require و include_once و require_once و تفاوت آنها
- کاربرد دستور define در تعریف ثابت و تفاوت ثابتها با متغیرها
- کاربرد دستور defined
- معرفی یک ساختار ساده، زیبا و کارآمد جهت جلوگیری از تعریف مجدد ثابتها
- قراردادن توابع و ثابتهای کار با دیتابیس در فایل تنظیمات و فراخوانی آنها در سایر فایلها
- معرفی نقطه ضعف الگوریتم هش md5 و برخی ابهامات درباره میزان امنیت آن
- تست و اجرای برنامه ها در محیط لینوکس و نحوه یافتن فایلهای تنظیمات و سشن در لینوکس
- دریافت فایلهای پیشنیاز برای رهایی از طراحی ظاهر سایت (Bootstrap + FontAwesome)
- طراحی ساختار دیتابیس
- ایجاد ارتباط بین جداول و توضیح مفهوم کلید خارجی
- ایجاد قید در دیتابیس و تشریح مفهوم آن و انواع مختلف قید
- استفاده از دو حالت Relation View و سربرگ Designer برای طراحی قیدها و ارتباط بین جداول
- تنظیمات phpMyAdmin برای فعال شدن سربرگ Designer
- ایجاد یک پروژه جدید در Zend Studio
- معرفی سرور Apache برنامه XAMPP و برنامه های مشابه به Zend Studio جهت تست و اجرای پروژه
- ایجاد فایل تنظیمات
- ایجاد پوشه های مختلف جهت نگهداری فایلهای موردنیاز پروژه
- ایجاد فایلهای جداگانه برای سرصفحه و پاصفحه مشترک در تمام صفحات سایت
- ایجاد فایل حاوی توابع کار با دیتابیس
- ایجاد فایل حاوی توابع کاربردی برنامه
- معرفی یک روش تولید رمز امن و معرفی مفاهیم Salt و Pepper
- معرفی یک روش امن جهت تولید تابع Redirect
- درج اطلاعات تست بصورت دستی در دیتابیس و نمایش در مکان مناسب در قالب سایت
- استخراج دسته بندی ها
- نمایش آخرین مطالب در صفحه اصلی سایت
- نمایش مطالب مربوط به هر دسته بندی در صفحه مربوطه
- تولید تاریخ از روی برچسب زمانی
- معرفی کتابخانه JDF و نحوه تولید تاریخ هجری شمسی از روی برچسب زمانی
- نمایش نظرات مربوط به هر مطلب
- نمایش پاسخهای مربوط به هر نظر
- تولید فرم درج نظر جدید توسط کاربران با قابلیت انتخاب نظر والد (پاسخ به یک نظر)
- Escape کردن گروهی مقادیر واردشده توسط کاربر و انتساب به متغیرهای مجزا
- جلوگیری از درج مجدد نظر با Refresh شدن صفحه
- تنظیم کردن Zend Studio جهت ذخیره سازی خودکار با فرمت UTF-8 without BOM
- ایجاد بخش مدیریت
- مدیریت ورود و خروج کاربران
- ایجاد منوی کناری بخش مدیریت
- مدیریت دسته بندی ها
- ایجاد دسته بندی جدید
- ویرایش دسته بندی موجود
- حذف دسته بندی
- نمایش / عدم نمایش دسته بندی
- اصلاح بخش کاربری سایت جهت عدم نمایش دسته بندی پنهان شده و مطالب مربوطه
مشاهده برنامه زمانی و ثبت نام: http://academy.ncis.ir/course/basic-php