$ _POST输出“striptag”

时间:2012-12-10 15:03:59

标签: php validation

我遇到了$ _POST的问题,我真的不明白...... 我有一个隐藏输入的表单,隐藏输入的值来自数据库。

我这样做:

echo "<input type=\"hidden\" name=\"reactie\" value=\"$naam\" />";

$ naam是一个先前分配的变量: 注意:子数组包含来自用户反应的数据。

foreach($gegevens as $sub_array) {
     $naam = $sub_array['naam'];
}

当我只是回应$ naam时,它给了我应有的价值。

当我想获得隐藏输入的值时,它只输出'striptag'。 当我观察html代码时,隐藏输入的值应该是它应该是什么,并且它不是'striptag'。

输出html:

<input type="hidden" name="reactie" value="school" /> 

使用它来获取隐藏输入的值:

if (isset($_POST['submitted'])) {
    echo $_POST['reactie'];
}

当我将文本放入隐藏输入的值时,它可以工作。为什么我不能在其中放入字符串变量?

发布表格时我应该得到的是“学校”,但我得到的是“striptag”。

此表格的目的(最后):列出所有用户评论,按下按钮时,反应将被删除。 我的整个形式:

<form action = "guestadmin.php" method = "post">

<?php



include ('conData.php');
$sql = new ConData();
$sql->maakConnectie(); 
$gegevens = $sql->haalGegevensOp("select * from gastenboek");

foreach($gegevens as $sub_array) {
    $naam = $sub_array['naam'];
    $email = $sub_array['email'];
    $tekst = $sub_array['tekst'];
    $datum = $sub_array['datum'];

    echo "<div class = \"com\"> 
        <fieldset class= \"field\"> 
        <legend >Geschreven op $datum door $naam </legend>";

    echo "$tekst</fieldset>
        <input name = \"submitted\" type=\"submit\" 
            value = \"verwijder deze reactie\" /></div>";
    echo "<input type=\"hidden\" name=\"reactie\" value=\"$naam\" />";
    echo "<br \>";
}
?>

</form>

如果只有一条评论,则会输出html:

                     Geschreven op 2012-12-09门Arnout             dit是een测试                                 

我真的不明白

1 个答案:

答案 0 :(得分:1)

有两大问题:

  1. 所有条目都以相同的形式输入。这意味着您有多个具有相同名称的表单字段,所有表单字段都相互覆盖。您可以通过将form-tag放在循环中来解决这个问题,以便每个条目都有自己的形式;
  2. 您没有准备输出到html的数据。这意味着您的数据中的<>等符号可能会破坏您的HTML。您可以使用(对于每个数据字段)来解决这个问题:$naam = htmlspecialchars($sub_array['naam']);