Форма ввода для любых символов

221
10 декабря 2016, 10:34

Вопрос: мне нужно сделать поле для ввода текста (типа как в input text), чтобы при этом туда можно было записывать абсолютно любые символы, html-тэги, кавычки и тому подобное. И после нажатия submit всё это отправлялось в mysql-таблицу без изменений. Какой есть наиболее простой способ для этого? Спасибо.

Answer 1

Текстовое поле input и текстовая область textarea позволяют вводить любые символы. Проблемы могут быть только при записи в базу данных и при повторном редактировании данных.

1.Если вы пользуетесь каким-нибудь современным расширением, например, PDO вам не требуется ничего специально экранировать, так как вы вставляете присланный текст через плейсхолдеры, как есть, строкой

<?php
  try {
    $pdo = new PDO(
      'mysql:host=localhost;dbname=test',
      'root',
      '',
      [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
    $query = "INSERT INTO tbl
              VALUES (NULL, :name)";
    $news = $pdo->prepare($query);
    $news->execute(['name' => $_POST['name']]);
    header("Location: ".$_SERVER['PHP_SELF']);
  }
  catch (PDOException $e) {
    echo "Ошибка выполнения запроса: " . $e->getMessage();
  }
?>
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset='utf-8'>
</head>
<body>
  <form>
    Имя: <input type="text" name="name" value=""><br />
    <input type="submit" value="Записать">
  </form>
</body>
</html>

2.Проблемы могут быть, если вы выводите текст на редактирование или подставляете только что введенный текст в атрибут value текстового поля или между тэгами <textarea> и </textarea>. В этом случае чтобы избежать искажения текст пропускают через функцию htmlspecialchars(), которая преобразует все интерпретируемые символы в HTML-безопасную форму

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset='utf-8'>
</head>
<body>
  <form>
    Имя: <input
            type="text"
            name="name"
            value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES); ?>"><br />
    <input type="submit" value="Записать">
  </form>
</body>
</html>
READ ALSO
Как сделать произвольный placeholder? [закрыто]

Как сделать произвольный placeholder? [закрыто]

Как можно правильно реализовать такой placeholder? Или же это обычный блок с absolute который пропадает при клике?

228
Почему не открывается модульное окно?

Почему не открывается модульное окно?

Я в js не силен только изучаю и ничего не понимаю пока чтомб кто подскажет почему не открывается модульное окно? брал код с этого сайта https://dojotoolkit

247
При активации 6-ти checkbox скрыть старые дивы и показать новый [закрыто]

При активации 6-ти checkbox скрыть старые дивы и показать новый [закрыто]

У меня есть шесть дивов и на них есть чекбоксыКак сделать, чтобы эти дивы скрывались когда на всех стоят галочки, а появился один большой новый?

188