Одновременно поиск объявлений по параметрам, таким как категория, название, почтовый индекс


Код ниже в безопасности от SQL-инъекций?

<?

mysql_connect ("localhost", "db","pass")  or die (mysql_error());
mysql_select_db ("db");

$term = mysql_real_escape_string($_POST['term']);

$sql = mysql_query("select * from tblListings where category like '%$term%' or title like '%$term%' or postcode like '%$term%' or info like '%$term%' ");

function highlight($needle, $haystack)
{
    return preg_replace('/(' . preg_quote($needle, '/') . ')/i', '<mark>$1</mark>', $haystack);
}

while ($row = mysql_fetch_array($sql)){

    echo '<br/> Category: ' . highlight($term, $row['category']);
    echo '<br/> Title: ' . highlight($term, $row['title']);
    echo '<br/> Address: ' . highlight($term, $row['add1']);
    echo '<br/> Street: ' . highlight($term, $row['street']);
    echo '<br/> City: ' . highlight($term, $row['city']);
    echo '<br/> Postcode: ' . highlight($term, $row['postcode']);
    echo '<br/> Phone: ' . highlight($term, $row['phone']);
    echo '<br/> E-Mail: ' . highlight($term, $row['email']);
    echo '<br/> Website: ' . highlight($term, $row['website']);
    echo '<br/> Info: ' . highlight($term, $row['info']);
    echo '<br/><br/>';
    //echo '<br/> E-Mail:   '.$row['email']; use this for the fields that you dont want to search

}

?>


515
2
задан 6 сентября 2011 в 03:09 Источник Поделиться
Комментарии
1 ответ

Я настоятельно рекомендую использовать PHP в ПДО подготовленных заявлений наряду с фильтрацией каждого поля для конкретных принятых символов.

Но чтобы ответить на ваш вопрос, ваш метод больше не считаются безопасными и могут быть использованы.

ПДО и учебник:

Вы можете использовать функции preg_match , чтобы отфильтровывать определенные последовательности символов.

Простой Пример Описаный Фильтр:

if (preg_match('/^[0-9-]+$/', $_POST['postcode'])) 
{
//POSTAL CODE IS GOOD TO GO
//Filters for charaters "0-9" along with "-" for longer postal codes
}
else
{
//REJECT
}

2
ответ дан 6 сентября 2011 в 06:09 Источник Поделиться