如何:使用 SQL Server 驗證進行連接
SQL Server Driver for PHP 在您連接到 SQL Server 時可支援 SQL Server 驗證。
只有當無法進行 Windows 驗證時,才應該使用 SQL Server 驗證。如需有關使用 Windows 驗證進行連接的詳細資訊,請參閱<如何:使用 Windows 驗證進行連接>。
當您使用 SQL Server 驗證連接 SQL Server 時,必須考量以下要點:
- 必須在伺服器上啟用 SQL Server 混合模式驗證。
- 當您嘗試建立連接時,必須設定 UID 和 PWD 連接屬性。UID 和 PWD 必須對應到有效的 SQL Server 使用者和密碼。
注意
包含右大括號 (}) 的密碼必須以第二個右大括號逸出。例如,如果 SQL Server 密碼是 "pass}word",PWD 連接屬性的值必須設定為 "pass}}word"。
當您使用 SQL Server 驗證連接 SQL Server 時,應該採取以下預防措施:
- 保護 (加密) 從 Web 伺服器透過網路傳送給資料庫的認證。SQL Server 2005 和 SQL Server 2008 預設會加密認證。如果要增加安全性,請將 Encrypt 連接屬性設定為 "on",以便將傳送給伺服器的所有資料加密。
注意
將 Encrypt 連接屬性設定為 "on" 會降低效能,因為資料加密需要密集運算。
- 請勿將純文字格式的連接屬性 UID 和 PWD 的值包含在 PHP 指令碼中。這些值應該儲存在應用程式特有的目錄中,並適當地限制該目錄的權限。
- 請避免使用 sa 帳戶。將應用程式對應到具有所需權限的資料庫使用者,並使用增強式密碼。
注意
當您建立連接時,可以設定 UID 和 PWD 以外的連接屬性。如需支援之連接屬性的完整清單,請參閱<sqlsrv_connect>。
範例
下列範例使用 SQL Server 驗證來連接 SQL Server 的本機執行個體。必要 UID 和 PWD 連接屬性的值是取自應用程式特有的文字檔 uid.txt 和 pwd.txt (位於 C:\AppData 目錄)。在建立連接之後,將會查詢伺服器來驗證使用者登入。
此範例假設 SQL Server 和 AdventureWorks 資料庫已經安裝在本機電腦上。當從瀏覽器執行此範例時,所有輸出都會寫入瀏覽器。
<?php
/* Specify the server and connection string attributes. */
$serverName = "(local)";
/* Get UID and PWD from application-specific files. */
$uid = file_get_contents("C:\AppData\uid.txt");
$pwd = file_get_contents("C:\AppData\pwd.txt");
$connectionInfo = array( "UID"=>$uid,
"PWD"=>$pwd,
"Database"=>"AdventureWorks");
/* Connect using SQL Server Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Unable to connect.</br>";
die( print_r( sqlsrv_errors(), true));
}
/* Query SQL Server for the login of the user accessing the
database. */
$tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
echo "Error in executing query.</br>";
die( print_r( sqlsrv_errors(), true));
}
/* Retrieve and display the results of the query. */
$row = sqlsrv_fetch_array($stmt);
echo "User login: ".$row[0]."</br>";
/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
另請參閱
工作
概念
其他資源
程式設計指南
SUSER_SNAME (Transact-SQL)
如何:建立 SQL Server 登入
如何:建立資料庫使用者
管理使用者、角色和登入
使用者結構描述分隔
GRANT 物件權限 (Transact-SQL)