/ / PHP / Apache Error 500 Problem z instrukcją if - php, apache, mod-fastcgi

Błąd PHP / Apache Error 500 z instrukcją if - php, apache, mod-fastcgi

Mam skrypt php, który pozwala użytkownikom wybrać określone nagrody, gdy osiągną określoną liczbę punktów. Wybierają nagrodę, którą chcieliby, używając pliku select menu rozwijane.

<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>

To menu rozwijane działa dobrze, podobnie jak kod, gdy użytkownik wybierze nagrodę (tj. Wartość wyboru jest liczbą), jednak gdy opuści opcję nagrody jako „Bez nagrody, zachowaj moje punkty.„Zaczynam mieć problemy.

Jeśli kod PHP, instrukcja if z warunkiem $_POST["reward"] != "null" zepsuje PHP, powodując jego zamknięcie, pozostawiając mnie z błędem 500 w przeglądarce i następującym błędem w dziennikach błędów:

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

Kiedy zmienię warunek w instrukcji if na $_POST["reward"] == "null"jednak wydaje się, że kod działa dobrze, nie dając mi żadnych błędów.

Jakieś pomysły?

Odpowiedzi:

1 dla odpowiedzi № 1

Użycie „null” jako jednej z wartości zaznaczenia doprowadzi do nieporozumień. Nie jest tym samym ciągiem o wartości „null” (ponieważ może mieć wartość „Lorem Ipsum ...” lub „John Doe”) niż wartością zerową.

Zamiast tego użyj dowolnej innej wartości, a wszystko będzie łatwe i jasne. Na przykład:

<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>

A potem z PHP możesz sprawdzić wartość:

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

-1 dla odpowiedzi № 2

Czy próbowałeś użyć innej wartości zamiast „null”? Na przykład :

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