Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не сохраняются знаки ' и \ в базе mysql

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
serg502
Отправлено: 27 Сентября, 2016 - 14:27:25
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Здраствуйте. Есть такой код для изменение записей в базе данных.

Но в базе не сохраняются знаки ' и \ (может и еще какие, но кажется только эти). Если в тексте случаются такие знаки, то данные не обновляются вообще. А они нужны, так как используются в html и php коде.

В чем может быть причина?

PHP:
скопировать код в буфер обмена
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Админка - редактирование</title>
  6. </head>
  7.  
  8. <body>
  9. <a href="add.php">Добавить игру в базу</a><br /><a href="index_admin.php">Редактирование игр</a><br />
  10. <?PHP
  11. ini_set('display_errors',1);
  12. include ('../connect.php');
  13. $id=$_GET['id'];
  14. $result = mysqli_query($connection,"SELECT * FROM games WHERE id = '$id'" );
  15. $row = mysqli_fetch_assoc($result);
  16.  
  17.  
  18. if(isset ($_POST['edit'])){
  19. $name = $_POST['name'];
  20. $text = $_POST['text'];
  21. $swf = $_POST['swf'];
  22. $image = $_POST['image'];
  23. $keywords = $_POST['keywords'];
  24. $description = $_POST['description'];
  25.  
  26.                         mysqli_query($connection,"UPDATE games SET name='$name', text='$text', swf='$swf', image='$image', keywords='$keywords', description='$description' WHERE id = '$id'");
  27.                                
  28.                  echo "Обновление успешно";
  29.                  };
  30.        
  31.  mysqli_close($connection);
  32.  ?>
  33.  
  34.                 <form method="POST" action="edit.php?id=<?PHP echo $id; ?>">
  35.                
  36.                 Название <input type="text" name="name" size=100 value="<?PHP echo $row['name']; ?>"/><br />           
  37.                 Текст        <textarea cols="100" rows="10" name="text"><?PHP echo $row ['text']?></textarea><br/><br/>
  38.                 Код swf      <textarea cols="100" rows="10" name="swf"><?PHP echo $row ['swf']?></textarea><br/><br/>
  39.                 Код картинки <textarea cols="100" rows="2" name="image"><?PHP echo $row ['image']?></textarea><br/><br/>
  40.                 Keywords     <textarea cols="100" rows="2" name="keywords"><?PHP echo $row ['keywords']?></textarea><br/><br/>
  41.                 Description  <textarea cols="100" rows="2" name="description"><?PHP echo $row ['description']?></textarea><br/><br/>
  42.                
  43.                        
  44.                                                         <input type="submit" name="edit" value="Сохранить"/>
  45.         </form>
  46.  
  47.                
  48. </body>
  49.  
  50. </html>
 
 Top
OrmaJever Модератор
Отправлено: 27 Сентября, 2016 - 14:33:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




serg502 пишет:
В чем может быть причина?

в том что у вас дыра на сайте.
Прочитайте и посмотрите примеры http://php.net/manual/ru/mysqli.prepare.php


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
serg502
Отправлено: 27 Сентября, 2016 - 14:42:31
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




А можно попроще объяснить?

По ссылке почитал, но, скажу прямо, не разобрался.
 
 Top
andrewkard
Отправлено: 27 Сентября, 2016 - 15:11:36
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




serg502 пишет:
Но в базе не сохраняются знаки ' и \

Спецсимволы нужно экранировать: http://www[dot]mysql[dot]ru/docs/man/String_syntax[dot]html
serg502 пишет:
А можно попроще объяснить?

https://habrahabr[dot]ru/post/148151/
Prepare:
PHP:
скопировать код в буфер обмена
  1.  
  2. $val1 = 'Stuttgart';
  3. $val2 = 'DEU';
  4. $val3 = 'Baden-Wuerttemberg';
  5.  
  6. /* подготавливаем запрос на вставку строк */
  7. $query = "INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)";
  8. $stmt = mysqli_prepare($link, $query);
  9.  
  10. mysqli_stmt_bind_param($stmt, "sss", $val1, $val2, $val3);
  11.  
  12. /* выполняем запрос */
  13.  
  14. /* закрываем запрос */
  15.  

http://php.net/manual/ru/mysqli-stmt.execute.php
 
 Top
serg502
Отправлено: 27 Сентября, 2016 - 16:17:30
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Я так понял у меня две проблемы:
1. Спецсимволы
2. Уязвимость

Верно?
(Добавление)
А можно в данном случае использовать функцию htmlentities?
 
 Top
Мелкий Супермодератор
Отправлено: 27 Сентября, 2016 - 16:56:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Только уязвимость.


-----
PostgreSQL DBA
 
 Top
serg502
Отправлено: 27 Сентября, 2016 - 17:04:46
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Мелкий пишет:
Только уязвимость.


А с символами как?
 
 Top
Мелкий Супермодератор
Отправлено: 27 Сентября, 2016 - 21:32:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А что символы? Символы как символы. Ничем не отличаются от, например, символа "а"


-----
PostgreSQL DBA
 
 Top
serg502
Отправлено: 28 Сентября, 2016 - 13:34:25
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Понимаю Вашу иронию.

Можно даже и пошутить по этому поводу. Но форум как бы серьезный.
 
 Top
Мелкий Супермодератор
Отправлено: 28 Сентября, 2016 - 13:45:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А я серьёзно. Проблема у вас одна - уязвимость.
А символы как символы. Нет опасных символов, есть ошибка в их обработке и/или отображении. Т.е. уязвимость.
Вот сегодня сочинение понаписал по схожему вопросу: http://ru[dot]stackoverflow[dot]com/a/571274/203622


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB