1

我最近整理了一个基本的 PHP 网页,其中列出了从 MySQL 表中提取的信息并以各种方式显示它。我希望允许用户向表中添加新项目,编辑列表中的项目并删除列表中的项目而不刷新页面(Ajax)。

目前是这样;

  • 要添加/编辑文章,请单击提示弹出 ajax 表单的链接,并通过执行以下功能 setEdit(comment) 填充其内容(如果正在编辑);
  •    <a class="popup-button" title="<?php echo $row['comment']; ?>" onclick="setEdit('<?php if($row['comment']){ echo $row['comment']; } else { echo "Enter comment here..."; } ?>');"><?php echo $row['listitem']; ?></a>
    

  • setEdit() 注释如下;
  • function setEdit(editcomment)
    {
          if(editcomment){ document.getElementById('help-us-comment').value=editcomment; }
    }
    

  • 然后,在提交 ajax 表单后,由以下 php 代码处理;
  •  if(isset($_POST['comment_text']))
        $comment=$_POST['comment_text'];
    
        $sql = "INSERT INTO table SET
        comment='$comment'";
    

    问题:我一直在尝试通过 1、2、3 获取数据库内容,而不会在新行、单引号或双引号中出现问题。我已经尝试了无数次替换标签、htmlspecialchars 和 nl2br 的组合,但没有一半成功 - 现在它已经到了如此复杂和编码/解码的地步,我假设有一种更简单和明显的方式我'米失踪。

    主要问题发生在尝试将数据加载到表单中时,通常是表单翻倒并拒绝填充(通常是链接被提取的数据破坏,即单引号或新行)或表单填充特殊字符而不是纯文本进行编辑。

    我已尝试尽可能详细地介绍,但如果需要更多信息,我很乐意提供。如果这是一个明显的修复/错误,我也很抱歉,我是个白痴。

    4

    1 回答 1

    0

    这里有两个问题:存储和显示。

    要显示,您应该注意htmlentities是否是安全的 HTML(它会为您完成所有引号替换、html 编码等),以便您的字符串可以安全地显示为纯文本或输入值。

    要存储数据,您应该清理查询。您可以使用mysqli绑定参数,或使用mysql_real_escape_string手动转义您的输入。

    否则,向 Bobby Tables 打个招呼;)

    于 2012-07-11T13:14:49.660 回答