PDO нужна помощь

Печать RSS
433

S
Автор
Пришелец
0
Помогите пожалуйста,не могу понять,правильно ли я все делаю?Как насчет взлома?
<?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 сек.
И вообще защищен ли он?

Оранжевые штаны
0
Здесь есть http://webonrails.ru/post/208650773725188702/ готовое решение, можно посмотреть как там всё реализовано
S
Автор
Пришелец
0
2. Fantik, как-то все через чур аналогично(

Добавлено через 01:26 сек.
2. Fantik, если можешь подскажи,такой код как я использую,можно юзать?
Ю

Пришелец
0
Нет, не так
Либо
$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);
Изменил: Юрий (13.06.2015 / 19:51)
S
Автор
Пришелец
0
4. kndn, Спасибо за помощь,но ты как бы повторил все то,что было до этого,единственное что изменилось это структура D
Ю

Пришелец
0
Убран mysql_real_escape, поправил структуру и тд)
А в остальном все верно))

Добавлено через 03:00 сек.
И второй способ показал.
С ассоциативным массивом
Изменил: Юрий (13.06.2015 / 19:55)
S
Автор
Пришелец
0
6. kndn, тоесть фильтрацию использовать ненадо дедовским способом?тогда как защитить себя?я читал что execute все это делает,но правильно ли использовать запросы для записи и вывода без дедовской защиты?
Ю

Пришелец
0
Да. Фильтрация не нужна в таких запросах.Никакая совсем))
Можешь попробовать подставлять кавычки в запрос и прочее и все будет работать нормально.
В этом и смысл плэйсхолдеров
S
Автор
Пришелец
0
8. kndn, а как же trim htmlspecialchar strsplash?
Ю

Пришелец
0
9. safasf, я тебе ещё раз говорю - при передаче через плэйсхолдер они не нужны. Хочешь почитай об этом в инете
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск