Avatar
Monarezio
Redaktor
Avatar
Monarezio:

Ahoj nedavno jsem narazil u php PDO na dva prikazy jen ted nevym jakej je vic bezpecnejsi.

Priklad #1:

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

A pak je ten klasickej Priklad #2:

$dotaz = $connection->prepare('INSERT
INTO `user`(`user`,`heslo`)
VALUES(?, ?)');
$parametry = array($jmeno, $heslo);

Tak je mezi nemi nakej rozdil v bezpecnosti webu? :)

Odpovědět 8.9.2013 7:08
First, solve the problem. Then, write the code.
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 8.9.2013 8:47
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Monarezio
Kit:

Ohledně bezpečnosti jsou rovnocenné, raději však používám druhý způsob. Pole s parametry však dávám přímo jako parametr metody execute(), protože se mi to tak nejvíc líbí.

Pokud mám SQL dotaz na více řádcích, používám Heredoc.

$dotaz = $connection->prepare(<<<EOT
INSERT INTO `user` (`jmeno`, `heslo`) VALUES (?, ?)
EOT
);
$dotaz->execute(array($jmeno, $heslo));

Je to jen příklad odvozený z tvého. Ve skutečnosti bych si nedovolil ukládat do databáze nešifrovaná hesla.

Nahoru Odpovědět 8.9.2013 8:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Mám dojem, že ten 2. způsob bugoval při vložení parametru klauzuli LIMIT, nevím, jestli to už opravili. Nikdy jsem se s tím nesetkal, ale pár lidí to tu psalo.

Nahoru Odpovědět 8.9.2013 9:01
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
Nahoru Odpovědět 8.9.2013 9:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Zajímavý atribut, díky. K produkčnímu využití PDO se teprve chystám, zatím jsem ho jen učil :)

Nahoru Odpovědět 8.9.2013 9:37
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Také jsem ten atribut dodnes neznal. Díky za dotaz.

Editováno 8.9.2013 9:41
Nahoru Odpovědět 8.9.2013 9:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Monarezio
Redaktor
Avatar
Monarezio:

Dekuji :)

Nahoru Odpovědět 8.9.2013 10:02
First, solve the problem. Then, write the code.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.