Я не могу сохранить следующую строку, введенную в textarea
, из браузера.
a
<br>b
Сервер MariaDB / Apache перестает отвечать на запросы, когда указанная выше строка передается от клиента.
Это JavaScript на стороне клиента
// ...
var description = document.getElementById("txt_manage_remind_desc").value.trim();
// ...
// ...
$.get("PHP/MyAjax.php?page=addNewRemind&remindId="+remindId+"&remindText="+remindText+"&description="+description+"&isEvent="+timeEventIsOn+"&eventTime="+eventTime+"&public_or_private="+public_or_private+"&moveToAfter="+moveToAfter, function(responseText) {
// responseText Usage
}
Это PHP на стороне сервера
// ...
$description = mysqli_real_escape_string($mysqli,$_REQUEST['description']);
// ...
// ...
// Insertion of New Remind
$stmt = $mysqli->prepare("INSERT INTO `reminders` (
`user_id` ,
`reminder` ,
`description` ,
`is_an_event` ,
`event_time` ,
`public_or_private` ,
`created_on` ,
`type` ,
`priority`
)
VALUES (
?,
?,
?,
?,
?,
?,
NOW(),
'user_defined',
?
)");
if(false === $stmt) {
die('prepare() failed: ' . htmlspecialchars($mysqli->error));
}
$rc = $stmt->bind_param("sssssss", $session_id, $remindText, $description, $isEvent, $eventTime, $public_or_private, $newPriority);
if(false === $rc) {
die('bind_param() failed: ' . htmlspecialchars($stmt->error));
}
$rc = $stmt->execute();
if(false === $rc) {
die('execute() failed: ' . htmlspecialchars($stmt->error));
}
else {
echo "saved";
}
Я использовал функцию escape()
из JavaScript для экранирования проблемных символов, которые были сохраненызаписи, но преобразование специальных символов в нежелательные символы.
Я обнаружил, что проблема связана с комбинацией line break
и <
.
Предложите любое решение JavaScript или PHP для решения этой проблемы.