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 が中断され、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

select の値の 1 つとして「null」を使用すると、混乱が生じます。値が '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 に答える