在數字化時代,傳統的紙質合同已無法滿足快速、安全和便捷的需求。電子簽名和合同管理功能正好解決了這一問題,幫助企業簡化流程並提高效率。本文將介紹如何使用PHP 實現這些功能,帶您逐步實現電子簽名生成、簽名驗證及合同管理系統。
在PHP 中,利用GD 庫可以輕鬆生成簽名圖片。以下是一個示例代碼:
$signatureText = "John Doe";
$imageWidth = 200;
$imageHeight = 100;
$signatureImage = imagecreatetruecolor($imageWidth, $imageHeight);
$backgroundColor = imagecolorallocate($signatureImage, 255, 255, 255);
$textColor = imagecolorallocate($signatureImage, 0, 0, 0);
imagefill($signatureImage, 0, 0, $backgroundColor);
imagettftext($signatureImage, 20, 0, 10, 50, $textColor, "path/to/font.ttf", $signatureText);
imagepng($signatureImage, "path/to/signature.png");
imagedestroy($signatureImage);
在上述代碼中,首先設置簽名文本、圖像寬度和高度,接著創建一個真彩圖像對象並設置背景和文本顏色。利用`imagefill` 方法填充背景,再通過`imagettftext` 方法將簽名文本寫入圖像。最後,使用`imagepng` 保存圖像,並調用`imagedestroy` 釋放圖像資源。
為了確保簽名的真實性,可以利用公鑰和私鑰進行加密和解密驗證。以下是相關代碼示例:
$signature = "path/to/signature.png";
$publicKey = "path/to/public_key.pem";
$data = "Some data to sign";
$publicKeyResource = openssl_pkey_get_public(file_get_contents($publicKey));
$signatureData = base64_decode(file_get_contents($signature));
$result = openssl_verify($data, $signatureData, $publicKeyResource);
if ($result == 1) {
echo "Signature verified!";
} else {
echo "Signature verification failed!";
}
openssl_free_key($publicKeyResource);
在這段代碼中,首先指定簽名圖片路徑、公鑰路徑和待驗證的數據。通過`openssl_pkey_get_public` 獲取公鑰資源,使用`base64_decode` 解碼簽名數據。接著,利用`openssl_verify` 驗證數據,若返回值為1,則表示簽名有效。
合同創建通常包括選擇合同模板和填寫合同信息。以下是一個示例代碼:
$templateId = $_POST['template_id'];
$contractTitle = $_POST['title'];
$content = $_POST['content'];
// 將合同數據保存到數據庫或其他存儲方式
echo "Contract created successfully!";
在這段代碼中,利用`$_POST` 獲取合同模板ID、標題和內容等信息,接著將數據保存至數據庫,並返回創建成功提示。
合同簽署需要先驗證簽署人的身份和簽名,驗證通過後才能正式簽署合同。以下是相關代碼示例:
$contractId = $_GET['contract_id'];
$signature = $_FILES['signature'];
// 驗證簽署人身份和簽名
// 將簽署信息保存到數據庫或其他存儲方式
echo "Contract signed successfully!";
在這段代碼中,首先通過`$_GET` 獲取合同ID以及上傳的簽名文件。然後進行身份驗證和簽名驗證,驗證通過後保存簽署信息。
合同查詢功能允許簽署人或其他相關人員查詢合同狀態和詳細信息。以下是示例代碼:
$contractId = $_GET['contract_id'];
// 從數據庫或其他存儲方式中查詢合同信息
// 輸出合同信息
echo "Contract details:";
在這段代碼中,使用`$_GET` 獲取合同ID,然後從數據庫中查詢相關信息並展示。
通過本文的介紹,您可以了解到如何使用PHP 實現電子簽名和合同管理功能。電子簽名功能主要包括簽名圖片的生成與簽名驗證,而合同管理功能涵蓋了合同創建、簽署和查詢等操作。這些功能的實現能夠顯著提升工作效率和安全性,特別是在現代企業中。