Kodumun yalnızca okunabilirlik için değil, üzerinde çalıştığım projenin özelleştirilmesi için kısaltılması hilesi yapmaya çalışıyorum.Bir Sınıf Olarak İşlev İçinde DataBase Tablosu Oluşturma
DataBase'e bağlanan ancak sütunlar içeren bir tablo yaratacak bir işlevle mücadele eden bir sınıf oluşturdum.
sınıf şimdiye kadar bu gibi görünür:
class DataBase {
private $link;
private $host, $username, $password, $database;
public function __construct($host, $username, $password, $database){
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->database = $database;
$this->link = mysql_connect($this->host, $this->username, $this->password)
OR die("There was a problem connecting to the database.");
mysql_select_db($this->database, $this->link)
OR die("There was a problem selecting the database.");
return true;
}
public function query($query) {
$result = mysql_query($query);
if (!$result) die('Invalid query: ' . mysql_error());
return $result;
}
public function __destruct() {
mysql_close($this->link)
OR die("There was a problem disconnecting from the database.");
}
}
sorgu yöntemi zaten eklenmiş görebileceğiniz gibi. onun run nasıl bir örnek:
$db = new DataBase('localhost',$user,$pass,$name);
$db->query('SELECT * FROM table WHERE id="0"');
olası kimse bana ekleme tablo eklemek için işlev eklemek için bazı kod gönderdi olabilir mi? Bunu denedim:
public function create_table($t_data) {
$result = $t_data;
if (!$result) die('Invalid query: ' . mysql_error());
return $result;
}
Kullanımı: Sana şu anda haliyle savunmasızdır kaldırılmış işlevini mysql
kullandığınız beri MySQLi
veya PDO
bakarak öneriyoruz
$t_data = 'CREATE TABLE log_users(
uid VARCHAR(1024) NOT NULL,
username VARCHAR(33) NOT NULL,
password VARCHAR(18) NOT NULL,
admin VARCHAR(1) DEFAULT 0,
key VARCHAR(18) NOT NULL,
constant VARCHAR(1) DEFAULT 0)';
$db->create_table($t_data);
Hey, geçerli 'query' fonksiyonu dezenfekte ya da öylesine bir saldırganın kolayca yok etmek veya veritabanını tehlikeye atabilecek Sorgunuzla hazırlamak değil, bir SQL Injection saldırısı son derece duyarlıdır. Yıllardır kullanımdan kaldırılan 'mysql' kütüphanesini de kullanıyorsunuz, en azından' mysqli' ya da daha iyisi 'PDO'yu kullanmalısınız. PDO size çok fazla baş ağrısı kurtaracak ve SQL enjeksiyon saldırılarını yöneten bir DB sınıfı için temel bir çerçeve yazdım. Https://github.com/alexmk92/ASFramework/blob/master/app/core/models/Database.php – Alex
@Alex Thankyou çok fazla! Bu aslında ihtiyacım olan şey! Bunun için kaynak kodunda bir bağlantı tutacağım! –
Soru, bunu nasıl kullanırdım? Ben SQLi'ye alışmam. $ db = new Veritabanı(); $ db-> getirme ('SELECT FROM * table'); & Bunlarla nasıl bir tablo oluştururum? Ayrıca teşekkür ederim! @Alex –