提交PHP时未定义的索引错误

Osc*_*car 0 php variables indexing undefined

我正在设计餐馆网站的表格,允许用户预订晚餐预订,每个字段都经过验证(除了复选框),如果用户在所有字段中输入了正确的信息,他们会被发送到感谢页面显示他们的预订细节.

我的代码中存在与我网站上的复选框有关的问题,如果用户点击提交而未填写必填字段,则会在屏幕顶部显示以下错误:

"Notice: Undefined index: vege in /home/users/2014/xxx/public_html/xxx/index.php on line 17

Notice: Undefined index: vegan in /home/users/2014/xxx/public_html/xxx/index.php on line 20

Notice: Undefined index: peanut in /home/users/2014/xxx/public_html/xxx/index.php on line 23

Notice: Undefined index: gluten in /home/users/2014/xxx/public_html/xxx/index.php on line 26"
Run Code Online (Sandbox Code Playgroud)

这是我的预订页面的代码:

<?php
session_start();

if ( isset($_POST['vege'])) 
    $_SESSION['vege'] = $_POST['vege'];

if ( isset($_POST['vegan'])) 
    $_SESSION['vegan'] = $_POST['vegan'];

if ( isset($_POST['peanut'])) 
    $_SESSION['peanut'] = $_POST['peanut'];   

if ( isset($_POST['gluten'])) 
    $_SESSION['gluten'] = $_POST['gluten'];

?>

...

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

...

<strong>Dietary Requirements:</strong>
<br><br>
Vegetarian <input type="checkbox" name="vege" value="Vegetarian" <?php if(isset($_POST['vege'])) echo "checked='checked'"; ?>>
<br><br>
Vegan <input type="checkbox" name="vegan" value="Vegan" <?php if(isset($_POST['vegan'])) echo "checked='checked'"; ?>>
<br><br>
Peanut Allergy <input type="checkbox" name="peanut" value="Peanut Allergy" <?php if(isset($_POST['peanut'])) echo "checked='checked'"; ?>>
<br><br>
Gluten Allergy <input type="checkbox" name="gluten" value="Gluten Allergy" <?php if(isset($_POST['gluten'])) echo "checked='checked'"; ?>>
<br><br><br>

<input type="submit" id="submit" name="submit" value="Submit">
Run Code Online (Sandbox Code Playgroud)

即使显示了这些错误,代码也会履行应有的职责.有谁知道如何修复我的代码以防止错误消息显示?如果我需要显示更多代码以便清楚,我可以为您更新我的问题.谢谢!


编辑

现在删除了错误,但是感谢页面上没有正确回显复选框,因为无论用户选择什么,所有的饮食要求都得到了回应:(有没有办法我可以在下面更改我的代码,以便只检查复选框被回应?

<b>Dietary Requirements: </b>
<br><br>
<?php
    if(isset($_SESSION['vege']))
        echo $_SESSION['vege'] . '<br>' ;

    if(isset($_SESSION['vegan']))
        echo $_SESSION['vegan'] . '<br>' ;

    if(isset($_SESSION['peanut']))
        echo $_SESSION['peanut'] . '<br>' ;

    if(isset($_SESSION['gluten']))
        echo $_SESSION['gluten'] . '<br>' ;
?>
Run Code Online (Sandbox Code Playgroud)

Fun*_*ner 5

你在第二页的标题之前输出,这会抛出类似于:

警告:session_start():无法发送会话缓存限制器 - 已在第9行的/path/to/file.php中发送的标头(在/path/to/file.php:4处开始输出)

上面<?php没有任何东西- 没有HTML,空格等.

你也需要session_start();在那里.

session_start(); 需要在使用会话的所有文件中.

<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

session_start();

    if(isset($_SESSION['vege']))
        echo $_SESSION['vege'] . '<br>' ;

    if(isset($_SESSION['vegan']))
        echo $_SESSION['vegan'] . '<br>' ;

    if(isset($_SESSION['peanut']))
        echo $_SESSION['peanut'] . '<br>' ;

    if(isset($_SESSION['gluten']))
        echo $_SESSION['gluten'] . '<br>' ;
?>

<b>Dietary Requirements: </b>
<br><br>
Run Code Online (Sandbox Code Playgroud)