if语句

时间:2016-04-05 09:52:30

标签: php apache mod-fastcgi

我有一个PHP脚本,允许用户在达到一定数量的积分时选择某些奖励。他们使用select下拉菜单选择他们想要的奖励。

<select name="reward" id="reward">
    <option value="null">No Reward, save my points.</option>
    <option value="1" data-type="percent" data-value="10">Option 1: 10% off [10 points]</option>
    <option value="2" data-type="money" data-value="500">Option 2: £5.00 off [15 points]</option>
    <option value="4" data-type="money" data-value="1500">Option 3: £15.00 off [45 points]</option>
    <option value="5" data-type="percent" data-value="98">Option 4: 98% off [500 points]</option>
</select>

此下拉列表工作正常,用户选择奖励时的代码(即,选择的值是数字),但是当他们将奖励选项保留为&#34; No Reward时,保存我的观点。&#34;我开始遇到问题。

如果PHP代码,带有条件$_POST['reward'] != 'null'的if语句将破坏PHP,导致它退出,在浏览器中留下错误500并在错误日志中出现以下错误:

(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
Premature end of script headers: index.php

然而,当我将if语句中的条件更改为$_POST['reward'] == 'null'时,代码似乎运行正常,没有给我任何错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用'null'作为select的值之一将导致混淆。不是一个值为'null'的字符串(因为它可能具有值'Lorem Ipsum ...'或'John Doe')而不是null值。

而是使用任何其他价值,事情将变得简单明了。例如:

<select name="reward" id="reward">
    <option value="0">No Reward, save my points.</option>
    <option value="1" data-type="percent" data-value="10">Option 1: 10% off [10 points]</option>
    <option value="2" data-type="money" data-value="500">Option 2: £5.00 off [15 points]</option>
    <option value="4" data-type="money" data-value="1500">Option 3: £15.00 off [45 points]</option>
    <option value="5" data-type="percent" data-value="98">Option 4: 98% off [500 points]</option>
</select>

然后,从PHP中你可以检查值:

if ($_POST['reward'] != '0')
{
   // your code here
}

答案 1 :(得分:-1)

您是否尝试使用其他值而不是“null”?例如:

<option value="0">No Reward, save my points.</option>