Witam. Dostałem za zadanie aktualizacje pliku php, a dokłaniej miałem zmienić i dodać linijki kodu strony, która wyświetla siępo złożeniu zamówienia na sklepie internetowym. Gdy to zrobiłem i wrzuciłem wszystko na serwer okazało się, że wyświetla się biała strona, maile nie dochodzą ani do klienta, ani do biura. Jestem w tym zielony, pracuję jako grafik, lecz zostałem poproszony, aby to zrobić. Proszę o jak najszybszą pomoc, ze względu na to, że bez tego sklep normalnie nie funkcjonuje.
Edit : Na serwerze (CPanel) zainstalowany jest phpMyAdmin, MySql, Wersja serwera Apache 2.4.33, Wersja PHP 5.6.36, Wersja oprogramowania Perl 5.16.3.
Wiesz że z taką ilością informacji jakie podałeś, pomóc może tylko wróżka? Przede wszystkim - dlaczego zgodziłeś się zabrać za coś, o czym nie masz zielonego pojęcia?
<?php
switch ($selectoption) {
case 'przelew':
if ($sum>=4)
{
echo "Cena za zakupy to " . round($brutto,2) . " zł. ";
echo "Przesyłka zostanie nadana po wpłynięciu pieniędzy na nasze konto. Dane do przelewu bankowego:
P.W. Proszki Mleczne Gen. Hallera 11 89-100 Nakło nad Notecią NUMER KONTA: 14 1160 2202 0000 0003 1367 7600 Tytuł przelewu: " . $first_name . " " . $last_name . "
";
}
else
{
$zprzes=$brutto+13;
echo "Cena za zakupy to " . round($zprzes,2) . " zł. ";
echo "(Zakupy: " . round($brutto,2) . " zł + przesyłka: 13 zł)
";
echo "Przesyłka zostanie nadana po wpłynięciu pieniędzy na nasze konto. Dane do przelewu bankowego:
P.W. Proszki Mleczne Gen. Hallera 11 89-100 Nakło nad Notecią NUMER KONTA: 14 1160 2202 0000 0003 1367 7600 Tytuł przelewu: " . $first_name . " " . $last_name . "
";
}
break;
case 'pobranie':
$brutto;
echo "Cena za wysyłkę to " . round($zprzes,2) . " zł. ";
echo "Zakupy: " . round($brutto,2) . " zł ";
echo "Produkty zostaną wysłane w ciągu jednego dnia roboczego.
";
break;
case 'gratis':
echo "Zakupy: " . round($brutto,2) . " zł ";
echo "Przesyłka zostanie nadana po wpłynięciu pieniędzy na nasze konto. Dane do przelewu bankowego:
P.W. Proszki Mleczne Gen. Hallera 11 89-100 Nakło nad Notecią NUMER KONTA: 14 1160 2202 0000 0003 1367 7600 Tytuł przelewu: " . $first_name . " " . $last_name . "
A zaprojektowany został chyba w 2002 roku… Szczerze mówiąc to jakaś programistyczna masakra. Biała strona oznacza błąd serwera. Musisz dostać się do logów błędów PHP albo włączyć wyświetlanie ich na stronie. Wtedy dowiesz się co jest nie tak. Ale szczerze mówiąc całość powinna być przepisana na nowo
Jak zostaniesz poproszony byś wszedł do palącego się budynku sprawdzić czy serwery jeszcze pracują wejdziesz?
Szczerze to bym się zdziwił gdyby sklep internetowy bez możliwości zamawiania działał poprawnie …
Poza tym:
przed wgraniem zmian na serwer należy zawsze je przetestować
skoro nie działa to od razu powinieneś przywrócić poprzedni stan strony, a nie prosić o szybką pomoc
jak się na czymś nie znasz to się za to nie bierz, a zwłaszcza jeśli to coś zarabia pieniądze, tak naprawdę zlecający może Cię obciążyć w tym momencie stratami jakie poniósł przez Twoje zmiany
Jak ktoś się topi, a Ty nie umiesz pływać to raczej nie rzucasz się mu na pomoc bo obaj się utopicie…
Co powinieneś zrobić (wersja racjonalna):
przywrócić stronę do działającej wersji
powiedzieć, że się tego nie podejmiesz bo się na tym nie znasz
Mniej racjonalne co powinieneś zrobić:
włączyć wyświetlanie błędów na stronie w konfiguracji php lub .htaccess zależnie gdzie zostały wyłączone; jeśli nie chcesz ich włączać to sprawdzić plik z błędami
naprawić błędy jakie są w kodzie
EDIT:
Na podstawie kodu i tego co napisałeś obstawiam, że nie dodałeś do końca produktu ponieważ musi on zostać też przesłany metodą post z prawdopodobnie formularza. Błąd raczej będzie w linii 130, a produkty trzeba pewnie też dodawać w pozostałych plikach ponieważ tak jak @hindus napisał kod to masakra chyba z końcówki lat 90.
Moją pierwszą myślą też było to, że wartość jest nullem, ale… to nie powinno niczego wysypać dzięki “inteligencji” PHP. Bo przy dodawaniu null jest traktowany jako 0, a przy str_replace też nie ma problemu. Więcej nie chciało mi się analizować, ale na 99% błąd powie wprost co tam jeszcze nie działa.