Jump to content

návod [Dibi]Práce s MySQL bezpečněji - první seznámení


cniry

Recommended Posts

Ahoj, dnes vám představím Dibi. Dibi je "databázový layer" (třída pro práci s databázemi). Pokud Začínáte v php a chcete se naučit s MySQL, začněte raději rovnou v dibi. Dibi je výtvor českého PHP guru a specialisty na bezpečnost v PHP Davida Grudla.

Rád bych upozornil, že s Dibi se pracuje úplně jinak, než s php funkcí MySQL_Query()

 

Takže začneme s tím, že si stáhneme dibi :dhttp://www.dibiphp.com

V zip archivu si najdeme soubor: dibi-latest/dibi.minified/dibi.min.php a ten si rozbalíme do složky s naším scriptem.

 

A nejprve se připojíme na MySQL databázi:

require "dibi.min.php";

dibi::connect(array(
   'driver'   => 'mysql',
   'host'     => 'localhost',
   'username' => 'uzivatel',
   'password' => 'heslo',
   'database' => 'databaze',
));

asi jste si vsimli polozky driver=>mysql. Dibi umi praci s 11 ruznymi databazovymi systemy a timhle jedinym parametrem se mezi nimi prepina.

Dostupne drivery:

firebird , mssql, mssql2005, mysql, mysqli, odbc, oracle, pdo, postgre, sqlite, sqlite3

 

nas ale zajima mysql.

 

ted zkusime vytahnout nejaka data z tabulky uzivatele.

$query = dibi::query('SELECT * FROM [uzivatele]');

no jo, ale jak data vypiseme?

Ted se musime rozhodnout jestli mame v planu vypisovat jednu hodnotu, jeden radek, nebo vice radku.

//jednu hodnotu:
$data = $query->fetchSingle();
echo $data;

//jeden radek:
$data = $query->fetch();
echo $data->uzivatel;
echo $data->heslo;


//vice radku:
$data = $query->fetchAll();
foreach($data as $radek)
{
echo $radek->uzivatel;
echo $radek->heslo;
}

 

 

Hotova krasa je vkladani dat do tabulky. Dejme tomu ze mame tabulku uzivatele, se sloupci uzivatel, heslo.

$sloupce = array(
   'uzivatel' => 'pavel',
   'heslo'  => 'mojesupertajneheslo',
);
dibi::query('INSERT INTO [uzivatele]', $sloupce);

 

Koho to chytlo, muze si vyzkouset dalsi ukazky na strankach autora:

http://dibiphp.com/cs/quick-start

 

Dibi je opravdu jednoduche, naucite se jej za par dni pri trose snahy. Diky nemu budete mit mnohem bezpecnejsi aplikace protoze s dibi se nemusite bat strasaka jmenem SQL Injection

 

 

zapomel jsem rict to podstatne, pokud jste v php trosku pokrocilejsi a pracovali jste uz s databazi prez MySQL_Query(), asi vsechna data do tabulky nejprve prohanite prez mysqlescapestring() (nebo meli byste). U Dibi se na tohle vsechno muzete s pohodou vysrat :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...