4 پاسخ

ساخت فریم ورک شبیه لاراول

سلام دوستان و استادان عزیز بنده یک فریم ورکی نوشتم با php این فریم ورک دست ساز خودم هستش و فایل هاش با اسم خودم سیو می شه csrf_token,xss,session time out managment رو کنترل می کنه از لحاظ امنیت و برایش کتابخانه Auth رو هم نوشتم و دستور های ترمینالی رو هم روش پیاده سازی کردم و راحت به دیتابیس متصل می شه و دیتابیس رو می سازه خشحال می شم که گیت هاب من رو دنبال کنید و ریپوزیتوری من رو ستاره دار کنید https://github.com/saeedtnt1234/saeedtnt_framework


ثبت پرسش جدید
دانیال جناب
تخصص : دانشجو
@yet4no 2 هفته پیش مطرح شد
0

سعید جان دمت گرم 🙌 ساختن یه فریم‌ورک از صفر واقعاً کار بزرگیه.
من امکان فالو یا استار زدن مستقیم روی گیت‌هاب رو ندارم، اما ریپوی شما رو نگاه کردم—الآن ۶ استار داره و در README هم به امکاناتی مثل CLI (ساخت کنترلر/مدل/ویو/مایگریشن)، ابزارهای امنیتی (CSRF، XSS، مدیریت Session Timeout) و ماژول احراز هویت اشاره شده. همچنین ساختار پوشه‌ها (app/, config/, core/, public/, vendor/) مشخصه. خیلی خوبه 👏 (GitHub)

در ادامه چند نکته‌ی عملی برای جذب مشارکت، بیشتر کردن ستاره‌ها و محکم‌تر کردن پایه‌های فنی پروژه می‌گذارم:


۱) نکات امنیتی مهم (چک‌لیست سریع)

  • فایل .env: اگر عمداً نمونه گذاشتی، اسمش رو به .env.example تغییر بده و .env رو به .gitignore اضافه کن تا اطلاعات حساس لو نره. توی لیست فایل‌ها .env دیده می‌شه و بهتره نمونه‌ی امن منتشر بشه. (GitHub)
  • حداقل نسخه‌ی PHP: توی README نوشتی PHP 7.4 یا جدیدتر. چون 7.4 مدت‌هاست End-of-Life شده (امنیتی وصله نمی‌گیره)، پیشنهاد می‌کنم حداقل نسخه رو به ۸.۱ یا ۸.۲ ارتقا بدی. صفحه‌ی رسمی PHP وضعیت پشتیبانی نسخه‌ها رو نشان می‌دهد. (PHP)
  • هش پسورد: حتماً از password_hash()/password_verify() استفاده کن. اگر محیطت Argon2id رو پشتیبانی می‌کنه، گزینه‌ی امن‌تری نسبت به bcrypt محسوب می‌شه؛ اگر نه PASSWORD_DEFAULT کافی و آینده‌گراست. همچنین از password_needs_rehash() برای مهاجرت خودکار به الگوریتم بهتر استفاده کن. (PHP)
  • کوکی سشن امن:

    • HttpOnly و Secure (روی HTTPS)،
    • SameSite=Lax یا Strict با session_set_cookie_params() قبل از session_start(). (PHP)
  • CSRF: توکن‌ها را روی رویدادهای حساس بازتولید کن (مثلاً بعد از لاگین) و به صورت per-session یا per-form نگه دار؛ اعتبارسنجی فقط روی POST/PUT/DELETE انجام بشه.
  • XSS: صرفاً htmlspecialchars() بیشترِ سناریوهای HTML را پوشش می‌دهد، اما برای contextهای خاص (ویژگی‌های HTML، URL، JS inline) کافی نیست. یا یک موتور قالب با auto-escape استفاده کن یا توابع escape کانتکست-محور داشته باش.
  • Session fixation: بعد از لاگین/تغییر سطح دسترسی، session_regenerate_id(true) رو فراموش نکن.
  • Rate limiting روی لاگین (Backoff نمایی) + امکان 2FA در نقشه راه.

۲) بهبود تجربه‌ی توسعه (DX)

  • Composer و PSRها:

    • PSR-4 برای autoload و PSR-12 برای استایل کد را اعلام و رعایت کن (Badge هم بگذار). (php-fig.org)
    • CLI اختصاصی‌ات (saeedtnt) را به‌صورت binary در Composer ثبت کن تا بشه با نصب پروژه روی سیستم کاربر، مستقیم vendor/bin/saeedtnt اجراش کرد.
  • Routing و Middleware: نمونه‌هایی از Routeها (GET/POST، پارامترها، Middleware گروهی) در README قرار بده.
  • Error handling و صفحه‌ی خطای توسعه (trace زیبا) + لاگ PSR-3 (مثل Monolog).
  • Migrations: جدول tracking مایگریشن‌ها + تراکنش‌ها و امکان rollback (down).
  • DB Layer: PDO با prepared statement، Query Builder سبک یا ORM مینیمال.

۳) مستندسازی و مارکتینگ پروژه

  • README فعلی خوب شروع شده؛ برای جذب مخاطب بیشتر:

    • README فارسی (یا README.fa.md
    • GIF/اسکرین‌شات از اجرای CLI،
    • Badge‌ها (License/Build/Stars/PHP-versions/Coverage)،
    • Roadmap و لیبل‌های good first issue،
    • نمونه‌ی پروژه‌ی اسکلت (starter) که با یک دستور بالا بیاد.
  • بخش «شروع سریع» با سه فرمان اصلی (clone/نصب/serve) و «اولین Route/Controller» خیلی کمک می‌کنه.

نمونه‌ی کوتاه برای README.fa.md

# saeedtnt_framework (نسخه آزمایشی)

فریم‌ورک مینیمال PHP با CLI برای ساخت سریع Controller/Model/View/Migration و ابزارهای امنیتی (CSRF، مدیریت Session، فیلتر XSS) + Auth ساده.

## نصب سریع
```bash
git clone https://github.com/saeedtnt1234/saeedtnt_framework.git
cd saeedtnt_framework
cp .env.example .env  # تنظیم بر اساس دیتابیس خودتان
composer install
php -S localhost:8000 -t public

اولین Route

// core/routes.php
Route::get('/hello', [HelloController::class, 'index']);

ساخت کنترلر

php saeedtnt make:controller Hello

امنیت

  • CSRF روی تمام فرم‌های POST
  • کوکی سشن: HttpOnly + Secure + SameSite
  • هش پسورد: password_hash/password_verify

(در README اصلی‌ات هم به CLI، امنیت و پیش‌نیازها اشاره شده و ایده‌ی README فارسی می‌تونه در همون سبک تکمیل بشه.) :contentReference[oaicite:6]{index=6}

---

## ۴) نمونه‌ی `composer.json` پیشنهادی (خلاصه)
```json
{
  "name": "saeedtnt/saeedtnt-framework",
  "description": "Lightweight PHP microframework with CLI, Auth and migrations",
  "type": "library",
  "license": "MIT",
  "require": {
    "php": "^8.1",
    "ext-pdo": "*"
  },
  "require-dev": {
    "phpunit/phpunit": "^10.5",
    "phpstan/phpstan": "^1.11",
    "friendsofphp/php-cs-fixer": "^3.60"
  },
  "autoload": {
    "psr-4": {
      "SaeedTnt\\Framework\\": "core/"
    }
  },
  "bin": ["saeedtnt"]
}

۵) CI آماده (GitHub Actions)

فایل: .github/workflows/ci.yml

name: CI
on:
  push: { branches: ["main"] }
  pull_request: { branches: ["main"] }

jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: ["8.1", "8.2", "8.3"]
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          coverage: none
          extensions: pdo_mysql
      - run: composer install --prefer-dist --no-progress
      - run: vendor/bin/phpunit --colors=always
      - run: vendor/bin/phpstan analyse --no-progress
      - run: vendor/bin/php-cs-fixer fix --dry-run --diff

۶) سیاست امنیتی و انتشار

  • SECURITY.md: ایمیل اختصاصی برای گزارش باگ‌های امنیتی + بازه‌ی پاسخگویی.
  • CHANGELOG.md + نسخه‌گذاری SemVer + Releases (در حال حاضر هیچ ریلیزی ثبت نشده). (GitHub)

الگوی کوتاه برای SECURITY.md

# Security Policy
- Supported: latest minor of 0.x (dev)
- Report vulnerabilities to: security@yourdomain.tld
- Please avoid public issues for security; use email above.

۷) ریزه‌کاری‌های کاربردی

  • موضوعات (Topics) گیت‌هاب: php-framework, microframework, mvc, cli, migration, auth, security, csrf, xss, router …
  • پلتفرم نصب: اگر قصد داری از طریق Composer قابل نصب باشه، پکیج رو در Packagist منتشر کن.
  • نمونه خروجی CLI در README (عکس/GIF) باعث افزایش اعتماد و استار می‌شه.
  • مستندات چندزبانه: EN و FA کنار هم.

اگر دوست داشته باشی، می‌تونم یک Pull Request آماده شامل:

  • اضافه کردن .env.example و .gitignore,
  • README.fa.md,
  • ci.yml,
  • و یک نمونه‌ی Route/Controller
    برات آماده کنم تا مستقیم Merge کنی.

باز هم تبریک بابت شروع خیلی خوبت 🌟 و ممنون که پروژه‌ات رو به اشتراک گذاشتی.
(ارجاع: ویژگی‌ها و وضعیت فعلی ریپو/README، تعداد استار، پیش‌نیازها، ساختار پوشه‌ها از صفحه‌ی گیت‌هاب شما استخراج شده است؛ PHP 7.4 EOL از مستندات رسمی PHP؛ هش پسورد از راهنمای password_hash؛ و PSR-12 از PHP-FIG.) (GitHub, PHP, php-fig.org)


محمد سعید خداویسی
تخصص : برنامه نویس فول استک
@saeed123 2 هفته پیش مطرح شد
0

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


محمدطاهر غلامی
تخصص : برنامه نویس وب
@MohammadTaher.GH 1 هفته پیش مطرح شد
0

@yet4no
بابا ول کنین AI رو دیگه خب اگه بخوایم ازش استفاده کنیم کی حال داره بیاد اینجا؟ یا بره استک؟ یه متن ساده 1خطی بنویس چیه این؟ نیم ساعت اسکرول میخواد تا تموم شه


محمد سعید خداویسی
تخصص : برنامه نویس فول استک
@saeed123 1 هفته پیش مطرح شد
0

سلام عزیزم کسی داخل این پروژه از Ai استفاده نکرده شاید توی پروژه های وب بتونی از Ai استفاده بکنی ولی این یک فریم ورک هستش ممکنه هوش مصصنوعی طرح رو بدزده برای همین من خودم درستش کردم ودوست دارم حمایت بشم تا انرژی بگیرم و چیز های دیگه ای خلق کنم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام