我有一个脚本,可以将一个新项目写入我的数据库。 在此脚本中,我有一个名为“omschrijving”的文本区域元素。 在此文本区域中,用户可以指定我使用 css 设置样式的 < li> 元素。
问题是,当我输入:
我使用mediumtext类型列来存储文本区域的值。
我的表单代码:
<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);
}
有人知道如何解决这个问题吗? 我知道这个脚本对黑客来说是甜头,所以没有必要指出这一点。
谨致问候,
迈克尔
最佳答案
当然。
只需在代码中找到对用于数据库的数据执行 htmlspecialchars/htmlentities
的位置并将其删除即可。
我可以向您保证,数据库绝不会自愿添加任何符号。
更改/添加到数据中的每个符号都是某些 PHP 代码的结果。
请注意,您的查询格式不正确。
您必须对其进行格式化,要么单独格式化每个文字,要么使用准备好的语句。
它与您的 li>
问题无关,但与您的应用程序错误和漏洞相关
关于php - 添加到数据库时<li>变成<li>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15026510/