
با وجود اپلیکیشنهای معتبر متعددی که برای دفترچه تلفن وجود دارد، این پروژه نه فقط برای استفاده به عنوان دفترچه تلفن بلکه برای افراد علاقهمندی که تازه شروع به یادگیری زبان PHP کردهاند و دورهی آموزش مقدماتی را گذراندهاند _به عنوان پروژهیی که سعی شده مفاهیم مختلفی را در خود بگنجاند_ شاید مفید باشد.
در این پروژه سعی شده تا مفاهیم و موراد زیر به کار گرفته شوند:
۱. برنامهنویسی شی گرا (OOP) ۱
۲. معماری ۲MVC
۳. الگوی طراحی ۳Singleton
۴. دسترسی MySQL به وسیلهی ۴PDO و کوئری با استفاده از ۵Prepared Statements
۵. متدهای ۶C.R.U.D در کلاس دیتابیس
۶. URL Routing – تخصیص پویای مسیر URL به سمت متدها و در نهایت، تحویلِ دادهها به خروجی html مربوطه
۷. خروجی دادهها به شکل Object واحد و پیکربندی قالب html به وسیلهی موتور قالبساز ۷TWIG
۸. پیادهسازی سیستم چند زبانه
۹. صفحهبندی _ تغییر به چیدمان دلخواه، برای موارد اضافه شده (Pagination – Sorting)
۱۰. Captcha برای ورود به سیستم مدیریت (بررسی در سمت کلاینت و سمت سرور) ۸
Cloudflare Turnstile و Google reCaptcha
۱۱. تخصیص موارد ثابت موردنیاز در فایلی واحد (config.php)
۱۲. بهکارگیری تقویم خورشیدی
۱۳. متد مدیریت کنندهی خطاهای احتمالی
۱۴. استفاده از ۹bootstrap و ۱۰jQuery
دانلود (از GitHub)
مخزن پروژه در GitHub
دمو:
صفحه اصلی
پنل مدیریت
(نام کاربری: admin / رمز: 123)
برای فرستادن پرسش و یا گزارش ایراد، میتوانید از طریق Issues مخزن پروژه در GitHub، اقدام کنید.
نصب
موارد مورد نیاز:
۱. وبسرور Apache
۲. دیتابیس MySQL
۳. PHP نسخهی 8.2.4 به بالا.
۴. ماژول mod_rewrite وبسرور Apache فعال باشد. ↧
۵. افزونههای mysqlnd, mysqli, pdo ,pdo_mysql در PHP فعال باشند.
برای بررسی موارد بالا کافیست یک فایل PHP با کد زیر در پوشهی root وبسرورتان بسازید و آن فایل را با مرورگر خود اجرا کنید: <?php phpinfo(); ?>
۶. allowOverride مسیر root در فایل config وبسرور Apache روی All تنظیم شده باشد. ↧
مراحل نصب:
۱. ابتدا دیتابیس خود را در MySQL بسازید.
۲. اطلاعات دیتابیستان و PROJECT_URL
خودتان را در فایل config.php وارد کنید.
– مراحل سه و چهار را میتوانید به دو روش مختلف اجرا کنید:
۳. برای افزودهشدن خودکار جدولهای دیتابیس و افزودن نام کاربری و رمز عبور مدیریت، کافیست /setup/ را در مرورگر خود اجرا کنید.
مثال: https://localhost/PHP-Phone-Book/setup
۴. پس از نصب، پوشه setup را حذف کنید.
یــا اینکه:
۳. پوشه setup را حذف کنید.
۴. فایل php_phone_book.sql را در دیتابیس خود IMPORT کنید.
نام کاربری شما admin و رمز عبورتان 123 خواهد بود.
۵. دسترسی یا permission پوشهی media و دایرکتوریهای آن را روی 777 قرار دهید.
$ sudo chmod -R 777 media
حالا PROJECT_URL
خود را در مرورگر اجرا کنید:
مثال برای صفحهی اصلی:
https://localhost/PHP-Phone-Book/
مثال برای پنل مدیریت:
https://localhost/PHP-Phone-Book/admin2023
راهنمایی
نحوهی فعال کردن ماژول mod_rewrite و تنظیم مورد نیاز config وبسرور Apache
برای اینکه فایل htaccess. موجود در پروژه، کار کند تا متد مسیریابی URL به درستی عمل کند، لازم است ماژول ذکر شده فعال باشد و allowOverride در فایل config وبسرور Apache روی All تنظیم شده باشد. (در غیر اینصورت مثلاً صفحهی پنل مدیریت باز نخواهد شد.)
نکته: اگر از xampp یا هاستینگهای اشتراکی استفاده میکنید این تنظیمات معمولاً به شکل پیشفرض فعال هستند؛ پس شما نیازی به فعالسازی و تنظیم مجدد ندارید.
یک ترمینال باز کنید و موارد زیر را انجام دهید:
فعالسازی ماژول mod_rewrite:
$ sudo a2enmod rewrite
ویرایش فایل کانفیگ Apache:
$ cd /etc/apache2
$ sudo nano apache2.conf
محیط GNU nano برای ویرایش فایلِ بالا باز شده است، حالا کد زیر را پیدا کنید:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
کد زیر را جایگزین کد بالا کنید:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
دقت کنید که /var/www/
همان مسیر root شما است.
حالا با فشردن کلید ctrl+o فایل را ذخیره کنید و سپس با ctrl+x خارج شوید.
در آخر با دستور زیر Apache را restart کنید:
$ sudo systemctl restart apache2
راهنمایی برای افزودن زبان
۱. فایل زبان خود را در پوشهی lang بسازید.
به عنوان مثال، فایل fr.php را در پوشهی lang ایجاد کنید و مانند فایل lang/fa.php توسعه دهید.
۲. در صفحههای html خود، زبان تازه را اضافه کنید:
<!-- مثال: -->
<div class="changeLanguage">
<button id="fr">Fr</button>
<button id="en">En</button>
</div>
<!-- و همچنین نگاه کنید به:
.changeLanguage click function
در:
view/assets/js/app.js و backend.js -->
پینوشتها:
1. ↥ Object Oriented Programming, OOP – wikipedia
2. ↥ Model-View-Controllers, MVC – wikipedia
3. ↥ Singleton Design Pattern – wikipedia
4. ↥ PHP Data Objects, PDO – php.com
5. ↥ Database management systems (DBMS), Prepared Statements – php.com/
6. ↥ Create, Read, Update, Delete (C.R.U.D) – wikipedia
7. ↥ PHP template engine, Twig – twig.symfony.com
8. ↥ Type of challenge–response, CAPTCHA – wikipedia
9. ↥ CSS framework, Bootstrap – https://getbootstrap.com/
10. ↥ JavaScript library, jQuery – https://jquery.com/