TGViewer
| کانال توسعه‌دهندگان PHP | | کانال توسعه‌دهندگان PHP | @developixphp · 1.68K subscribers
Post #81 906
امنیت ورودی‌ها همیشه نقطه‌ضعف اپلیکیشن‌هاست. استفاده از prepared statements در PDO یک راهکار ساده و مؤثر برای جلوگیری از SQL Injection است.

ایدهٔ اصلی (مختصر)
با آماده‌سازی کوئری و جدا کردن داده‌ها از ساختار SQL، هر ورودی به‌عنوان داده تفسیر می‌شود نه دستور SQL. در نتیجه حتی ورودی‌های مخرب اجرا نخواهند شد.

مثال شفاف
در این مثال یک اتصال PDO امن و نمونهٔ استفاده از پارامترهای نام‌دار را می‌بینید. دقت کنید که PDO::ERRMODE_EXCEPTION روشن است تا خطاها واضح باشند.

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'user', 'pass');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// INSERT امن با پارامتر نام‌دار
$stmt = $pdo->prepare('INSERT INTO users (email, name) VALUES (:email, :name)');
$stmt->execute([':email' => $email, ':name' => $name]);

// استفادهٔ مجدد برای SELECT
$select = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$select->execute([':email' => $email]);
$user = $select->fetch(PDO::FETCH_ASSOC);
?>


نکات عملی و خطاهای رایج
- هرگز ورودی‌ها را با string concatenation داخل کوئری قرار ندهید.
- از bindValue یا آرایهٔ execute برای ارسال پارامترها استفاده کنید.
- نوع داده را در صورت نیاز explicit کنید (مثلاً PDO::PARAM_INT).
- اتصال با charset=utf8mb4 و ERRMODE_EXCEPTION را فراموش نکنید.

اگر تجربه‌ای در مهاجرت از mysql_* یا mysqli به PDO دارید یا سوالی هست، خوشحال می‌شم بشنوم و بحث کنیم.

منبع: مستندات رسمی PHP — PDO Prepared Statements

🔖 #PHP #پی_اچ_پی #php #pdo #security #sql_injection #prepared_statements

👤 Developix

💎 Channel: @DevelopixPHP
  • 👍 1
More from @developixphp
  1. Sep 26, 2026این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟ 🔖 #PHP #پی_اچ_پی 👤 Developix 💎 Channe…
  2. Sep 25, 2026🔥 پکیج: قراردادهای ترجمه سیمفونی اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق بر…
  3. Sep 16, 2026🚀 &rlm;LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
  4. Sep 11, 2026ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ PHP…
  5. Sep 10, 2026برنامه نویسی سوکت در PHP بخش اول عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از س…
  6. Aug 31, 2026🔥 پکیج: استاندارد PSR-11 برای Container استاندارد PSR-11 فقط یه interface مشترک برای Cont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →