PDO нужна помощь
1.
safasf (13.06.2015 / 19:17)
Помогите пожалуйста,не могу понять,правильно ли я все делаю?Как насчет взлома?
<?php
try {
$test = new PDO("mysql:host=localhost;port = 3306;dbname=pdonew", 'pdonew', 'pdonew');
$test-> setAttribute( PDO::ATTR_ERRMODE, PDO::E RRMODE_EXCEPTION );
}
catch(PDOException $e) {
print('lol'.$e);
}
$sth = $sql -> prepare('INSERT INTO `asfas` SET `asfsaf` = ?') -> execute(array(mysql_real_escape_string('as6796*&&^&%^$%#$$*)_))*&*^&%^fsaf')));
?>
Подскажите как можно оптимизировать данный код
Добавлено через 00:39 сек.
И вообще защищен ли он?
2.
Иван (13.06.2015 / 19:37)
Здесь есть
http://webonrails.ru/post/208650773725188702/ готовое решение, можно посмотреть как там всё реализовано
3.
safasf (13.06.2015 / 19:38)
2.
Fantik, как-то все через чур аналогично(
Добавлено через 01:26 сек.
2.
Fantik, если можешь подскажи,такой код как я использую,можно юзать?
4.
Юрий (13.06.2015 / 19:42)
Нет, не так
Либо
$stmt=$pdo->prepare(
'INSERT INTO asfas SET asfsaf=?'
);
$res=$stmt->execute(
array('value');
);
Либо вот так
$stmt=$pdo->prepare(
'INSERT INTO asfas SET asfsaf=:key'
);
$res=$stmt->execute(
array(
'key' => 'value',
);
);
mysql_real_escape не нужен, так как происходит передача через плэйсхолдер, вообще не нужно фильтровать эти данные в таком запросе
Добавлено через 06:10 сек.
Подключение лучше вот так
$dsn="mysql:host=$host;dbname=$db;charset=$charset";
$opt=array(
PDO::ATTR_ERRMODE => PDO::E RRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
);
$pdo=new PDO($dsn, $user, $pass, $opt);
5.
safasf (13.06.2015 / 19:51)
4.
kndn, Спасибо за помощь,но ты как бы повторил все то,что было до этого,единственное что изменилось это структура
6.
Юрий (13.06.2015 / 19:54)
Убран mysql_real_escape, поправил структуру и тд)
А в остальном все верно))
Добавлено через 03:00 сек.
И второй способ показал.
С ассоциативным массивом
7.
safasf (13.06.2015 / 19:59)
6.
kndn, тоесть фильтрацию использовать ненадо дедовским способом?тогда как защитить себя?я читал что execute все это делает,но правильно ли использовать запросы для записи и вывода без дедовской защиты?
8.
Юрий (13.06.2015 / 20:02)
Да. Фильтрация не нужна в таких запросах.Никакая совсем))
Можешь попробовать подставлять кавычки в запрос и прочее и все будет работать нормально.
В этом и смысл плэйсхолдеров
9.
safasf (13.06.2015 / 20:06)
8.
kndn, а как же trim htmlspecialchar strsplash?
10.
Юрий (13.06.2015 / 20:08)
9.
safasf, я тебе ещё раз говорю - при передаче через плэйсхолдер они не нужны. Хочешь почитай об этом в инете
11.
Александр (13.06.2015 / 20:46)
9,
http://php.net/manual/ru/pdo.prepared-statements.php
URL:
https://visavi.net/topics/42414