У меня есть простой скрипт комментария, который позволяет добавлять / редактировать / удалять комментарии. У меня проблема со спецсимволами.
Если var currentMessage содержит 'или ", то код прерывается.
Я сохраняю комментарии в БД следующим образом:
$ Message = clean_data ($ _ POST ["txtmessage"]);
Затем выполните типичное сохранение mysqli_query ....
function clean_data($input) {
$input = trim(htmlentities(strip_tags($input,",")));
if (get_magic_quotes_gpc())
$input = stripslashes($input);
$input = stripslashes($input);
$input = htmlspecialchars($input, ENT_IGNORE, 'utf-8');
$input = trim($input);
$sqllink = new mysqli(MySQL_Host, MySQL_UserName, MySQL_Password, MySQL_Database);
$input = mysqli_real_escape_string($sqllink, $input);
no_magic_quotes($input);
$input = str_replace("'", "'", $input);
$input = str_replace("&", "&", $input);
$input = str_replace('"', """, $input);
$input = strip_tags($input);
return $input;
}
Данные, сохраненные в MySQL, выглядят следующим образом: let's do it !
Моя кнопка редактирования выглядит так:
<button id="BtnEdit_<?php echo $r_c['CommentID']; ?>" class="btn btn-xs btn-warning" onClick="showEditBox(this,<?php echo $r_c['CommentID']; ?>)" name="edit"><i class="fas fa-edit"></i> <? echo _("To Edit"); ?></button>
Мое сообщение отображается так:
<div class="message-content"><? echo $r_c['Message']; ?></div>
Если я показываю специальные символы в php echo, тогда javascript не работает. Если я уберу все "или" ", тогда все в порядке. Но это не практично.
function showEditBox(editobj,id) {
$('#BtnEdit_'+ id).hide();
$('#frmAdd').show();
var currentMessage = $("#message_" + id + " .message-content").html();
var editMarkUp = '<input type="text" class="form-control input-sm" name="txtmessage" id="txtmessage_'+id+'" value="'+currentMessage+'"><br><div class="btn-group pull-left"><button class="btn btn-xs btn-success" name="ok" onClick="callCrudAction(\'edit\','+id+')"><i class="fas fa-check"></i> <? echo _("Save"); ?></button> <button class="btn btn-xs btn-default" name="cancel" onClick="cancelEdit(\''+currentMessage+'\','+id+')"><i class="fas fa-times"></i> <? echo _("Cancel"); ?></button></div>';
$("#message_" + id + " .message-content").html(editMarkUp);
}
Данные отображаются следующим образом: давайте сделаем это! (было бы лучше, если бы это было - давайте сделаем это!)
Кнопка редактирования даже не работает, если в комментарии есть '.