Aracılığıyla paylaş


Nasıl yapılır: SQL Server Kimlik Doğrulaması Kullanarak Bağlanma

PHP sürücüsünü indirme

SQL Server için PHP için Microsoft Sürücüleri, SQL Server'a bağlandığınızda SQL Server Kimlik Doğrulamasını destekler.

SQL Server Kimlik Doğrulaması yalnızca Windows Kimlik Doğrulaması mümkün olmadığında kullanılmalıdır. Windows Kimlik Doğrulaması ile bağlanma hakkında bilgi için bkz . Nasıl yapılır: Windows Kimlik Doğrulaması Kullanarak Bağlanma.

SQL Server'a bağlanmak için SQL Server Kimlik Doğrulaması kullandığınızda aşağıdaki noktalar dikkate alınmalıdır:

  • SQL Server Karma Mod Kimlik Doğrulaması sunucuda etkinleştirilmelidir.

  • Bağlantı kurmaya çalıştığınızda kullanıcı kimliği ve parola (SQLSRV sürücüsündeki UID ve PWD bağlantı öznitelikleri) ayarlanmalıdır. Kullanıcı kimliği ve parola geçerli bir SQL Server kullanıcısı ve parolası ile eşlenmelidir.

Uyarı

Kapanış küme ayracı (}) içeren parolaların ikinci bir kapanış küme ayracı ile kaçılması gerekir. Örneğin, SQL Server parolası "pass}word" ise PWD bağlantı özniteliğinin değeri "pass}}word" olarak ayarlanmalıdır.

SQL Server'a bağlanmak için SQL Server Kimlik Doğrulaması kullandığınızda aşağıdaki önlemler alınmalıdır:

  • Web sunucusundan veritabanına ağ üzerinden geçirilen kimlik bilgilerini koruyun (şifreleyin). Kimlik bilgileri SQL Server 2005'te başlayarak varsayılan olarak şifrelenir. Daha fazla güvenlik için, sunucuya gönderilen tüm verileri şifrelemek için Bağlantıyı şifrele özniteliğini "açık" olarak ayarlayın.

Uyarı

Veri şifrelemesi işlem açısından yoğun olabileceğinden Bağlantıyı şifrele özniteliğinin "açık" olarak ayarlanması daha yavaş performansa neden olabilir.

  • PHP betiklerinde UID ve PWD bağlantı özniteliklerinin değerlerini düz metin olarak eklemeyin. Bu değerler, uygun kısıtlı izinlere sahip uygulamaya özgü bir dizinde depolanmalıdır.

  • sa hesabını kullanmaktan kaçının. Uygulamayı istenen ayrıcalıklara sahip olan ve güçlü bir parola kullanan bir veritabanı kullanıcısıyla eşleyin.

Uyarı

Bağlantı kurduğunuzda kullanıcı kimliği ve parolanın yanı sıra bağlantı öznitelikleri de ayarlanabilir. Desteklenen bağlantı özniteliklerinin tam listesi için bkz. Bağlantı Seçenekleri.

SQLSRV örneği

Aşağıdaki örnek, SQL Server'ın yerel bir örneğine bağlanmak için SQL Server Kimlik Doğrulaması ile SQLSRV sürücüsünü kullanır. Gerekli UID ve PWD bağlantı öznitelikleri için değerler, C:\AppData dizinindeki uygulamaya özgü metin dosyalarındanuid.txtve pwd.txtalınır. Bağlantı kurulduktan sonra, kullanıcı oturum açma bilgilerini doğrulamak için sunucu sorgulanır.

Örnekte SQL Server ve AdventureWorks veritabanının yerel bilgisayarda yüklü olduğu varsayılır. Örnek tarayıcıdan çalıştırıldığında tüm çıkış tarayıcıya yazılır.

<?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);  
?>  

PDO_SQLSRV örnek

Bu örnek, SQL Server Kimlik Doğrulaması'na nasıl bağlanacaklarını göstermek için PDO_SQLSRV sürücüsünü kullanır.

<?php  
   $serverName = "(local)";   
   $database = "AdventureWorks";  
  
   // Get UID and PWD from application-specific files.   
   $uid = file_get_contents("C:\AppData\uid.txt");  
   $pwd = file_get_contents("C:\AppData\pwd.txt");  
  
   try {  
      $conn = new PDO( "sqlsrv:server=$serverName;Database = $database", $uid, $pwd);   
      $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   
   }  
  
   catch( PDOException $e ) {  
      die( "Error connecting to SQL Server" );   
   }  
  
   echo "Connected to SQL Server\n";  
  
   $query = 'select * from Person.ContactType';   
   $stmt = $conn->query( $query );   
   while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){   
      print_r( $row );   
   }  
  
   // Free statement and connection resources.   
   $stmt = null;   
   $conn = null;   
?>  

Ayrıca Bkz.

Nasıl yapılır: SQL Server Kimlik Doğrulaması Kullanarak Bağlanma

PHP için Microsoft SQL Server Sürücüleri Programlama Kılavuzu

Belgede Kod Örnekleri Hakkında

SUSER_SNAME (Transact-SQL)

Nasıl yapılır: SQL Server Oturumu Oluşturma

Nasıl yapılır: Veritabanı Kullanıcısı Oluşturma

Kullanıcıları, Rolleri ve Oturum Açma Bilgilerini Yönetme

User-Schema Ayırma

Nesne İzinleri Verme (Transact-SQL)