آموزش رایگان PHP

آموزش جامع و اصولی جستجو در دیتابیس با PHP و MySQL (مطابق استانداردهای گوگل)

1405/05/13 21:26 محراب حسن زاده
آموزش جامع و اصولی جستجو در دیتابیس با PHP و MySQL (مطابق استانداردهای گوگل)

مقدمه: چرا بهینه‌سازی سیستم جستجو در دیتابیس اهمیت دارد؟

یکی از ارکان اصلی هر وب‌سایت پویا، سیستم جستجوی آن است. کاربران برای یافتن سریع مطالب یا محصولات خود به کادر جستجو مراجعه می‌کنند. اما از دیدگاه گوگل و موتورهای جستجو، یک سیستم سرچ غیر‌اصولی نه تنها بار اضافی به سرور تحمیل می‌کند، بلکه می‌تواند به دلیل تولید صفحات تکراری (Duplicate Content) به سئو سایت شما آسیب جدی وارد کند. در این مقاله به آموزش جستجو در دیتابیس با PHP به روش کاملاً امن و مطابق با استانداردهای گوگل می‌پردازیم.

گام اول: اتصال امن به دیتابیس با PDO

برای شروع کار با پایگاه داده در PHP، همیشه توصیه می‌شود از کتابخانه PDO (PHP Data Objects) استفاده کنید. PDO علاوه بر پشتیبانی از دیتابیس‌های مختلف، امنیت بسیار بالایی در برابر حملات تزریق کد (SQL Injection) ارائه می‌دهد.


$host = 'localhost';
$db   = 'my_website';
$user = 'root';
$pass = 'password';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
     $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
     throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

گام دوم: نوشتن کوئری جستجوی بهینه و امن

بسیاری از برنامه‌نویسان مبتدی متغیرهای ورودی کاربر را مستقیماً وارد کوئری‌های SQL می‌کنند. این کار بزرگترین حفره امنیتی (SQL Injection) را ایجاد می‌کند. راهکار استاندارد گوگل و اصول برنامه‌نویسی ایمن، استفاده از Prepared Statements است.


// دریافت کلمه کلیدی جستجو شده توسط کاربر
$searchTerm = isset($_GET['q']) ? trim($_GET['q']) : '';

if (!empty($searchTerm)) {
    // نوشتن کوئری با استفاده از Placeholders
    $sql = "SELECT id, title, description FROM articles WHERE title LIKE :search OR description LIKE :search";
    $stmt = $pdo->prepare($sql);
    
    // اضافه کردن کاراکترهای % برای جستجوی انعطاف‌پذیر
    $likeParam = "%" . $searchTerm . "%";
    $stmt->execute(['search' => $likeParam]);
    
    $results = $stmt->fetchAll();
}

گام سوم: ساخت فرم جستجوی استاندارد (HTML)

برای ایجاد فرم جستجو، باید از متد GET استفاده کنیم تا کاربر بتواند آدرس جستجوی خود را بوکمارک کند و همچنین قابلیت رهگیری در ابزارهایی مانند گوگل آنالیتیکس فراهم باشد. توجه کنید که در کدهای HTML زیر برای رعایت قوانین، فاصله‌های استاندارد رعایت شده است:


< form method="GET" action="search.php" >
    < input type="text" name="q" placeholder="جستجو در سایت..." value="" / >
    < button type="submit" >جستجو< / button >
< / form >

استانداردهای سئو گوگل برای صفحات جستجو

گوگل دستورالعمل‌های خاصی برای صفحات نتایج جستجوی داخلی وب‌سایت‌ها دارد:

  • جلوگیری از ایندکس شدن صفحات جستجو: گوگل توصیه می‌کند که صفحات نتایج جستجوی داخلی را با تگ noindex نشانه‌گذاری کنید تا از هدر رفتن بودجه خزش (Crawl Budget) جلوگیری شود.
  • نمایش نتایج خالی به صورت بهینه: در صورتی که نتیجه‌ای یافت نشد، حتماً پیغام مناسب به کاربر نشان دهید و پیشنهادهای جستجوی دیگری ارائه دهید.
  • سرعت لود بالا: استفاده از ایندکس‌گذاری (Indexing) روی فیلدهای متنی پرسرچ، تاثیر خارق‌العاده‌ای روی سرعت لود صفحات خواهد داشت.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش تکنیک‌های پیشرفته CSS Grid: طراحی ساختارهای پیچیده و واکنش‌گرا
1402/06/18 23:16

آموزش تکنیک‌های پیشرفته CSS Grid: طراحی ساختارهای پیچیده و واکنش‌گرا

مطالعه بیشتر
آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد
1404/09/24 20:52

آشنایی با Emit در Vue.js | انتقال رویدادها از کامپوننت فرزند به والد

مطالعه بیشتر
آموزش کامنت‌ها و کاراکترهای خاص در HTML و CSS: نحوه استفاده و مدیریت
1402/05/23 00:08

آموزش کامنت‌ها و کاراکترهای خاص در HTML و CSS: نحوه استفاده و مدیریت

مطالعه بیشتر
آموزش کار با flex-grow، flex-shrink و flex-basis در CSS Flexbox: مدیریت اندازه و فضای عناصر
1403/08/11 20:50

آموزش کار با flex-grow، flex-shrink و flex-basis در CSS Flexbox: مدیریت اندازه و فضای عناصر

مطالعه بیشتر
آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع
1403/07/28 21:41

آموزش کامل توابع سازنده (Constructors) و پروتوتایپ‌ها (Prototypes) در جاوا اسکریپت: راهنمای جامع

مطالعه بیشتر
آموزش جامع کوکی (Cookie) در PHP + مدیریت اصولی و امنیت آن بر اساس استاندارد گوگل
1405/05/01 20:10

آموزش جامع کوکی (Cookie) در PHP + مدیریت اصولی و امنیت آن بر اساس استاندارد گوگل

مطالعه بیشتر
آموزش کامل و اصولی اتصال PHP به پایگاه داده MySQL (به روش PDO و MySQLi)
1405/05/04 23:34

آموزش کامل و اصولی اتصال PHP به پایگاه داده MySQL (به روش PDO و MySQLi)

مطالعه بیشتر
آموزش جامع حلقه‌های for و while در جاوا اسکریپت: نحوه استفاده و کاربردها
1402/11/02 23:10

آموزش جامع حلقه‌های for و while در جاوا اسکریپت: نحوه استفاده و کاربردها

مطالعه بیشتر
تنظیم عرض و ارتفاع عناصر در CSS: استفاده از width، height، max و min برای کنترل دقیق اندازه‌ها
1403/08/09 21:08

تنظیم عرض و ارتفاع عناصر در CSS: استفاده از width، height، max و min برای کنترل دقیق اندازه‌ها

مطالعه بیشتر
آموزش جامع و کاربردی کار با فایل‌ها در PHP
1405/05/04 23:14

آموزش جامع و کاربردی کار با فایل‌ها در PHP

مطالعه بیشتر
آموزش گام به گام اتصال به دیتابیس با MySQLi در PHP (امن و استاندارد)
1405/05/04 23:40

آموزش گام به گام اتصال به دیتابیس با MySQLi در PHP (امن و استاندارد)

مطالعه بیشتر
آموزش ارث‌بری (Inheritance) در جاوا اسکریپت: نحوه استفاده از پروتوتایپ‌ها و کلاس‌ها
1403/07/28 21:20

آموزش ارث‌بری (Inheritance) در جاوا اسکریپت: نحوه استفاده از پروتوتایپ‌ها و کلاس‌ها

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد