<;李>;变成&;lt;李;gt;添加到数据库时


<li> becomes &lt;li&gt; when adding to database

我有一个脚本,可以在其中向数据库中写入一个新项目。在这个脚本中,我有一个textarea元素,name="omschrijving"。在该文本区域中,用户可以指定<li>元素,我已经用css做了样式。

问题是,当我输入:<李>你好<李>变为:&lt;李>你好&lt/李>在我的数据库中。

我使用一个中等文本类型的列将文本区域的值存储在.中

我的表单代码:

<form action="nieuwproject.php?action=toevoegen" method="post">
                            <fieldset class=""> <!-- Set class to "column-left" or "column-right" on fieldsets to divide the form into columns -->

                                <p>
                                    <label>Naam</label>
                                    <input class="text-input medium-input datepicker" type="text" id="medium-input" name="naam" />
                                </p>
                                <p>
                                    <label>Categorie</label>
                                    <select name="categorie" class="text-input medium-input">
                                       <?php $oObj->getCategorieDropdown(); ?> 
                                    </select>
                                </p>
                                <p>
                                    <label>Opdrachtgever</label>
                                    <input class="text-input medium-input datepicker" type="text" id="medium-input" name="opdrachtgever" />
                                </p>
                                <p>
                                    <label>Omschrijving</label>
                                    <textarea class="text-input textarea wysiwyg" id="textarea" name="omschrijving" cols="79" rows="15"></textarea>
                                </p>
                                <p>
                                    <label>Werkzaamheden</label>
                                    <textarea class="text-input textarea wysiwyg" id="textarea" name="werkzaamheden" cols="79" rows="15"></textarea>
                                </p>
                                <p>
                                    <input class="button" type="submit" value="Submit" />
                                </p>
                            </fieldset>
                            <div class="clear"></div><!-- End .clear -->
                        </form>

我的插入脚本代码:

function addProject() {
    $this->sQuery = "INSERT INTO projecten (naam,opdrachtgever,omschrijving,werkzaamheden,categorie) 
        VALUES ('" . $_POST['naam'] . "','" . $_POST['opdrachtgever'] . "','" . $_POST['omschrijving'] . "','" . $_POST['werkzaamheden'] . "','" . $_POST['categorie'] . "')";
    $this->rResult = mysql_query($this->sQuery);
}

有人知道怎么解决这个问题吗?我知道这个脚本对黑客来说是糖果,所以没有必要指出这一点。

谨致问候,

Michael

当然
只需在代码中找到对数据库的数据执行htmlspecialchars/htmlentities的位置,然后将其删除

我可以向您保证,数据库永远不会根据自己的意愿添加任何符号
更改/添加到数据中的每个符号都是一些PHP代码的结果。

请注意,您的查询格式不正确
您必须格式化它,要么单独格式化每个文本,要么使用准备好的语句
它与li&gt问题无关,但与应用程序错误和漏洞

有关

http://php.net/manual/en/function.htmlentities.phphttp://www.php.net/manual/en/function.htmlspecialchars.php

据我所知,MySQL不会像这样净化你的html,所以你的代码中有一些东西通过htmlentities()htmlspecialchars()传递你的$_POST['omschrijving']。这两个函数中的任何一个都会产生您在数据库中看到的输出。

编辑:

刚刚看到你的评论说这是你的所见即所得编辑器。抢手货