使用XAMPP

时间:2015-12-02 06:19:07

标签: php apache post

我想将表单输入处理到MYSQL数据库中,但是我无法让其他文件识别_POST数组中的数据并且不断获得典型的“未定义索引”错误。 我的表格:

    <?php
    $category = '';
    $item = '';
    // Check if form is posted
    if (isset($_POST['item'])){
        // Declare POST'd values into variables
        $category = $_POST['Category'];
        $item = $_POST['item'];
    }
    ?>
    <!-- Item Input form -->
    <form id='additem' method='post' action="">
    <fieldset>
        <legend>Add Item</legend>
        <table>
        <tr>
            <td><label for='Category'>Category: </label></td>
            <td><input type='text' name='Category' list='categories' value='<?php $category;?>' /></td>
                <datalist id='categories'>
                    <option value='Protein'>
                    <option value='Produce'>
                    <option value='Baked Goods'>
                    <option value='Dry/Canned'>
                    <option value='Household'>
                </datalist>
        </tr><tr>
            <td><label for='item'>Name: </label></td>
            <td><input type='text' name='item' value='<?php $item;?>' /></td>
        </tr><tr>
            <td></td><td><input type='Submit' value='Submit' /></td>
        </tr>
        </table>
    </fieldset>
    </form>

当我在这个文件中使用$ _POST时,它工作得非常好但是当我尝试在另一个文件中使用它时,process.php:

<?php
echo $_POST['Category'];
echo '<br>';
echo $_POST['item'];
?>
它给出了: 注意:未定义的索引:第3行的E:\ Documents \ XAMPP \ htdocs \ Website \ process.php中的类别 注意:未定义的索引:第5行的E:\ Documents \ XAMPP \ htdocs \ Website \ process.php中的项目

现在我知道我的_POST数组不是空的,因为我可以在原始表单文件中访问它。如果我将表单操作更改为“process.php”它可以工作,但也会自动将我带到该页面。我想要的是process.php将数据发送到我的数据库,同时表单返回到自己的页面准备好更多输入。我甚至将该示例中的代码复制并粘贴到文件中并试图运行它们,但我得到类似的错误,所以我认为它可能是XAMPP / Apache的一个问题。

为了解决这个问题,我也尝试了this但是post_max_size已经设置为8M,并且根据另一篇帖子,我看到某处我在下面的行中添加了'variables_order =“EGPCS”'。我仍然得到相同的未定义索引。

我的代码有问题吗?是XAMPP / Apache吗?我尝试过全新安装XAMPP,但问题仍然存在。

3 个答案:

答案 0 :(得分:2)

您的$ _POST数组将无法在所有页面上访问。 尽管我已经理解了您的问题,但您正尝试在其他文件上访问$ _POST数组,而这只能在此文件或您发布的文件中使用。 您需要使用SESSION才能使用这些值

POST后分配您的值

$_SESSION["Category"] = $_POST['Category'];

然后在任何其他页面上使用 在页面顶部session_start();,然后打印您的变量,如

echo "Selected Category is " . $_SESSION["Category"] . ".<br>";

答案 1 :(得分:0)

您尚未在表单元素的action属性中指定位置或文件。 action属性中指定的文件可以包含&amp; _POST []全局数组中的表单值。要访问多个页面中的值,您应该使用cookie

答案 2 :(得分:0)

检查

  

类别

因为你只是检查

  

项目

在数组中,如果数组中没有类别,那么它将给出未定义的索引错误,所以请尝试以下方法

$category = '';
$item = '';
 if (isset($_POST['item']) && isset($_POST['Category'])){
    // Declare POST'd values into variables
    $category = $_POST['Category'];
    $item = $_POST['item'];
}

或者如果你想要,你可以在不同的条件下检查它们

$category = '';
$item = '';
if (isset($_POST['item'])){
    // Declare POST'd values into variables
    $item = $_POST['item'];
}

if (isset($_POST['Category'])){
    // Declare POST'd values into variables
    $category = $_POST['Category'];
}