Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过javascript/PHP和specialchars通过ajax表单传递MySQL数据_Php_Ajax_Htmlspecialchars - Fatal编程技术网

通过javascript/PHP和specialchars通过ajax表单传递MySQL数据

通过javascript/PHP和specialchars通过ajax表单传递MySQL数据,php,ajax,htmlspecialchars,Php,Ajax,Htmlspecialchars,我最近创建了一个基本的PHP网页,其中列出了从MySQL表中提取的信息,并以各种方式显示这些信息。我希望允许用户在不刷新页面的情况下向表中添加新项、编辑列表中的项以及删除列表中的项(Ajax) 现在是这样,; 要添加/编辑文章,请单击提示popover ajax表单的链接,并通过执行以下函数setEdit(comment)来填充其内容(如果编辑) <a class="popup-button" title="<?php echo $row['comment']; ?>"

我最近创建了一个基本的PHP网页,其中列出了从MySQL表中提取的信息,并以各种方式显示这些信息。我希望允许用户在不刷新页面的情况下向表中添加新项、编辑列表中的项以及删除列表中的项(Ajax)

现在是这样,;

  • 要添加/编辑文章,请单击提示popover 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>
    
  • 提交ajax表单后,由以下php代码处理

     if(isset($_POST['comment_text']))
        $comment=$_POST['comment_text'];
    
        $sql = "INSERT INTO table SET
        comment='$comment'";
    
    问题:我在试图通过1、2、3获取数据库内容时遇到了持续的问题,而不会在新行(单引号或双引号)出现问题。我尝试了无休止的替换标签、htmlspecialchars和nl2br的组合,但没有半点成功——现在它变得如此复杂,编码/解码,以至于我认为有一种更简单、更明显的方式我错过了

    主要问题发生在尝试将数据加载到表单中时,通常是表单出现故障并拒绝填充(通常是由于链接被提取的数据(即单引号或新行)打断),或者表单填充了特殊字符而不是要编辑的纯文本


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

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

    要显示,您应该查看
    htmlentities
    (它为您执行所有引号替换、html编码等操作),以便您的字符串可以安全地显示为纯文本或输入值

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


    否则,;)

    我一直按照您的指示做,花了几个小时研究如何使用htmlentities和类似的方法来确保HTML编码的安全。它适用于链接标题(title=“echo htmlentites()”。它适用于现在可以愉快地存储任何字符的数据库。但是它仍然拒绝接受表单中的字符串(这会破坏编辑)。我希望问题源于我将编码字符串回显到javascript函数调用中,然后在将字符串分配给输入字段值时对字符串进行解码,使其再次变得不安全。例如,1.$cleancomment=HTMLEntitys($row['comment',ENT_QUOTES);…2.onclick='setEdit(echo$cleancomment)“…3.document.getElementById('field-comment')。value=cleancomment;4.在ajax表单中查看,加载时不会返回任何内容(已断开)…我预计第2阶段->第3阶段会发生断开,这会使字符串不安全。如何避免此问题?id='help-us-comment'的元素是什么?是文本区域还是类型为“text”的输入无论
    $cleancomment
    中有什么内容,都应该这样做:
    onclick='setEdit(“”;“
    (如果它是输入,那么它应该可以工作,如果它是文本区域,那么它就不同了……很抱歉回复太晚。我做了一些快速测试,对于文本区域,它看起来也应该像这样工作。(在jQuery中它是不同的,这就是为什么我认为它也在这里)。
     if(isset($_POST['comment_text']))
        $comment=$_POST['comment_text'];
    
        $sql = "INSERT INTO table SET
        comment='$comment'";