通过带有specialchars的javascript / PHP通过ajax表单传递MySQL数据

时间:2012-07-11 12:35:21

标签: php ajax htmlspecialchars

我最近把一个基本的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的组合,没有成功的一半 - 现在它已经达到了如此复杂和编码/解码的程度,我现在假设我有一个更简单明了的方式我失踪了。

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

    我试图尽可能多地详细说明,但如果需要更多细节,我很乐意提供。如果这是一个明显的修复/错误,我也是道歉。我是个白痴。

    1 个答案:

    答案 0 :(得分:0)

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

    要显示,您应该htmlentities查看makes it safe HTML(它会为您更新所有引号,html编码等),以便您的字符串可以安全地显示为纯文本,或作为输入的价值。

    要存储数据,您应该清理查询。您可以使用mysqlibind parameters,或使用mysql_real_escape_string手动转义输入。

    否则,say hi to Bobby Tables;)