在表单操作中从输入插入变量

时间:2013-11-20 14:58:42

标签: php forms

我有一个表单,用于询问用户他想要查看的列表类型。当按下提交按钮时,我希望能够在地址中显示值列表类型,以便我可以使用GET方法访问它,例如更改正在显示的列表的页面。在这种形式中,我尝试了以下代码:

<?php
    echo '<form method=post action="index.php?operacao=checkList&number=1&pagesize=10&listtype=', $_GET['listtype'] ,'" name="listForm">
    <ol>

        <li><label for="listtype">Type:</label>
        <select name="listtype">
        <option value="default">Select</option>
        <option value="doctor">Doctor</option>
        <option value="nurse">Nurse</option>
        <option value="patient">Patient</option>
        </select></li>

        <div id="form-button">
            <li><input type="submit" value="Submit" onclick="javapopup();"></li>
        </div>

    </ol>
    </form>';
?>

虽然,当我打开表单时,我收到一条错误,指出变量listtype未定义。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

第一次加载此页面时不会设置

$_GET['listtype'],这就是您收到此错误的原因。您需要在使用它之前检查它是否已设置,如果不是,则在该情况下不使用它。在您的情况下,因为您的表单设置为POST,它将永远不会填充$_GET超级全局,这将导致此错误永远不会消失。

echo '<form method=post action="index.php?operacao=checkList&number=1&pagesize=10&listtype=', $_GET['listtype'] ,'" name="listForm">

可能应该像这样:

$listype = (isset($_POST['listtype'])) ? $_POST['listtype'] : '';
echo '<form method=post action="index.php?operacao=checkList&number=1&pagesize=10&listtype=', $listype ,'" name="listForm">

仅供参考,在您的代码中使用原始$_GET$_POST变量时,您可以使用它进行跨站点脚本攻击。所以你应该对这个变量进行消毒。

$listype = (isset($_POST['listtype'])) ? htmlspecialchars($_POST['listtype']) : '';
echo '<form method=post action="index.php?operacao=checkList&number=1&pagesize=10&listtype=', $listype ,'" name="listForm">