msql_connect için php değerlerini saklamak için güvenli bir yer?

2 Cevap php

Güvenli bu değişkeni çağırmak için en güvenli yolu gerektiren kullanarak daha iyi olurdu ne de mysql_connect kullanılacaktır benim değerleri saklamak için bir yer içeren veya başka bir şey vardı nedir?

teşekkürler :)

2 Cevap

Bunu saklamak için en iyi yer IMO yani doğrudan erişilebilir değil, web kök dışında (farketmez bunu getirmek için require veya include kullanmak olsun) bir PHP dosyası olduğunu tarayıcı.

<?php

  $db_server = "xyz";
  $db_user = "def";
  $db_password = "abc";

?>

If there is no access outside the web root

@ Yacoby onun cevabını bu aşağı yazdı. O zamandan beri silinen, ama kesinlikle ilgiyi hak ediyor.

Web kök dışında erişime izin vermez aptalca barındırma sağlayıcıları vardır. Bu durumda, web sitesinde bir dizinde config dosyasını koymak ve içeren bir .htaccess dosyasını kullanarak onu korumak Deny from All. Bu, çoğu hosting packacges çalışır. Eğer olsa bunu test emin olun, almalısınız bir 403 Forbidden bu dosyaya erişmek için çalışırken.

Bu genellikle ne olduğunu:

  • Web sitesi projesinin bir alt yani projeyi ayarlayın. Eğer web kök klasörü dışında tüm PHP sınıfları ve yapılandırma dosyaları edebilirsiniz.
  • Veritabanı kimlik bir dizi ile bir config.php dosyası var. Örneğin:
$databases = array(
      "read" => array("host" => "127.0.0.1", 
                      "user" => "read", 
                      "pword"=> "secret",
                      "dbase"=> "projectName"));
  • PDO sınıfını genişleten (veya yeni bir sınıf oluşturmak) tek bir argüman alacak bir kurucusu vardır veritabanı denir.
class Database extends PDO{
  function __construct($database){
    global $databases;
    $db = $databases[$database];
    parent::__construct("mysql:dbname=".$db['dbase'].";host=".$db['host'], 
                        $db['user'], $db['pword']);
  }
}

Şimdi veritabanı sınıf yapıcısı bir argüman olarak veritabanı kimlik birine dizi anahtarına geçebilir, ve daha sonra bu ayrıntılar ile imzalayacak. Bu veritabanına erişmek için birden fazla kullanıcıya (okumak için bir, ve yazma için bir) olabileceği anlamına gelir.