PHP ile veritabanlarına modern ve güvenli bağlantılar

İçindekiler
Bir uygulamaya zarar verebilecek bir şey varsa, onu daha hızlı ve daha güvenli hale getirmek için yeterli kaynakları kullanmadığımızda, uygulamaların hızını ve güvenliğini artırmanın birçok yolu vardır, daha iyi geliştirme kalıpları kullanarak olabilir, sunucularda daha fazla güvenlik uygulamak vb.
Ancak, çoğu zaman durup düşünmediğimiz bir nokta vardır ve bu, dilin bize sağladığı aracın yaptığımız iş için en iyisi olup olmadığıdır. bu içinde çok oluyor PHP Uzun yıllardır işlevi kullanmamak için bir uyarı olmasına rağmen mysql_connect () bağlantılar kurmak için veritabanları, birçok geliştirici, onu kullanırken yaptıkları büyük hatayı fark etmemiş görünüyor.
PHP çok sayıda motor için yerel desteğe sahiptir veritabanları piyasada var olan, ancak bununla entegrasyonu MySQL çoğu kullanıcı için neredeyse zorunlu bir başlangıç ​​noktasıdır.
mysql_connect ()Sürümden 5.5 nın-nin PHP klasik fonksiyon mysql_connect () durumda kullanımdan kaldırıldı, yani eskidir ve dilin gelecekteki sürümlerinde yer almayacağı için kullanılmaması şiddetle tavsiye edilir.
Bağlantıyı iki öğe üzerinden gerçekleştirmenin alternatifi, ilki bağlantı kurmak için aynı dil yapısını kullanmak veya bağlantı kurmak için yeni kütüphaneyi kullanmaktır. MySQL. İşte ilk soru gelebilir, neden sadece MySQL? Cevap basit, bu bir başlangıç, başlangıçta açıklayabileceğimiz en basit ve en kullanışlı şey, bu temeli bilirsek diğer motorlara ve sürücülere tahminde bulunabiliriz.
Bağlantının ilk alternatifi Veri tabanı olarak adlandırılan dilin kendi veri nesnesini kullanmaktır. PHP Veri Nesnesi veya kısaltması PDO. Bu, dilde büyük bir yazılı uzantıdan başka bir şey değildir. C farklı motor tipleri ile bağlantı kurmamızı sağlayan veritabanları ve bize platformlar arası uygulamalar yazma imkanı veren standart yöntemlere sahip olduğunu, yani veritabanı motorunu değiştirirsek sözdizimini değiştirmemiz gerekmediğini.
İlk başta odaklanacağımızı söylemiştik. MySQLancak üzerinden bir bağlantı kurarsak PDO ne yaparsak diğer motorlara uygulayabiliriz. Bunun için sadece söz konusu motorların sürücülerini etkinleştirmemiz veya dahil etmemiz ve bunları dosyada etkinleştirmemiz gerekiyor. php.ini sunucudan.
Bir bağlantıya bağlanmak için Veri tabanı sadece bunun için uygun yöntemi kullanarak bağlantıyı kurmamız gerekiyor, PDO bağlantı, veritabanı sunucusunun adı, kullanıcı adı ve şifresi olmak üzere üç temel parametre ile sağlanır.
Bu üçünün açıklama gerektiren tek parametresi veritabanı sunucusunun parametresidir, geçmişte seçmek zorunda kaldık Veri tabanı Bağlantıyı kurduktan sonra belirli bir fonksiyon aracılığıyla, bu durumda bunu aynı dizide yapacağız, böylece sunucu adı dizimiz şöyle görünecek:
mysql: ana bilgisayar = ana bilgisayar adı; dbname = dbname

Başlangıçta motoru belirlediğimizi görüyoruz, bu durumda mysql sonra host ile size sunucunun hangisi olduğunu söyleyeceğiz, burada bir IP veya yerel ana bilgisayar sunucu yerel ise, sonunda dbname bağlanmak istediğimiz veritabanının adını geçiyoruz. Aşağıdaki resimde bir kodun nasıl bağlanacağını gözlemleyeceğiz. PDO:

BÜYÜT

Nasıl bağlanacağımızın ilk adımını bildiğimiz için, şimdi sorguları nasıl çalıştırabileceğimizi öğrenmeliyiz, normalde geçmişte sorguyu doğrudan parametreleri ile yürütürdük, bu uygulama hiç güvenli değil çünkü bizi eğilimli hale getirdiği için bu uygulama hiç güvenli değil. türü saldırılar SQL Enjeksiyonu, PDO sözde kullanmamıza izin verir Hazırlanan Tablolar bu, sorguyu parametreli bir şekilde yürütmekten başka bir şey değildir, bu nedenle kitaplığın kendisi bir hata ayıklama işi yapar ve saldırılara daha az eğilimlidir. Şimdi basit bir sorgunun nasıl yürütüleceğini ve ardından bunun ile eşdeğerini görelim. Hazırlanan Beyanname.
Bu basit sorguda, dosyamızda bir tablomuz olduğunu varsayacağız. Veri tabanı aramak Yazar bir yazar kodu ve ardından adını alan, elbette açıklayıcı olması iyi bir tablo örneği değil, yalnızca bağlantının nasıl çalıştığını bilmekle ilgileniyoruz. PDO.
Resimde adında bir yöntem çağırdığımızı görüyoruz. sorgu () PDO bağlantı dizesi ile oluşturulan nesneden sorgumuzu çok problemsiz yazıyoruz:

BÜYÜT

Sorun şu ki, değerleri doğrudan alıyoruz, bu yüzden bunu iyileştirmenin ve yeniden kullanmanın bir yolu yok, bunun yerine bir Hazırlanan Beyanname, önce hangi sorgunun yürütüleceğini belirttiğimizi sonra başka bir yöntemle onu etkin hale getirdiğimizi ve gerekli değerleri ona aktardığımızı göreceğiz. Bu, parametre hata ayıklama motorunu devreye sokar. PDO böylece ek bir koruma seviyesi sağlar. Aşağıdaki resimde bir önceki örneğin nasıl görüneceğini görelim. Hazırlanan Tablolar şimdi.

BÜYÜT

İlk bakışta biraz karmaşık ve optimal değil gibi görünebilir, ancak analiz edersek, önce yürütülecek sorguyu oluşturduğumuzu, ardından sorgumuzun alacağı parametrelerle bir dizi oluşturduğumuzu görüyoruz, örnekte olduğu gibi. yazarın kodunu ve adını alırız, sonunda sorguyu çalıştırır ve ona parametre dizisini iletiriz.
Bir kez danışmak istersek, zaten bazı değerleri girdimize ekledik. Veri tabanı çok basit, sadece bir sorgu ile yapmamız gerekiyor SEÇME, bu, geçmişte aşağıdaki gibi fonksiyonlara bağlı olduğumuz kayıtları getirmemize izin verecek. mysql_fetch_array() veya mysql_fetch_assoc() bir zamanlar tüketilen, sonuçlarını tekrar yönetemez hale getirdi.
İle birlikte PDO Verileri doğrudan nesneden alacağız, bu nedenle yürütme sırasında her zaman kullanılabilir durumda olacağız, aşağıdaki örnekte nasıl yapılacağını görelim:

Başlangıçta nasıl yaptığımızı görüyoruz. Hazırlanan Beyanname, bu durumda basit bir sorgu yapıyoruz ve ardından bir döngü ile süre () atıf yapmadığımızı fark edersek, kayıtların her birini alacağız ve çıktısını alacağız. MySQL kodumuzun herhangi bir yerinde, bu nedenle bağlantı dizesini değiştirirsek ve tablosu olan başka bir motor kullanırsak ve Veri tabanı aynı isim ve yapıda, kodumuzu değiştirmek zorunda kalmadan verilerinizi elde edebileceğiz.
Ne MySQL entegre edilecek en popüler Veritabanı motorudur PHP, ayrıca bir alternatif var ve MySQLi nesne yönelimli bir arayüzden başka bir şey değildir. Çalışma şekli şuna çok benzer: PDOAncak, bunun yalnızca bu popüler Veritabanı motoru için geçerli olması, dolayısıyla platformlar arası bir dönüştürmenin mümkün olmamasıdır.
Bağlantı dizgisi, hosttaki sunucunun adını ve kullanılacak Veritabanını iki farklı parametrede böldüğü için, kullanıcının adı ve şifresine ek olarak biraz daha az karmaşıktır, bakalım neye benziyor:
$ objConex = yeni mysqli (Ana BilgisayarAdı, kullanıcı, parola, VeritabanıAdı);

Aşağıdaki örnekte kullanarak nasıl bağlantı kurduğumuzu görelim. MySQLi ve basit bir veri ekleme işlemini nasıl gerçekleştirebiliriz:

BÜYÜT

benzerlik olduğunu not ediyoruz. PDO bir yönteme sahip olarak sorgu () aynı zamanda, ancak bu sadece işe yarayacak MySQL.
Şimdi bir sorgudan elde edebileceğimiz verileri alıp yineleyeceğiz, bunun için aynı yöntemi kullanacağız. sorgu () ve sonra yöntem fetch_assoc () sonuçları almak için:

Fark ettiğimiz en ilginç şey, yöntemi kullandığımızdır. kapat (), yaptığı bu, mevcut bağlantıyı kapatmak ve arabelleği sunucu kaynaklarının kullanımını optimize edecek şekilde temizlemektir.
ÖnemliUnutulmamalıdır ki, eski bir sürümde yapılmış bir sistemimiz varsa, PHP ve yeni sürümlere geçmeyeceğiz, belki bağlantı dizelerini Veri tabanı ve sorgulama yöntemleri temsil ettiği iş için iyi bir fikir olmayabilir. Ancak, yeni uygulamalar ve sistemler yapmak istiyorsak, bu yeni kütüphaneleri gelecekteki sürümlerinde destekle kullanarak sağlam bir temelle başlamak en iyisidir. PHP.
Bununla bu öğreticiyi bitiriyoruz, yeni alternatiflerin çok daha temiz ve daha güvenli olduğunu ve kullanım kolaylıklarının onları şimdiki zamanlara uygun hale getirdiğini gördük.Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave