Сталкивался с PHP очень мало, прочел 2 книги, вот и для своего сайта с CMS решил небольшой скрипт прикрутить, потому что для этой CMS подобных нету. Помогите рекомендациям, как то одной из тем мне юзер Benjamin дал ссылку на SQL Injection, переработал и переделал все, хотелось бы услышать критику и дополнения. П.С. очень понравился PHP решил плотнее изучить. PHP: <HTML> <HEAD> <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> </HEAD> <BODY> <form action = "get.php" method="GET"> <select name="city"> <option value="">Все города</option> <option value="Анапа">Анапа</option> <option value="Адлер">Адлер</option> </select><br> <input type="submit"/> </form> <?php include 'config.php'; // Загрузили конфиг $city = "$_GET[city]"; // Загрузили переменную в массив $city = mysql_real_escape_string($city); // Экранируем массив для безопасной передачи в запрос if (empty($city)) { $que = mysql_query("select * from test");} // Если, поле формы пустое то выполняем запрос else $que = mysql_query("select * from test WHERE city LIKE '$city'"); // запрос если поле не пустое if($que) // Если все ОК то, рисуем шапку таблицы { echo "<table class='tablesorter' border=0>"; echo "<tr><th>Название</th><th>Город</th><th>Удаленность от моря</th><th>Питание</th><th>Инфраструктура</th><th>Стоимость</th></tr>"; while($test = mysql_fetch_array($que)) // Цикл на рисование строк { echo "<tr><td>".$test['name']." </td><td>".$test['city']."   </td><td>".$test['sea']." </td><td>". $test['feed']." </td><td>".$test['infra']." </td><td>".$test['cost']." </td></tr>"; } echo "</table>"; } else // если ничего не ОК, то выводим ошибку SQL запроса { echo "<p><b>Error: ".mysql_error()."</b><p>"; exit(); } ?> </BODY> </HTML> Что хочется сделать еще: 1. Прикрутить фото, аватарка каждого объекта, 100х100 чтобы фотка сама обрабатывалась скриптом. 2. Сделать чтобы не надо было жать кнопку "Отправить".
Во-первых, не $city = "$_GET[city]"; а $city = $_GET['city']; Во-вторых, можно заюзать что-то типа этого PHP: <? /** * * Clear entries for bad symbols * @param string $text The value being searched for * @param string $type Replacing type * @param string $additional Available sybmols that will not be replaced */ static protected function clear($text, $type='simpletext', $additional=null) { switch($type) { case 'numeric': case 'integer': $diap = '0-9'; $del = ''; break; case 'phone': $diap = '0-9\+'; $del = ' '; break; case 'words': $diap = 'a-zA-Zа-яА-я '; $del = ' '; break; case 'simpletext': $diap = '0-9a-zA-Zа-яА-я\-\., '; $del = ' '; break; case 'login': $diap = 'a-zA-Z0-9_'; $del = ''; break; case 'email': case 'mail': $diap = 'a-zA-Z0-9\-_\.@'; $del = ''; break; case 'english': $diap = 'a-zA-Z0-9'; $del = ''; break; default: $diap = '0-9a-zA-Zа-яА-я '; $del = ' '; break; } return preg_replace('/[^'.$diap.$additional.']/ui', $del, $text); } $city = clear($_GET['city']; Однако, mysql_real_escape_string таки правильно.