Ben 2 yıl BİT öğrencisiyim. Bu yıl daha önce PHP yapmadım ve bizim eğitmen bize temellerini verdi ve dönem sonunda, bize onun tabii ve veritabanları dersinde öğrendiklerini birleştirecek bir proje verdi. Biz windows klasik AMP ayarlarını kullanmak için vardı.
Şimdi, bizim eğitmen biz sınıfta önce küçük olanları yapılmış nasıl dayanan bir profil site yapmak için anlattı.
Ben veritabanına kullanıcı girme biraz garip yöntem arkasında nokta görmüyorum.
İlk olarak, (örneğin, buraya zip kodları daha hiçbir harf veya diğer semboller, asla 4 sayılardır) girilen verilerin güvenli ve biraz gerçekçi olduğundan emin olmak için bazı PHP formchecking yapmak.
Her şey güzel denetler, biz aşağıdakileri yapın:
$sql = new SqlObject(); //from SqlObject.class.php
$newUser = new User(login,passw,mail,...,...,...); //from User.class.php
$sql->addUser($newUser);
SQLObject sınıf biz eklemek ve genellikle veritabanındaki verileri değiştirmek, güncelleme ihtiyacınız olan tüm SQL komutları içeren bir sınıftır. Biz normal sayfalarında SQL yazmak asla. Ama hakkında kafam karıştı değil. Bu User.class.php dosya.
Bu dosya sadece bir yapıcı ve veritabanına girilmesi gerekiyor gibi alanlarda tam olarak aynı miktarda içerir. Örneğin:
<?php
class User {
// members
var $id;
var $name;
var $password;
// constructor
function User($id=-1,$name='',$password='') {
$this->id = $id;
$this->name = $name;
$this->password = $password;
}
}
?>
İşte bu. SqlObject.class.php dosya ilk satırda User.class.php dosyası gerektirir.
addUser($user)
SqlObject.class.php dosyasındaki işlev şöyle:
function addUser($user) {
$insQuery = 'INSERT INTO users(name,password)';
$insQuery.= " VALUES ('".$user->name."', '".$user->password."')";
@mysql_query($insQuery) or showError("user insert failed");
}
Neden User.class.php dosyası üzerinden böyle bir yolu yapmak? Çeşit Güvenlik nedeni?
Ben tekrar edeyim: Bu PHP kullanarak benim ilk yıl ve ben hala bir öğrenciyim.
EDIT: İnsanlar SQL enjeksiyonu üzerinde hiçbir kontrolleri veri takmadan önce olduğu şikayet ediyorlar.
At the beginning of this post, I mentioned "formchecking".
The register.php
file does all the escaping and checking of input. This includes several Regex tests, mysql_real_escape_string() and some simpler tests.
Once all tests are passed and all input is escaped, only then will this happen:
$sql = new SqlObject(); //from SqlObject.class.php
$newUser = new User(login,passw,mail,...,...,...); //from User.class.php
$sql->addUser($newUser);
Giriş Bazı insanlar SqlObject.class.php dosyası içinde vermek isteyen görmek tedavi almazsa bu kod asla çalıştırılmaz.
EDIT2: söz olarak, blog posted