(PHP) działało, ale przestało... |
(PHP) działało, ale przestało... |
13.07.2020, 21:13:35
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 13.07.2020 Ostrzeżenie: (0%) |
Kłaniam się.
Akcja rozgrywa się w malutkim sklepie internetowym. A nawet nie sklepie, lecz na stronce z zamówieniem: parę produktów do wyboru (można wybrać tylko jeden z nich, "albo - albo") i checkbox dla zaznaczenia, że nabywca wybiera wysyłkę pobraniową. Do tego pole na adres e-mailowy nabywcy i na ew. komentarz. Tyle. Z pomocą dobrych ludzi w Sieci udało mi się stworzyć taką stronkę, która przez kilka lat skutecznie przyjmowała zamówienia i wysyłała mi wiadomość ze szczegółami (HTML + PHP). Jednak jakiś czas temu zaczęło się psuć: niektóre wiadomości były niekompletne, brakowało im informacji, co wybrał kupujący. A od niedawna "wybrakowane" są już wszystkie wiadomości. Zastanawiam się oczywiście nad przyczyną. Ja niczego nie zmieniałem, wzięło się samo z siebie. Czy ktoś z Was ma jakiekolwiek podejrzenia, dlaczego mój stworzony w bólach skrypcik mógł przestać działać? Będę wdzięczny za sugestie (moja znajomość PHP jest zerowa). |
|
|
14.07.2020, 00:43:34
Post
#2
|
|
Grupa: Zarejestrowani Postów: 859 Pomógł: 177 Dołączył: 29.10.2009 Ostrzeżenie: (0%) |
może na serwerze została podbita wersja php i dlatego dzieją się takie kwiatki?
|
|
|
14.07.2020, 13:17:40
Post
#3
|
|
Grupa: Zarejestrowani Postów: 319 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) |
bez kodu to wróżenie z fusów, jak piszesz że nie działa wysyłanie powiadomień o zakupach to chociaż ten fragment kodu który za to odpowiada.
gino |
|
|
14.07.2020, 13:25:59
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A zmieniałeś może asortyment, tj. coś usuwałeś, a coś innego dodawałeś?
-------------------- |
|
|
14.07.2020, 18:04:49
Post
#5
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 13.07.2020 Ostrzeżenie: (0%) |
Specjalnie nie wkleiłem kodu, żeby skupić Waszą uwagę na (dziwnym dla mnie) fakcie, że działało – a już nie działa, choć zupełnie niczego nie zmieniałem. Mowa o dokładnie tych samych plikach, co na początku.
O zmianach wersji php też pomyślałem, bo znalazłem wzmiankę o tym gdzieś w Sieci. Pogadałem z konsultantem z firmy hostingowej (to cyber_Folks, kiedyś LinuxPL). Okazało się, że użytkownik może sobie zmienić wersję (z racji mojego bladego o tych sprawach pojęcia, zdziwiłem się, że tak można). No i zmieniałem, od 5.6 aż do 7.7, przez kilka wersji pośrednich. Rezultat odmienny od oczekiwanego: teraz brakuje nie tylko informacji o zakupionym asortymencie, ale też znikły dodatkowe komentarze kupującego... Widzę, że bez fragmentów kodu się nie obejdzie. Spróbuję je wkleić jeszcze dziś. Dziękuję za już i, zaliczkowo, za jeszcze. :-) |
|
|
14.07.2020, 18:07:59
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Ponawiam swoje pytanie.
-------------------- |
|
|
14.07.2020, 20:01:59
Post
#7
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 13.07.2020 Ostrzeżenie: (0%) |
|
|
|
14.07.2020, 20:14:39
Post
#8
|
|
Grupa: Zarejestrowani Postów: 360 Pomógł: 34 Dołączył: 20.08.2011 Ostrzeżenie: (0%) |
Strzelam, masz serwer na home.pl ?
|
|
|
14.07.2020, 20:45:24
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Co mówią logi serwera? Tak można sobie strzelać. Tym bardziej że jak sam pisałeś kod najwyższych lotów nie jest .
-------------------- |
|
|
14.07.2020, 21:01:33
Post
#10
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 13.07.2020 Ostrzeżenie: (0%) |
|
|
|
14.07.2020, 21:02:34
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Ale... już odpowiedziałem na nie w ostatnim wpisie: "...zupełnie niczego nie zmieniałem. Mowa o dokładnie tych samych plikach, co na początku". Z mojej strony nie było żadnych zmian. Rozumiem, że asortyment jest na sztywno w plikach, a nie w bazie. Ok. Pokaż kawałek skryptu gdzie jest budowana treść do maila. -------------------- |
|
|
15.07.2020, 00:36:44
Post
#12
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 13.07.2020 Ostrzeżenie: (0%) |
Rozumiem, że asortyment jest na sztywno w plikach, a nie w bazie. Ok. Dokładnie tak. Dobrze, to teraz pokazuję bebechy. Stronkę uprościłem, żeby niepotrzebne elementy nie odwracały uwagi, ale to, co istotne, raczej tutaj jest. Najpierw skrypt php: <?php function sprawdz($zmienna){ $new = htmlspecialchars(stripslashes(strip_tags(trim($zmienna)))); return $new; } $Email = sprawdz($_POST['Email']); $KL = sprawdz($_POST['zupa']); $ML = sprawdz($_POST['kotlet']); $OM = sprawdz($_POST['deser']); $trzy = sprawdz($_POST['trzy']); $suma = sprawdz($_POST['cakePrice']); $dowoz = sprawdz($_POST['dowoz']); $Komentarz = sprawdz($_POST['Komentarz']); $naglowek = 'MIME-Version: 1.0' . "\r\n"; $naglowek .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $naglowek .= 'From: Strona-Zamowienie' . "\r\n"; $mail = "Od kogo: $Email <br /> "; $mail .= "Wybor: $selectedcake <br />"; $mail .= "Dowoz: $dowoz <br />"; $mail .= "Komentarz: $Komentarz <br />"; if (!mail("mail@mail.pl", "Strona Formularz", $mail, $naglowek)){echo "Błąd";} else {echo "Dziękujemy za złożenie zamówienia, smacznego.";} ?> Teraz stronka: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Czas_na_obiad</title> <script type="text/javascript"> var cake_prices = new Array(); cake_prices["KL"]=16; cake_prices["ML"]=21; cake_prices["OM"]=12; cake_prices["trzy"]=31; // Here, we need to take user's the selection from radio button selection function getCakeSizePrice() { var cakeSizePrice=0; //Get a reference to the form id="cakeform" var theForm = document.forms["cakeform"]; //Get a reference to the cake the user Chooses name=selectedCake": var selectedCake = theForm.elements["selectedcake"]; for(var i = 0; i < selectedCake.length; i++) { //if the radio button is checked if(selectedCake[i].checked) { //we set cakeSizePrice to the value of the selected radio button cakeSizePrice = cake_prices[selectedCake[i].value]; break; } } return cakeSizePrice; } //sprawdzenie, czy ma być dowóz function candlesPrice() { var candlePrice=0; //Get a reference to the form id="cakeform" var theForm = document.forms["cakeform"]; //Get a reference to the checkbox id="dowoz" var dowoz = theForm.elements["dowoz"]; //If they checked the box set candlePrice to 10 if(dowoz.checked==true) { candlePrice=10; } //finally we return the candlePrice return candlePrice; } function calculateTotal() { //Here we get the total price by calling our function //Each function returns a number so by calling them we add the values they return together var cakePrice = 0 + getCakeSizePrice() + candlesPrice(); //display the result var divobj = document.getElementById("totalPrice"); divobj.style.display="block"; divobj.innerHTML = "Łaczna wartosć zamówienia "+cakePrice +" zł"; } function hideTotal() { var divobj = document.getElementById("totalPrice"); divobj.style.display="none"; } function Validate(theForm) { if (theForm.Email.value == "") { alert("Prosze wpisac adres poczty elektronicznej"); theForm.Email.focus(); return (false); } return (true); } </script> </head> <body bgcolor="#eeeeee"> <form method="POST" action="mail-cambiado.php" onsubmit="return Validate(this)" name="ofrm" id="cakeform"> <table border="0" width="90%" align="center"><tr><td> <div> <div class="cont_order"> <h2><font color="#9D0000"> Zamówienie</font></h2> <h3><font color="#9D0000">Prosimy wybrać zamawiane danie:</font></h3> <label class='radiolabel'><input type="radio" name="selectedcake" value="KL" onclick="calculateTotal()" /> 1 x <b>Zupa</b> <font color="#9D0000">(10,-)</font></label><br/> <label class='radiolabel'><input type="radio" name="selectedcake" value="ML" onclick="calculateTotal()" /> 1 x <b>Kotlet</b> <font color="#9D0000">(15,-)</font></label><br/> <label class='radiolabel'><input type="radio" name="selectedcake" value="OM" onclick="calculateTotal()" /> 1 x <b>Deser</b> <font color="#9D0000">(6,-)</font> </label></b><br/> <font color="#9D0000">albo</font><br/> <label class='radiolabel'><input type="radio" name="selectedcake" value="trzy" onclick="calculateTotal()" /> <b>Wszystkie trzy dania</b> <font color="#9D0000">(25,-)</font></label><br/> <br/><br> <br/> <label><font color="#9D0000"><b>+ Napiwek dla kelnera lub kierowcy</b></font> <font color="#9D0000">6,-</font> </label> </p> <br/> <label for='dowoz' class="inlinelabel"><font color="#9D0000"><b>Dowoz?</b></font> <font color="#9D0000">(+ 10,-)</font> <input type="checkbox" id="dowoz" name='dowoz' onclick="calculateTotal()" /></label> </p> <br/> <br/> <font color="#008800" size="5"><div id="totalPrice"></div></font> </div> </td></tr> <tr><td> <h3><font color="#9D0000">Prosimy podać adres e-mail, na który ma zostać wysłane potwierdzenie:</font></h3> <table border="0" cellpadding="0" width="550" id="table1"> <tr> <td width="50"> </td> <td width="450"><input type="text" name="Email" size="30" tabindex="1"></td> </tr> <tr> <td width="50"> </td> <td width="450"> </td> </tr> </table> <h3><font color="#9D0000">Uwagi dla kucharza?</font> </h3> <textarea name="Komentarz" cols="50" rows="5"> </textarea> <p> <p> <p> </p> </td></tr> </table> <table border="0" cellpadding="0" width="550" id="table3"> <tr> <td width="563"> <p align="center"> <input type="submit" value="OK, zamawiam." name="subButton" tabindex="50"> </p> </tr> </table> </form> </body> </html> Zapewne są tu składniowe błędy w html-u (już nie pamiętam, czy przepuszczałem to przez jakiś walidator), ale -przypomnę- to kiedyś działało! A w tej chwili na e-mejla dostaję jedynie adres zamawiającego i ew. informację o dowozie, brak natomiast komentarza i najważniejszego: informacji o tym, co wybrał zamawiający. Aha, jeszcze jedno: zdecydowanie wolałbym coś zmienić w ww. kodzie niż zaczynać od zera (np. z PHPMailerem). Stąd moje wysiłki, żeby jednak tę stronkę przywrócić do życia. :-) |
|
|
15.07.2020, 05:10:40
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 834 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
Nie wiem z jakiej przeglądarki korzystasz ale pod CTRL+SHIFT+I możesz Zbadać stronę i tam w zakładce Console możesz zobaczyć jakie błędy pojawiają się podczas wykonywania kodu JS.
Hosting albo na serwerze znajdziesz logi. Patrząc na kod, wina leży raczej po stronie JS. |
|
|
15.07.2020, 07:57:46
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Skąd bierze się zmienna $selectedcake?
Gdzie w formularzu jest pole o nazwie "zupa", "kotlet", czy "deser" i właściwie w jakim celu je "sprawdzasz"?
P.S. Mam wrażenie, że $selectedcake było ustawiane gdy była włączona opcja register_globals. Ten post edytował trueblue 15.07.2020, 08:39:25 -------------------- |
|
|
15.07.2020, 18:59:03
Post
#15
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 13.07.2020 Ostrzeżenie: (0%) |
Skąd bierze się zmienna $selectedcake? Gdzie w formularzu jest pole o nazwie "zupa", "kotlet", czy "deser" i właściwie w jakim celu je "sprawdzasz"? Nie mam pojęcia, do tej rozmowy nie jestem partnerem... ;-) Cały zastosowany przeze mnie kod to znalezisko sprzed 6 lat, które zaadaptowałem do swoich potrzeb, będąc dalekim od zrozumienia, co jest co i dlaczego. (To było coś takiego: https://stackoverflow.com/questions/5353924...-javascript-ht). |
|
|
15.07.2020, 20:08:30
Post
#16
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Zmień:
na:
i daj znać. -------------------- |
|
|
16.07.2020, 19:54:26
Post
#17
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 13.07.2020 Ostrzeżenie: (0%) |
Gdzie w formularzu jest pole o nazwie "zupa", "kotlet", czy "deser" i właściwie w jakim celu je "sprawdzasz"? No właśnie, w jakim? Nie mam pojęcia, tak było w oryginale, z którego ściągnąłem kod. Ale -dążąc do celu głównego, jakim zdecydowanie jest spowodowanie powrotu do funkcjonowania stronki- postanowiłem trochę poeksperymentować i wykasowałem całą sekcję ze sprawdzaniem. Bez jakiejkolwiek szkody dla całości. :-) Zmień: $mail .= "Wybor: $selectedcake <br />"; na: $mail .= "Wybor: " . $_POST['selectedcake'] . "<br />"; i daj znać. Zacytuję klasyka: "Yes, yes, yes!". Działa perfekcyjnie! Ponieważ, jak pisałem, w toku różnych moich chaotycznych działań ratunkowych przestało też funkcjonować pole z komentarzami, zastosowałem tę samą zmianę również do niego. I też zadziałało! Wielkie, wielkie dzięki. Ten post edytował innyDariusz 16.07.2020, 19:55:00 |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 11:54 |