| کانال توسعه‌دهندگان PHP |
1.66K subscribers
48 photos
1 video
60 links
⭕️ کانال توسعه‌دهندگان پی‌اچ‌پی (PHP) دولوپیکس

💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
🔥 پکیج: استاندارد 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
👍2
برنامه نویسی سوکت در PHP بخش اول

عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از سمت سرور به سمت کلاینت نیاز داریم که ابتدا یک درخواست به سمت سرور بدهیم تا بعد پاسخ را دریافت کنیم ولی در ارتباط سوکت می توان مستقیم از سرور به کلاینت ( یا کلاینت ها ) درخواست ارسال کنیم.

تصویر زیر نمونه یک ارتباط مانا میان یک کلاینت و یک سرور ( دو node در سوکت ) روی یک پورت می باشد. این ارتباط با ارسال یک پالس از سمت سرور به کلاینت شروع می شود و در ادامه پس از گذشت زمان دو پالس از سمت کلاینت به سرور می آید.

https://gnutec.net/socket-programming-in-php-part-1/

🔖 #PHP #پی_اچ_پی

👤 ابوالفضل

💎 Channel: @DevelopixPHP
👍2
ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ 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
🚀 ‏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
❤3
🔥 پکیج: قراردادهای ترجمه سیمفونی

اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق برنامه را به یک پیاده‌سازی مشخص ترجمه گره نزنید. پکیج Translation Contracts سیمفونی، قراردادهای مشترکی برای کار با ترجمه فراهم می‌کند تا وابستگی‌ها بر پایهٔ interface باشند، نه جزئیات اجرا.

برای کتابخانه‌هایی که باید با مترجم‌های مختلف سازگار بمانند، گزینهٔ قابل‌توجهی است. مستنداتش را در Packagist ببینید.

📥 دانلود: 802,393,817
⭐️ 2,585 علاقه‌مند

🔖 #PHP #پی_اچ_پی #PHP #Symfony #ترجمه

💎 @DevelopixPHP
👍2
این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟

🔖 #PHP #پی_اچ_پی

👤 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
👍2
محاسبهٔ پول بدون دردسر 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
🚀 اجرای ربات تلگرامی در لوکال‌هاست!

‏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
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🎊 پکیج‌های پرطرفدار 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
اوضاع به قدری وخیم است که آژانس امنیت ملی آمریکا، هشدار صادر کرده است!

🚨 فاجعه PHP2Shell؛ زنگ خطر برای زیرساخت‌های مبتنی بر PHP

یک رخنه امنیتی با شدت بالا در دنیای PHP خبرساز شده است. دو شناسه‌ای که در گزارش‌ها مطرح شده‌اند:

🔴 CVE-2026-109618
🔴 CVE-2026-109619

بر اساس اطلاعات اولیه، هر دو آسیب‌پذیری امتیاز ۹.۲ از ۱۰ گرفته‌اند و می‌توانند زمینه اجرای کد از راه دور (RCE) را فراهم کنند؛ قابلیتی که در صورت بهره‌برداری موفق، ممکن است کنترل بخش‌هایی از سرور را در اختیار مهاجم قرار دهد.

🌐 چه سیستم‌هایی باید بررسی شوند؟
زبان PHP در بخش بزرگی از وب استفاده می‌شود؛ از WordPress و Joomla گرفته تا Drupal، Magento و برنامه‌های اختصاصی. بنابراین، بررسی نسخه PHP و وضعیت امنیتی سرورها اهمیت زیادی دارد.
هنوز فهرست قطعی نسخه‌های آسیب‌پذیر به‌صورت رسمی تأیید نشده است. با این حال، نسخه‌های قدیمی‌تر نیز در گزارش‌های اولیه مطرح شده‌اند.

📅 انتشار اضطراری وصله برای ۲۱ اکتبر، ساعت ۱۴:۰۰ UTC برنامه‌ریزی شده بود؛ بنابراین، اکنون باید وضعیت انتشار و اطلاعیه‌های رسمی بررسی شود.

👤 @PyKadeh

💎 Channel: @DevelopixPHP
👍5
‏📰 هشدار PHP درباره نقصی دیگر با امکان اجرای کد از راه دور، تنها ۲ روز پس از رفع PHP2Shell

‏PHP از CVE-2026-115560 پرده برداشته است؛ نقصی جدید با احتمال اجرای کد از راه دور (RCE) که برنامه‌های وب با پیکربندی غیرمعمول نشست را تحت تأثیر قرار می‌دهد. این پروژه به‌جای انتشار وصله اضطراری، توصیه کرده است تا زمان ارائه اصلاحیه در نسخه عادی بعدی، session.upload_progress غیرفعال شود. این نقص از دو آسیب‌پذیری بحرانی PHP2Shell که در ۲۱ اکتبر وصله شدند، جداست. تاکنون گزارشی از بهره‌برداری منتشر نشده است؛ PHP نیز هنوز نسخه‌های آسیب‌پذیر یا امتیاز شدت آسیب‌پذیری را اعلام نکرده است.

🔖 #news

💎 @DevelopixPHP
‏📰 هشدار PHP درباره نقصی دیگر در اجرای کد از راه دور، تنها ۲ روز پس از رفع PHP2Shell

‏PHP آسیب‌پذیری CVE-2026-115560 را افشا کرده است؛ نقصی جدید با احتمال اجرای کد از راه دور (RCE) که برنامه‌های وب دارای پیکربندی نامعمول نشست را تحت تأثیر قرار می‌دهد. PHP به‌جای انتشار وصله اضطراری، توصیه کرده است تا زمان ارائه اصلاحیه در انتشار عادی بعدی، session.upload_progress غیرفعال شود. این نقص از دو آسیب‌پذیری بحرانی PHP2Shell که در ۲۱ اکتبر وصله شدند، جداست. تاکنون گزارشی از بهره‌برداری از آن منتشر نشده است. PHP نیز هنوز نسخه‌های آسیب‌پذیر یا امتیاز شدت آن را اعلام نکرده است.

🔖 #news

💎 @DevelopixPHP
حلقه تموم شده، ولی ارجاع هنوز زنده‌ست!

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

توی کد اول، خروجی به‌جای [10,20,30] می‌شه [10,20,20].

با unset($value) بلافاصله بعد از حلقه اول، این اتصال رو قطع کن. این کار عضو آرایه رو حذف نمی‌کنه؛ فقط متغیرِ ارجاع‌دهنده رو از بین می‌بره.

🔖 #PHP #پی_اچ_پی

👤 Developix

💎 Channel: @DevelopixPHP
👍1