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

PHP 實現網站生成桌面快捷方式(.url 文件)供下載

     編輯:PHP 綜合知識

前言

雖然現代瀏覽器已內置「添加到桌面/主屏幕」功能,但某些場景(如企業內部系統、特定推廣活動)仍需要由服務端主動生成 `.url` 快捷方式文件供用戶下載。本文介紹如何使用 PHP 動態生成符合 Windows 標準的 Internet Shortcut 文件。

.url 文件格式解析

Windows 的 `.url` 文件本質是 INI 格式的文本文件,核心結構如下:

[InternetShortcut]
URL=https://example.com/
IDList=[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
  • URL:目標網址,必填。
  • IDList:COM 對象標識符,固定值表示「網頁」類型,可省略但建議保留以兼容舊版 Windows。
  • Prop3:屬性標誌,`19,2` 表示在新窗口打開,可選。

PHP 實現代碼

<?php
// 目標網址(可從參數獲取,注意防範注入)
$targetUrl = 'https://blog.example.com/';

// 構建 .url 文件內容
$shortcutContent = "[InternetShortcut]\r\n";
$shortcutContent .= "URL={$targetUrl}\r\n";
$shortcutContent .= "IDList=[{000214A0-0000-0000-C000-000000000046}]\r\n";
$shortcutContent .= "Prop3=19,2\r\n";

// 設置下載響應頭
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="網站快捷方式.url"');
header('Content-Length: ' . strlen($shortcutContent));
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');

// 輸出內容
echo $shortcutContent;
?>

關鍵點說明

  1. 換行符:Windows INI 文件規範要求 `\r\n`(CRLF),使用雙引號字符串或顯式寫入。
  2. 文件名編碼:`Content-Disposition` 中的中文文件名需符合 RFC 5987 規範(如 `filename*=UTF-8''%E7%B6%B2%E7%AB%99%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F.url`),否則部分瀏覽器會顯示亂碼。簡化版可使用英文文件名。
  3. 安全性:若 `$targetUrl` 來自用戶輸入,必須嚴格驗證協議(僅允許 http/https)、域名白名單,防止生成指向惡意網站的快捷方式。
  4. HTTPS 建議:現代環境強烈建議使用 HTTPS 鏈接,避免瀏覽器安全警告。

前端調用示例

<a href="generate_shortcut.php" class="btn btn-primary">
    <i class="bi bi-download"></i> 下載桌面快捷方式
</a>

擴展:生成帶圖標的快捷方式

.url 文件本身不支持自定義圖標。若需自定義圖標,需生成 `.lnk` (Shell Link) 二進制文件,這在 PHP 中較為複雜,通常需調用 COM 組件(僅限 Windows 服務器)或使用第三方庫(如 `php-shell-link`)。對於大多數 Web 場景,`.url` 已足夠滿足需求。

總結

PHP 生成 `.url` 快捷方式文件的核心在於:正確構建 INI 格式內容、設置恰當的 HTTP 響應頭、處理文件名編碼。這是一個輕量級、無依賴的功能,適合為用戶提供「一鍵訪問」的便捷入口。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved