首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 記錄用戶搜索引擎來路關鍵詞的實現代碼

     編輯:PHP 綜合知識

核心邏輯

  1. 獲取 $_SERVER['HTTP_REFERER']`。
  2. 解析 URL 組件(parse_url)與查詢字符串(parse_str)。
  3. 根據主域名匹配對應搜索引擎的關鍵詞參數名(如百度 word、Google q)。
  4. 提取關鍵詞並入庫記錄。

完整代碼

<?php
$rfr = $_SERVER['HTTP_REFERER'];
if ($rfr) {
    $p = parse_url($rfr);
    parse_str($p['query'], $pa);
    $p['host'] = strtolower($p['host']);

    $arr_sd_key = [
        'baidu.com'     => 'word',
        'google.com'    => 'q',
        'sina.com.cn'   => 'word',
        'sohu.com'      => 'word',
        'msn.com'       => 'q',
        'bing.com'      => 'q',
        '163.com'       => 'q',
        'yahoo.com'     => 'p',
    ];

    $keyword = '';
    $sengine = $p['host'];
    foreach ($arr_sd_key as $se => $kwd) {
        if (strpos($p['host'], $se) !== false) {
            $keyword = $pa[$kwd] ?? '';
            $sengine = $se;
            break;
        }
    }

    // 入庫示例(需自行連接數據庫)
    // $sql = "INSERT INTO visit_log (domain, key_word, ct) VALUES (?, ?, NOW())";
    // $stmt->bind_param('ss', $sengine, $keyword);
    // $stmt->execute();
}
?>

優化與擴展建議

  • 使用 parse_url($rfr, PHP_URL_HOST) 直接取 host,避免完整解析開銷。
  • 搜索引擎列表應持久化到配置文件/數據庫,便於動態擴展。
  • 關鍵詞通常為 URL 編碼,入庫前需 urldecode() 並過濾 XSS。
  • 現代搜索引擎多為 HTTPS,Referer 可能為空或被策略截斷,可結合 UTM 參數、站長平台 API 獲取更完整數據。
  • 考慮使用 INSERT IGNORE 或 ON DUPLICATE KEY UPDATE 統計關鍵詞頻次。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved