0

我有一个 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>

此下拉菜单工作正常,用户选择奖励时的代码(即选择的值是一个数字)也一样,但是当他们将奖励选项保留为“无奖励,保存我的积分”时。我开始遇到问题.

如果是 PHP 代码,带有条件的 if 语句$_POST['reward'] != 'null'将破坏 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'时,代码似乎运行良好,没有给我任何错误。

有任何想法吗?

4

2 回答 2

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
}
于 2016-04-05T10:22:57.117 回答
-1

您是否尝试过使用另一个值而不是 'null' ?例如 :

<option value="0">No Reward, save my points.</option>
于 2016-04-05T09:59:45.940 回答