Javascript окно предупреждения для значений текстовой области, используя PHP - PullRequest
0 голосов
/ 17 февраля 2020

При отправке ниже:

single

Это дает мне предупреждение как "эй";

Но при отправке ниже:

multiple

Ничего не предупреждает.

PHP Код:

$text = htmlspecialchars($_POST['tval']);
echo "<script>alert('".$text."');</script>";

HTML Код:

<textarea cols="40" rows="5" type="text" name="tval" placeholder="Type Here..." required></textarea>

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Вы можете использовать литералы шаблонов для написания строк с новыми строками:

$text = htmlspecialchars($_POST['tval']);
echo "<script>alert(`".$text."`);</script>";

из ваших комментариев:

Вы можете использовать split() и map(), чтобы получать разные оповещения для разных строки:

//var text = `<?php echo $text;?>`
var text = `firstline
secondline
thirdline`; //example text for snippet
text.split("\n").map((line)=>{
  alert(line);
});
0 голосов
/ 17 февраля 2020

Проблема в том, что в вашем коде javascript есть разрыв строки, поэтому он выдает ошибку. Вы можете проверить консоль разработчика (F12), чтобы увидеть, что это за ошибка. Это, однако, должно решить проблему:

$text = htmlspecialchars($_POST['tval']);
echo "<script>alert('". json_encode($text) ."');</script>";

json_encode - это быстрый и простой способ преобразовать разрывы строк в строке в формат \ n, который поддерживает окно оповещений. См. Здесь:

https://www.w3schools.com/js/tryit.asp?filename=tryjs_alert2

Обновление: См. Демонстрацию здесь

Обновление 2: Убедитесь, что этот фрагмент кода запускается только в том случае, если ваша форма отправлена, а tval установлен в POST, в противном случае вы получите предупреждение, а PHP будет интерпретировать пустое значение как нулевое. Пример:

if(isset($_POST['tval'])) {
    $text = htmlspecialchars($_POST['tval']);
    echo "<script>alert('". json_encode($text) ."');</script>";
}
...