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)
你在第二页的标题之前输出,这会抛出类似于:
警告: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)