Всем привет. Проблема вот какая. Нужно записать данные в поле базы данных. Как сделать чтобы данные записались с пробелами между ними. То есть надо Андрей Уголок Гермес. А сейчас данные записываются вместе, без пробелов. Тип у поля varchar(255). Вот сам код записи в базу. Код (Text): $sql="UPDATE counter SET phone_call='".$_POST['username']."' '".get_tip($_POST['tip'])."' '".get_model($_POST['model'])."' WHERE id='".$_SESSION['uniq']."'"; mysql_query($sql); Спасибо!
Вы ведь знаете, что такое SQL-инъекции? У вас, пардон, запрос протекает. И да, плевать на код вставки. Это ваше "Андрей Уголок Гермес" где формируется? Что за переменная?
Код (Text): <h3>Серия "Гермес"</h3> <form action="zakaz.php" method="post"> <input type="hidden" name="tip" value="Ugolok"/> <input type="hidden" name="model" value="Hermes"/> <input type="text" title="Введите Ваше имя" name="username"/> Это форма, ее заполняют и данные отправляются как заказ. И в то же время записываются в базу данных. Я еще не очень силен в PHP можете подсказать, как именно защитить данный код от sql-инъекции. Спасибо!
1) Хотите пробелов - просто добавьте их. Там, где вы врезаете переменные в запрос, типа ".$_POST['username'].", попробуйте после правой точки ставить пробел. Будет самое оно. 2) У вас в запрос уходят данные напрямую из браузера. Без какой-либо проверки. Если эти данные грамотно подготовить, можно будет взломать вашу БД с вашего же сайта. 3) Для защиты от инъекций нужно следить за тем, что вам приходит. Тут три варианта: юзать prepared_statement PDO, самому запилить prepared_statement с блекджеком и девками, не юзать prepared_statement, а юзать mysqli_real_escape() для экранирования потенциально опасных символов. 4) Вы используете расширение mysql, так делать не надо, надо mysqli. Все непонятные слова легко гуглятся, в том числе и в документации пыха.