在将HTML标记放入数据库之前将其删除

时间:2014-03-08 02:38:41

标签: php html

我有一个发布系统,但我不希望人们在发布时能够使用HTML标记,这里是数据库查询的代码。

 if (!empty($post1) && !empty($title)) {
  strip_tags($post1);
    // Only set the picture column if there is a new picture
$query = "INSERT INTO kaoscraft_posts (`username`, `rank`, `gender`, `picture`, `post_date`, `title`, `post`, `category`) VALUES ('$username', '$rank', '$gender', '$picture', NOW(), '$title', '$post1', '$category')";
    mysqli_query($dbc, $query);

这是表格

  <form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MM_MAXFILESIZE; ?>" />
    <fieldset>
      <legend>Post Here:</legend>
        <label type="hidden" for="title">Title:</label><br />
        <input type="text" name="title"><br /><br />
      <select id="category" name="category">
        <option value="G" <?php if (!empty($category) && $category == 'G') echo 'selected = "selected"'; ?>>General</option>
        <option value="Srv" <?php if (!empty($category) && $category == 'G') echo 'selected = "selected"'; ?>>Server</option>
        <option value="C" <?php if (!empty($category) && $category == 'G') echo 'selected = "selected"'; ?>>Clan</option>
        <option value="SA" <?php if (!empty($category) && $category == 'G') echo 'selected = "selected"'; ?>>Staff App</option>
        <option value="V" <?php if (!empty($category) && $category == 'G') echo 'selected = "selected"'; ?>>Videos</option>
      </select><br /><br />
      <label type="hidden" for="post1">Post Content:</label><br />
      <textarea rows="4"  name="post1" id="post1" cols="50"></textarea><br />
    </fieldset>
    <input type="submit" value="Save Post" name="submit" />     
  </form>

2 个答案:

答案 0 :(得分:0)

PHP有一个用于此目的的内置函数:strip_tags。来自他们网站的例子:

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>

所以你只需添加strip_tags($ post1);在将其添加到数据库之前(或期间)。

答案 1 :(得分:0)

在您致电$post1后,您需要重新指定strip_tags

$post1 = strip_tags($post1);

此外,除非您在其他地方有一些可靠的SQL转义代码,否则 强烈 建议您从SQL注入中保护代码。如果您直接将用户输入放入SQL查询中,他们可能会输入恶意SQL语句。