PHP会话回显复选框和单选按钮

时间:2014-11-20 17:12:23

标签: php forms variables echo

我正在尝试回复复选框名称,但是我无法回显复选框的名称,因为所有出现的内容都是' 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'];?>

2 个答案:

答案 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'];
}