我正在尝试回复复选框名称,但是我无法回显复选框的名称,因为所有出现的内容都是' 1'如果选中了复选框或单选按钮。
有谁知道如何更改我的代码,以便用户选择他们是素食者并对花生过敏,"素食,花生过敏"显示在我的页面而不是数字" 1"对于每个选中的项目。
我还希望坐在贵宾区的费用能够与所谓的“#34;是"或"否"。
以下是我的预订页面上的复选框和单选按钮的相关代码:
<?php
session_start();
if (isset($_POST['submit'])) {
$_SESSION['vege'] = isset($_POST['vege']);
}
if (isset($_POST['submit'])) {
$_SESSION['vegan'] = isset($_POST['vegan']);
}
if (isset($_POST['submit'])) {
$_SESSION['peanut'] = isset($_POST['peanut']);
}
if (isset($_POST['submit'])) {
$_SESSION['gluten'] = isset($_POST['gluten']);
}
if (isset($_POST['submit'])) {
$_SESSION['vip'] = isset($_POST['vip']);
}
?>
...
<strong>Dietary Requirements:</strong>
Vegetarian <input type="checkbox" name="vege" value="Vegetarian" <?php if(isset($_POST['vege'])) echo "checked='checked'"; ?>>
Vegan <input type="checkbox" name="vegan" value="Vegan" <?php if(isset($_POST['vegan'])) echo "checked='checked'"; ?>>
Peanut Allergy <input type="checkbox" name="peanut" value="Peanut Allergy" <?php if(isset($_POST['peanut'])) echo "checked='checked'"; ?>>
Gluten Allergy <input type="checkbox" name="gluten" value="Gluten Allergy" <?php if(isset($_POST['gluten'])) echo "checked='checked'"; ?>>
<strong> VIP area* : </strong> <br><br>
Yes (+£5) <input type="radio" name="vip" <?php if (isset($vip) && $vip=="Yes") echo "checked";?> value="Yes">
<br><span id="vip" class="error"><?php echo $vipErr;?></span><br>
No <input type="radio" name="vip" <?php if (isset($vip) && $vip=="No") echo "checked";?> value="No">
这是我目前正在使用的php,其中有回声&#34; 1&#34;当用户在我的感谢页面上做出选择时:
<b>Dietary Requirements: </b><?php echo $_SESSION['vege'];?><?php echo $_SESSION['vegan'];?><?php echo $_SESSION['peanut'];?><?php echo $_SESSION['gluten'];?>
<b>VIP Area Costs: </b>£<?php echo $_SESSION['vip'];?>
答案 0 :(得分:0)
您没有为会话数组分配值!因为你使用了isset()作为一个赋值!然后你分配了1因为isset返回1,因为它们被设置了!
所以试试这个:
<?php
session_start();
if ( !empty($_POST['vege']) )
$_SESSION['vege'] = $_POST['vege'];
if ( !empty($_POST['vegan']))
$_SESSION['vegan'] = $_POST['vegan'];
if ( !empty($_POST['peanut']))
$_SESSION['peanut'] = $_POST['peanut'];
if ( !empty($_POST['gluten']))
$_SESSION['gluten'] = $_POST['gluten'];
if ( !empty($_POST['vip']))
$_SESSION['vip'] = $_POST['vip'];
?>
编辑:
如果您回显会话索引,请检查它们是否设置如下:
<b>Dietary Requirements: </b>
<?php
if(isset($_SESSION['vege']))
echo $_SESSION['vege'];
if(isset($_SESSION['vegan']))
echo $_SESSION['vegan'];
if(isset($_SESSION['peanut']))
echo $_SESSION['peanut'];
if(isset($_SESSION['gluten']))
echo $_SESSION['gluten'];
?>
<b>VIP Area Costs: </b>£<?php if(isset($_SESSION['vip'])) echo $_SESSION['vip'];?>
答案 1 :(得分:0)
基本上你的错误是从isset()函数显示boolean。
如果你想回显价值只需使用
$_SESSION['vegan'] = isset($_POST['vegan']) ? $_POST['vegan']:"";
代码是什么意思?
$x = $trueOrFalse ? $valueIfTrue : $valueIfFalse;
当然执行一些清理:
$_SESSION['vegan'] = htmlspecialchars($_POST['vegan']);
永远无法回应纯粹的用户输入!始终消毒!通过不清理用户输入,您可以轻松运行自定义外部脚本,因为任何HTML标记都可以注入页面,例如<script>
为什么要检查POST['submit']
变量5次?
你只需要检查一次。
if (isset($_POST['submit'])) {
$_SESSION['vege'] = isset($_POST['vege']) ? $_POST['vege'];
$_SESSION['vegan'] = isset($_POST['vegan']) ? $_POST['vegan'];
$_SESSION['peanut'] = isset($_POST['peanut']) ? $_POST['peanut'];
$_SESSION['gluten'] = isset($_POST['gluten']) ? $_POST['gluten'];
$_SESSION['vip'] = isset($_POST['vip']) ? $_POST['vip'];
}