| کانال توسعهدهندگان PHP |
Open in Telegram
⭕️ کانال توسعهدهندگان پیاچپی (PHP) دولوپیکس 💠 دولوپیکس | جامعه توسعهدهندگان ایرانی 💎 @Developix 🚀 Developix.ir 📌 پشتیبانی و تبلیغات: @DevelopixSupport
Show more1 657
Subscribers
No data24 hours
-57 days
-1430 days
Posts Archive
+1
حلقه تموم شده، ولی ارجاع هنوز زندهست!
وقتی توی
foreach با ارجاع روی آرایه میچرخی، متغیر حلقه بعد از پایانش همچنان به آخرین عضو وصله. اگه توی حلقه بعدی همون متغیر رو استفاده کنی، هر بار داری آخرین عضو آرایه رو هم بازنویسی میکنی؛ حتی اگه حلقه دوم بدون ارجاع باشه!
توی کد اول، خروجی بهجای [10,20,30] میشه [10,20,20].
با unset($value) بلافاصله بعد از حلقه اول، این اتصال رو قطع کن. این کار عضو آرایه رو حذف نمیکنه؛ فقط متغیرِ ارجاعدهنده رو از بین میبره.
🔖 #PHP #پی_اچ_پی
👤 Developix
💎 Channel: @DevelopixPHP📰 هشدار PHP درباره نقصی دیگر در اجرای کد از راه دور، تنها ۲ روز پس از رفع PHP2Shell
PHP آسیبپذیری CVE-2026-115560 را افشا کرده است؛ نقصی جدید با احتمال اجرای کد از راه دور (RCE) که برنامههای وب دارای پیکربندی نامعمول نشست را تحت تأثیر قرار میدهد. PHP بهجای انتشار وصله اضطراری، توصیه کرده است تا زمان ارائه اصلاحیه در انتشار عادی بعدی، session.upload_progress غیرفعال شود. این نقص از دو آسیبپذیری بحرانی PHP2Shell که در ۲۱ اکتبر وصله شدند، جداست. تاکنون گزارشی از بهرهبرداری از آن منتشر نشده است. PHP نیز هنوز نسخههای آسیبپذیر یا امتیاز شدت آن را اعلام نکرده است.
🔖 #news
💎 @DevelopixPHP
📰 هشدار PHP درباره نقصی دیگر با امکان اجرای کد از راه دور، تنها ۲ روز پس از رفع PHP2Shell
PHP از CVE-2026-115560 پرده برداشته است؛ نقصی جدید با احتمال اجرای کد از راه دور (RCE) که برنامههای وب با پیکربندی غیرمعمول نشست را تحت تأثیر قرار میدهد. این پروژه بهجای انتشار وصله اضطراری، توصیه کرده است تا زمان ارائه اصلاحیه در نسخه عادی بعدی، session.upload_progress غیرفعال شود. این نقص از دو آسیبپذیری بحرانی PHP2Shell که در ۲۱ اکتبر وصله شدند، جداست. تاکنون گزارشی از بهرهبرداری منتشر نشده است؛ PHP نیز هنوز نسخههای آسیبپذیر یا امتیاز شدت آسیبپذیری را اعلام نکرده است.
🔖 #news
💎 @DevelopixPHP
اوضاع به قدری وخیم است که آژانس امنیت ملی آمریکا، هشدار صادر کرده است!
🚨 فاجعه PHP2Shell؛ زنگ خطر برای زیرساختهای مبتنی بر PHP
یک رخنه امنیتی با شدت بالا در دنیای PHP خبرساز شده است. دو شناسهای که در گزارشها مطرح شدهاند:
🔴
CVE-2026-109618
🔴 CVE-2026-109619
بر اساس اطلاعات اولیه، هر دو آسیبپذیری امتیاز ۹.۲ از ۱۰ گرفتهاند و میتوانند زمینه اجرای کد از راه دور (RCE) را فراهم کنند؛ قابلیتی که در صورت بهرهبرداری موفق، ممکن است کنترل بخشهایی از سرور را در اختیار مهاجم قرار دهد.
🌐 چه سیستمهایی باید بررسی شوند؟
زبان PHP در بخش بزرگی از وب استفاده میشود؛ از WordPress و Joomla گرفته تا Drupal، Magento و برنامههای اختصاصی. بنابراین، بررسی نسخه PHP و وضعیت امنیتی سرورها اهمیت زیادی دارد.
هنوز فهرست قطعی نسخههای آسیبپذیر بهصورت رسمی تأیید نشده است. با این حال، نسخههای قدیمیتر نیز در گزارشهای اولیه مطرح شدهاند.
📅 انتشار اضطراری وصله برای ۲۱ اکتبر، ساعت ۱۴:۰۰ UTC برنامهریزی شده بود؛ بنابراین، اکنون باید وضعیت انتشار و اطلاعیههای رسمی بررسی شود.
👤 @PyKadeh
💎 Channel: @DevelopixPHPRepost from فارسی UltraGPT | هوش مصنوعی و آموزش
🎊 پکیجهای پرطرفدار UltraGPT
🎁با پکیجهای ۶۰ روزه UltraGPT به ۳۳ مدل هوش مصنوعی از طریق API دسترسی داشته باشید و در بستههای مشمول، دو برابر اعتبار بیشتر دریافت کنید!
✨ امکانات:
✅ استفاده از مدلها در Claude Code، Codex و نرمافزارهای محبوب دیگر
✅ امکان دریافت بونس با همراهی و استفاده از سرویس
✅ امکان تست رایگان پیش از خرید
⌛ نمونهای از مدلهای موجود:
🤖 Fable 5.1 claude-opus-5.5 claude-sonnet-5.5 🤖 gemini-3.8-flash 🤖 gpt-6.1-sol gpt-6-astra 🤖 grok-4.7 و مدلهای دیگر… 🎁 برای تست سرویس و دریافت API رایگان ۲ دلاری، به پشتیبانی پیام دهید.( امکان تست تمام نسخه ها) ⚙️ مشاهدهی جزئیات و پکیجها ا🔤 پشتیبانی و فروش: @UltraGPT_SU ⏺الترا جی پی تی فارسی را دنبال کنید : @UltraGPTiran
Repost from N/a
🚀 اجرای ربات تلگرامی در لوکالهاست!
LaraGram API Server یک پیادهسازی از Telegram Bot API Server با زبان PHP و مبتنی بر LaraGram MTProto است که امکان اجرای سرور اختصاصی Bot API تلگرام را بدون نیاز به بیلد کردن نسخه رسمی telegram-bot-api و وابستگی به سرویسهای تونلسازی مانند ngrok فراهم میکند.
⚙️ معماری و نحوه عملکرد
این پروژه با استفاده از پروتکل MTProto و ایجاد یک لایهی سازگار با Telegram Bot API، درخواستهای استاندارد رباتهای تلگرامی را پردازش میکند.
LaraGram API Server بهعنوان یک جایگزین سازگار با سرور رسمی Telegram Bot API طراحی شده است؛ بنابراین، رابط HTTP، ساختار پاسخها، پیامهای خطا و متدهای Bot API را پشتیبانی میکند و میتواند بدون وابستگی به فریمورک LaraGram، در کنار کتابخانههای رباتنویسی در زبانهای مختلف مورد استفاده قرار بگیرد.
✨ قابلیتهای کلیدی
سازگاری با Bot API رسمی: پشتیبانی از تمام متدهای Telegram Bot API و سازگاری با ابزارها و کتابخانههای موجود.
بدون نیاز به بیلد دستی: نصب مستقیم از طریق Composer، بدون نیاز به کامپایل سورس کد سرور رسمی تلگرام.
اجرای مستقل و لوکال: امکان اجرای سرور روی لوکالهاست یا زیرساخت اختصاصی.
پشتیبانی از Local Mode: امکان آپلود فایل تا حجم ۲۰۰۰ مگابایت، دانلود فایل بدون محدودیت حجم و استفاده از مسیر محلی فایلها.
پشتیبانی از Webhook: امکان استفاده از IP و پورت دلخواه برای دریافت آپدیتها و پیکربندی اتصالات Webhook.
مدیریت و مانیتورینگ: پشتیبانی از گزارشگیری، ثبت لاگ و مشاهده آمار درخواستها، آپدیتها و مصرف منابع.
آماده برای محیط Production: قابلیت اجرا بهصورت سرویس پایدار با ابزارهایی مانند systemd.
📦 نصب و راهاندازی
پیشنیازهای اصلی شامل PHP 8.3 یا بالاتر، افزونه Swoole و افزونههای JSON و Mbstring است.
نصب سراسری پکیج تنها با اجرای دستور زیر انجام میشود:
composer global require laraxgram/apiserverپس از دریافت api_id و api_hash از پنل توسعهدهندگان تلگرام، میتوانید سرور را اجرا کنید:
laragram-server --api-id=YOUR_API_ID --api-hash=YOUR_API_HASH --local
همچنین امکان نصب پکیج بهصورت وابستگی پروژه و استفاده مستقیم از آن در اکوسیستم LaraGram وجود دارد.
📚 مستندات و راهنمای کامل
برای مشاهده پیشنیازها، تنظیمات، گزینههای اجرایی، نحوه استفاده در LaraGram، مدیریت فایلها و راهاندازی Production، مستندات رسمی پروژه را مطالعه کنید:
🔗 https://laraxgram.github.io/v4/apiserver
و در نهایت با استار دادن به گیتهاب پروژه و معرفی به دیگران از اون حمایت کنید:
🔗 https://github.com/laraXgram/APIServer
@LaraXGram
@LaraGramChatFa
🔖 #TelegramBot #ربات #تلگرام
💎 Channel: @DevelopixRobotمحاسبهٔ پول بدون دردسر float 💰
اگر در PHP جمع قیمتها گاهی اعشار عجیب تولید میکند، مشکل از نمایش دودویی اعداد در
float است. کتابخانهٔ Brick Math برای محاسبات عددی با دقت دلخواه ساخته شده؛ مناسب قیمت، مالیات و محاسبات حساس.
📌 با BigDecimal اعشار را دقیق نگه میداری، با BigInteger محدودیت اندازهٔ عدد صحیح را کنار میزنی و هنگام تقسیم، روش گرد کردن را صریح انتخاب میکنی. اشیای عددی هم immutable هستند؛ عملیات، مقدار قبلی را تغییر نمیدهد.
نصب با Composer:
composer require brick/mathنمونه در PHP:
<?php
require 'vendor/autoload.php';
use Brick\Math\BigDecimal;
$total = BigDecimal::of('0.1')
->plus('0.2');
echo $total; // 0.3
💡 ورودی اعشاری را رشته بده؛ تبدیل یک float خطادار به BigDecimal، دقت ازدسترفته را برنمیگرداند.
کد و مستندات رسمی
برای شروع، محاسبهٔ جمع سبد خرید را با آن پیاده کن. 🛠️
🔖 #PHP #پی_اچ_پی #PHP #BrickMath #BigDecimal #Precision
👤 Developix
💎 Channel: @DevelopixPHPافزونه CURL در PHP
برای ایجاد یک درخواست راه های متفاوتی وجود دارد. اگر درخواست از نوع GET باشد راه های ساده تری نظیر تابع file_get_content و یا افزونه DOM می باشد. برای ارسال درخواست از انواع دیگر متد ها مثل POST می توان از افزونه CURL استفاده کرد.
فرم ها نیز ابزارهایی جهت ارسال درخواست با پارامتر های خاص ( فیلد های فرم ) به یک آدرس خاص ( پارامتر action ) و با یک متد خاص ( پارامتر method ) می باشد. در حقیقت وقتی یک فرم را ارسال می کنیم از طریق متد ( method ) به یک url خاص ( action ) یک درخواست ارسال می کنیم. در این درخواست یک سری داده را نیز ارسال می کنیم ( همان مقادیر فیلد های فرم ) . در نوع درخواست به وسیله فرم کاربر نیز همراه با درخواست به وب سرویس می رود. سرعت پاسخ در curl نیز بسیار بالاتر از تابع file_get_content می باشد.
https://gnutec.net/curl-function-php/
🔖 #PHP #پی_اچ_پی
👤 ابوالفضل
💎 Channel: @DevelopixPHP
این کد موقع اجرا چه خروجیای میده و مشکلش کجاست؟
🔖 #PHP #پی_اچ_پی
👤 Developix
💎 Channel: @DevelopixPHP
🔥 پکیج: قراردادهای ترجمه سیمفونی
اگر کد PHP را برای چندزبانگی مینویسید، بهتر است منطق برنامه را به یک پیادهسازی مشخص ترجمه گره نزنید. پکیج
Translation Contracts سیمفونی، قراردادهای مشترکی برای کار با ترجمه فراهم میکند تا وابستگیها بر پایهٔ interface باشند، نه جزئیات اجرا.
برای کتابخانههایی که باید با مترجمهای مختلف سازگار بمانند، گزینهٔ قابلتوجهی است. مستنداتش را در Packagist ببینید.
📥 دانلود: 802,393,817
⭐️ 2,585 علاقهمند
🔖 #PHP #پی_اچ_پی #PHP #Symfony #ترجمه
💎 @DevelopixPHPRepost from N/a
🚀 LaraGram Brain منتشر شد!
از این به بعد برای ساخت رباتهای تلگرام با فریمورک LaraGram، لازم نیست حتماً خودتون دست به کد بشید؛ یا حتی با توسعه ربات تلگرامی آشنا باشید!
کافیه ایده و توضیحات پروژهای که میخواید رو به یک ایجنت هوشمصنوعی بدید و باقی کار رو به خودش بسپارید. 🤖
LaraGram Brain یک MCP Server برای فریمورک LaraGram هست که مجموعهای از ابزارها و اسکیلها رو در اختیار ایجنتهای هوشمصنوعی قرار میده تا بتونن پروژه رو بهتر بشناسن، پیادهسازی کنن، تست بگیرن و حتی مشکلاتش رو بررسی کنن.
از جمله امکاناتش:
• اجرای متدهای تلگرام در محیط Sandbox بدون ارسال واقعی
• دسترسی به Schema و مستندات Telegram
• بررسی ساختار و Queryهای دیتابیس
• مشاهده Logهای برنامه
• جستوجو در مستندات LaraGram
• Skillهای مربوط به Bot، MTProto، TMA و Web Pages
فرقی نمیکنه پروژهتون یه ربات ساده باشه یا یک پروژه پیچیده با MTProto و TMA؛ توضیحاتش رو به ایجنت بدید و اجازه بدید کار رو خودش انجام بده.
لینک پروژهها:
🧩 LaraGram
🧩 Brain
🔖 #TelegramBot #ربات #تلگرام
💎 Channel: @DevelopixRobot
ارسال ایمیل تأیید ثبتنام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه PHP جدی لازم میشود. اینجا با هم یک ماژول ساده و تمیز با PHPMailer میسازیم که هم امن باشد، هم قابلگسترش. 😉
منبع اصلیای که ایدهها ازش گرفته شده، داکیومنت رسمی و مثالهای PHPMailer در گیتهاب است؛ حتماً ارزش یک نگاه عمیقتر را دارد. 🔍
۱️⃣ نصب PHPMailer با Composer
اول مطمئن شو روی سرور یا سیستم لوکال، Composer نصب است. بعد داخل رoot پروژه این دستور را بزن:
composer require phpmailer/phpmailer
حالا پوشه vendor ساخته میشود و میتوانی از Autoload استفاده کنی.
۲️⃣ ساخت یک کلاس EmailService تمیز
بهجای اینکه هرجا لازم شد مستقیم شیء PHPMailer بسازی، بهتر است یک کلاس سرویس داشته باشی تا کانفیگ SMTP فقط یکجا باشد و بعداً راحت عوض شود (مثلاً وقتی از Gmail رفتی روی Mailgun یا SMTP هاست).
یک فایل مثل EmailService.php بساز و ساختار را شبیه مثال زیر نگه دار 👇
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require __DIR__ . '/vendor/autoload.php';
class EmailService
{
private PHPMailer $mailer;
public function __construct()
{
$this->mailer = new PHPMailer(true);
// تنظیمات پایه SMTP
$this->mailer->isSMTP();
$this->mailer->Host = 'smtp.gmail.com';
$this->mailer->SMTPAuth = true;
$this->mailer->Username = 'your-email@gmail.com';
$this->mailer->Password = 'app-password-here';
$this->mailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$this->mailer->Port = 587;
$this->mailer->setFrom('no-reply@yourapp.test', 'Your App');
$this->mailer->isHTML(true);
$this->mailer->CharSet = 'UTF-8';
}
public function send(string $to, string $subject, string $htmlBody): bool
{
try {
$this->mailer->clearAllRecipients();
$this->mailer->addAddress($to);
$this->mailer->Subject = $subject;
$this->mailer->Body = $htmlBody;
return $this->mailer->send();
} catch (Exception $e) {
error_log('Mail error: ' . $e->getMessage());
return false;
}
}
}
🔐 نکته مهم: برای Gmail باید از App Password استفاده کنی (نه پسورد عادی اکانت). راهنماش توی صفحه رسمی گوگل موجود است و بدون این کار معمولاً اتصال SMTP بلاک میشود.
۳️⃣ استفاده در سناریوی واقعی
مثلاً بعد از ثبتنام، یک لینک فعالسازی بفرست:
$emailService = new EmailService();
$activationLink = 'https://yourapp.test/activate?token=' . urlencode($token);
$html = "سلام {$userName}!<br>برای فعالسازی حسابت روی لینک زیر کلیک کن:<br><a href='{$activationLink}'>فعالسازی حساب";
$emailService->send($userEmail, 'فعالسازی حساب کاربری', $html);
🧩 چند نکته تجربی کوتاه:
- لاگ ارور را حتماً جایی ذخیره کن تا اگر روی سرور ایمیل نرسید، راحتتر دیباگ شود.
- محتوا را هم HTML نگه دار، هم یک نسخه متن ساده برای سازگاری بهتر با بعضی کلاینتها (قابلیت AltBody در PHPMailer).
- اطلاعات SMTP و پسوردها را داخل فایل env. نگه دار، نه مستقیم داخل کلاس.
در هر پروژه جدید، داشتن یک EmailService آماده کلی زمان ذخیره میکند. اگر این ساختار را کمی برای خودت شخصیسازی کنی، عملاً یک ماژول ایمیل قابلاستفاده مجدد برای تمام پروژههای PHP خواهی داشت. 🚀
🔖 #PHP #پی_اچ_پی #PHP #PHPMailer #Email #SMTP #Backend #Security
👤 Developix
💎 Channel: @DevelopixPHP
برنامه نویسی سوکت در PHP بخش اول
عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از سمت سرور به سمت کلاینت نیاز داریم که ابتدا یک درخواست به سمت سرور بدهیم تا بعد پاسخ را دریافت کنیم ولی در ارتباط سوکت می توان مستقیم از سرور به کلاینت ( یا کلاینت ها ) درخواست ارسال کنیم.
تصویر زیر نمونه یک ارتباط مانا میان یک کلاینت و یک سرور ( دو node در سوکت ) روی یک پورت می باشد. این ارتباط با ارسال یک پالس از سمت سرور به کلاینت شروع می شود و در ادامه پس از گذشت زمان دو پالس از سمت کلاینت به سرور می آید.
https://gnutec.net/socket-programming-in-php-part-1/
🔖 #PHP #پی_اچ_پی
👤 ابوالفضل
💎 Channel: @DevelopixPHP
🔥 پکیج: استاندارد PSR-11 برای Container
استاندارد PSR-11 فقط یه interface مشترک برای Containerهاست؛ خودش DI Container نیست، ولی باعث میشود بین فریمورکها و کتابخانهها راحتتر سوییچ کنی ✅
هر کتابخانهای که از PSR-11 پیروی کند، فقط با یک type-hint ساده مثل
Psr\Container\ContainerInterface با هر Container سازگار میشود.
برای جزئیات بیشتر، خود استاندارد را اینجا ببین:
لینک PSR Container
📥 دانلود: 1,102,739,550
⭐️ 10,032 علاقهمند
🔖 #PHP #پی_اچ_پی #PHP #PSR_11 #Container
💎 @DevelopixPHPیک قطعهکد زیر را در نظر بگیرید (زبان: PHP). تمرکز روی رفتار generator و ارجاعها است.
بهنظر شما خروجی اجرای این اسکریپت چیست؟
خروجی را دقیقاً همانطور که در ترمینال چاپ میشود (با ترتیب و جداکنندهها) حدس بزنید.
🔖 #PHP #پی_اچ_پی
👤 Developix
💎 Channel: @DevelopixPHP
+1
✴️ جستوجوی تکراری روی آرایه بزرگ توی حلقه
توی قطعهکد اول هر بار داخل حلقه
array_search صدا زده شده؛ یعنی اگه ۱۰هزار تا یوزر داشته باشی و لیست بلاکها هم بزرگ باشه، عملاً میزنی دیتای خودت رو با دست خودت دیداس میکنی 😅
توی نسخهٔ دوم، اول یه lookup table میسازیم و بعد توی حلقه فقط روی یه isset ساده چک میکنیم؛ هم خواناتر میشه هم از نظر Time Complexity از O(n×m) میآد پایین به O(n+m) و فشار روی CPU بهشدت کمتر میشه.
اگر قراره داخل حلقه روی آرایه بزرگ سرچ کنی، قبلش ساختار دادهات رو برای lookup بهینه کن؛ معمولاً یه array_flip یا یه array_fill_keys درستحسابی، نصف bottleneck رو جمع میکنه.
🔖 #PHP #پی_اچ_پی
👤 Developix
💎 Channel: @DevelopixPHPساخت فرم لاگین امن با PHP با استفاده از password_hash 🔐
خیلی از پروژههای PHP هنوز از md5 یا sha1 برای ذخیره پسورد استفاده میکنن و این یعنی دردسر امنیتی 😅
بیایم یه لاگین ساده ولی استاندارد بسازیم که روی password_hash و password_verify سوار باشه؛ همون چیزی که توی داک رسمی PHP هم پیشنهاد شده:
php.net/manual/en/function.password-hash.php
ایده کلی اینه:
• سمت دیتابیس فقط hash پسورد ذخیره میشه، نه خود پسورد.
• برای ساخت یوزر جدید از password_hash استفاده میکنیم.
• برای لاگین از password_verify کمک میگیریم.
• بعد از لاگین موفق، یه session امن راه میندازیم.
این یه مثال خیلی مینیمال و قابلاستفاده توی پروژههای کوچیکه 👇
<?php
// config.php
$pdo = new PDO(
'mysql:host=localhost;dbname=test;charset=utf8mb4',
'db_user',
'db_pass',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
// register.php - ساخت یوزر جدید
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = $_POST['email'] ?? '';
$password = $_POST['password'] ?? '';
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
exit('ایمیل نامعتبر است');
}
if (strlen($password) < 8) {
exit('پسورد باید حداقل 8 کاراکتر باشد');
}
$hash = password_hash($password, PASSWORD_DEFAULT);
$stmt = $pdo->prepare('INSERT INTO users (email, password_hash) VALUES (:email, :hash)');
$stmt->execute([
':email' => $email,
':hash' => $hash,
]);
echo 'ثبتنام با موفقیت انجام شد ✅';
}
// login.php - لاگین یوزر
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$email = $_POST['email'] ?? '';
$password = $_POST['password'] ?? '';
$stmt = $pdo->prepare('SELECT id, password_hash FROM users WHERE email = :email');
$stmt->execute([':email' => $email]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$user || !password_verify($password, $user['password_hash'])) {
exit('ایمیل یا پسورد اشتباه است');
}
session_regenerate_id(true);
$_SESSION['user_id'] = $user['id'];
echo 'خوش اومدی! 🎉';
}
نکتهها و ترفندهای کوچیک ولی مهم:
• الگوریتم داخلی PASSWORD_DEFAULT ممکنه در آینده عوض بشه، ولی همون برای اکثر سناریوها عالیه.
• با password_needs_rehash میتونی موقع لاگین، hashهای قدیمی رو خودکار به نسخهی جدیدتر migrate کنی (مثلاً وقتی cost رو عوض کردی).
• حتماً روی ستون پسورد توی دیتابیس حداقل طول 255 بگذار تا با تغییر الگوریتمهای آینده مشکل نداشته باشی.
• از PDO prepared statement استفاده کن که جلوی SQL Injection رو بگیره، مثل همین نمونه.
• بعد لاگین، session_regenerate_id رو فراموش نکن تا Session Fixation اتفاق نیفته.
این الگو پایهی خیلی از سیستمهای auth امروزی توی PHP ـه و راحت میشه بعداً روش چیزهایی مثل remember me، محدودیت تلاش لاگین، و لاگ آدیت اضافه کرد.
امتحانش کن روی یه پروژه کوچیک، اگر جواب داد همون رو تمیزتر کن و بذار توی پروژههای اصلیات 💻
🔖 #PHP #پی_اچ_پی #PHP #Authentication #Security #Password_Hashing #Login #PDO
👤 Developix
💎 Channel: @DevelopixPHPبا Migration Boost هاستایران، برای مهاجرت به سرور ابری دوباره هزینه ترافیک نده! 🚀
با خرید اولین سرور ابری غیرساعتی از **هاستایران**، بسته ترافیک هدیه مهاجرت بهصورت خودکار برای سرویس شما فعال میشود:
✅ حداقل ۱۰۰ گیگابایت ترافیک هدیه مهاجرت
✅ افزایش حجم هدیه متناسب با ظرفیت دیسک اولیه
✅ ترافیک آپلود رایگان
✅ بدون محدودیت زمانی
سرور ابری هاستایران را راهاندازی کنید و بکاپها، فایلها و پایگاه داده خود را بدون دغدغه هزینههای پنهان ترافیک منتقل کنید.
👇 مشاهده پلنهای سرور ابری هاستایران
hostiran.club/Migration
hostiran.club/Migration
Repost from N/a
🧩 ورژن 4 فریمورک LaraGram منتشر شد.
یکی از مهمترین قابلیتهای LaraGram 4، معرفی پکیج MTProto است؛ پکیجی که با هدف سادهسازی توسعه پروژههای مبتنی بر Telegram MTProto API طراحی شده است.
توسعه با MTProto معمولاً با چالشهایی مانند مدیریت Session، احراز هویت، نگهداری اتصال، دریافت Updateها، مدیریت Flood Wait و پیکربندیهای پیچیده همراه است. در LaraGram تلاش شده تمام این پیچیدگیها از مسیر توسعهدهنده حذف شود تا تجربهای مشابه توسعه یک ربات معمولی، اما با قدرت کامل MTProto داشته باشید.
⚡️ شروع کار بدون دردسر با LaraGram Installer
برای اینکه حتی مرحله راهاندازی هم ساده باشد، LaraGram Installer تمام مراحل اولیه را برای شما انجام میدهد.
با استفاده از Installer، فرآیندهایی مانند:
- نصب LaraGram
- نصب و آمادهسازی پکیج MTProto
- انجام کانفیگهای اولیه
- آمادهسازی ساختار پروژه
به صورت خودکار انجام میشود.
بعد از نصب، کافی است Handlerهای موردنظر خود را تعریف کنید و منطق برنامه را بنویسید؛ بخش زیادی از کارهای مربوط به زیرساخت، اتصال و مدیریت سرویس توسط خود LaraGram انجام خواهد شد.
⚡️ قدرت گرفته از Surge و Swoole/OpenSwoole
MTProto در LaraGram بر پایه Surge و Swoole/OpenSwoole توسعه داده شده است؛ یعنی به جای اجرای سنتی PHP، از یک Runtime دائمی و Event-Driven استفاده میکند.
این معماری باعث میشود MTProto بتواند برای ارتباطهای دائمی و پروژههای Real-Time عملکرد بسیار بهتری داشته باشد:
🚀 پردازش سریعتر Updateها
🔄 مدیریت همزمان اتصالها
💾 مصرف بهینهتر منابع
⚡️ حذف سربار اجرای مجدد برنامه
📈 آمادگی برای پروژههای بزرگ و پرترافیک
🧠 تمام امکانات MTProto، آماده استفاده
در MTProto LaraGram بسیاری از قابلیتهایی که معمولاً نیاز به پیادهسازی دستی دارند، به صورت داخلی فراهم شدهاند، به عنوان مثال شبیه سازی رفتار انسان، یا اعمال لیمیتهای خودکار به صورت هوشمند.
در نتیجه، توسعهدهنده به جای درگیر شدن با جزئیات سطح پایین، روی ساخت قابلیتهای اصلی پروژه تمرکز میکند.
نکته: به دلیل استفاده از Swoole/OpenSwoole، پکیج MTProto روی هاستهای اشتراکی قابل اجرا نیست و برای استفاده از آن به یک VPS نیاز خواهید داشت.🌐 MTProto + Web Routing؛ ساخت Telegram Client تحت وب یکی از جذابترین بخشهای LaraGram 4، ترکیب MTProto با Web Framework جدید LaraGram است. ترکیب این قابلیتها با MTProto به شما اجازه میدهد یک Telegram Web Client اختصاصی توسعه دهید؛ جایی که رابط کاربری از طریق سیستم وب LaraGram ساخته میشود و ارتباط مستقیم با تلگرام از طریق MTProto انجام میشود. یعنی با یک اکوسیستم واحد میتوانید: Backend وب را مدیریت کنید با Telegram API ارتباط داشته باشید حسابهای کاربری را مدیریت کنید کلاینتها و سرویسهای اختصاصی تلگرامی بسازید این تنها یکی از قابلیت های LaraGram است، پکیج Luna، یکی دیگر از آپدیتهای بزرگ LaraGram برای توسعه مینیاپ ها با React/Vue/Svelte بدون درگیری با API نویسی، SPAs، یا InitData تلگرام است. همچنین پکیجهایی برای توسعه با AI، ماینتورینگ ربات و... در حال توسعه هستند. نسخه 4 آغاز مسیر جدید LaraGram است؛ مسیری که این پروژه را از یک فریمورک ربات، به بستری کامل برای توسعه سرویسها، کلاینتها و اپلیکیشنهای مبتنی بر تلگرام تبدیل میکند. 📚 مستندات کامل: https://laraxgram.github.io ⭐️ اگر LaraGram برای شما مفید است، خوشحال میشویم با معرفی پروژه و دادن Star در GitHub از توسعه آن حمایت کنید: 🔹 گیتهاب LaraGram 🔹 گیتهاب MTProto 🔹 گیتهاب Luna
اگه برای هر صفحهی پروژهی PHP خودت یه فایل جدا مثل
about.php، contact.php و ... میسازی، کمکم همهچی شلوغ و سختقابلمدیریت میشه. یه Router ساده میتونه کل مسیرها رو تمیز و قابلگسترش کنه، حتی بدون استفاده از فریمورکی مثل Laravel 👌
این پست بر اساس ایدهها و الگوی PSR-7 و نمونههای سادهای مثل klein.php یه روتر سبک رو نشون میده که به راحتی تو هر پروژه PHP 8 میتونی استفادهاش کنی.
ایدهی اصلی چیه؟
✅ همهی request ها از یه index.php رد بشن (Front Controller)
✅ بر اساس REQUEST_METHOD و REQUEST_URI، تابع یا Controller مناسب صدا زده بشه
✅ کدهای صفحهها بهجای پخش شدن، در توابع/کلاسها باشن
ساخت یک Router خیلی ساده
تو public روت پروژه، یه index.php بساز و کد زیر رو بذار:
<?php
declare(strict_types=1);
$routes = [
'GET' => [
'/' => function () {
echo 'Home Page';
},
'/about' => function () {
echo 'About Page';
},
],
'POST' => [
'/contact' => function () {
echo 'Form submitted';
},
],
];
$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
$uri = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH);
if (isset($routes[$method][$uri])) {
$handler = $routes[$method][$uri];
$handler();
} else {
http_response_code(404);
echo '404 Not Found';
}
الان وقتی بری به / یا /about یا با POST بری به /contact، روترت دقیقا میدونه چی رو اجرا کنه 🙌
یه کم تمیزتر با کلاس
میتونی روتر رو تو یه کلاس بذاری (مثلا src/Router.php) و با composer و autoload استفادهاش کنی. نمونهی خیلی شبیه به این ساختار رو تو پروژههای کوچیک GitHub مثل "simple-php-router" راحت پیدا میکنی و میتونی ایده بگیری.
چرا این کار مفیده؟
• اضافه کردن route جدید فقط با یه خط تو آرایه انجام میشه 🔧
• بعدا میتونی middleware، auth، یا JSON API رو راحت اضافه کنی
• قدم اولیه برای مهاجرت به معماری تمیزتر و نزدیکتر به استانداردهایی مثل PSR هست
امتحانش کن، یه پروژه کوچیک بساز و چند تا route تعریف کن. اگه برات مفید بود، برای بقیهی PHP dev ها هم بفرست تا اونها هم از این ساختار تمیزتر لذت ببرن 👨💻👩💻
🔖 #PHP #پی_اچ_پی #PHP #Routing #Web #Backend #Modern_PHP #PSR
👤 Developix
💎 Channel: @DevelopixPHP