آموزش جامع و اصولی جستجو در دیتابیس با 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) روی فیلدهای متنی پرسرچ، تاثیر خارقالعادهای روی سرعت لود صفحات خواهد داشت.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید