Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> (PHP) działało, ale przestało...
innyDariusz
post 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).
Go to the top of the page
+Quote Post
aras785
post 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?
Go to the top of the page
+Quote Post
gino
post 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
Go to the top of the page
+Quote Post
trueblue
post 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ś?


--------------------
Go to the top of the page
+Quote Post
innyDariusz
post 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. :-)
Go to the top of the page
+Quote Post
trueblue
post 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.


--------------------
Go to the top of the page
+Quote Post
innyDariusz
post 14.07.2020, 20:01:59
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.07.2020

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 14.07.2020, 19:07:59 ) *
Ponawiam swoje pytanie.

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.
Go to the top of the page
+Quote Post
Mega_88
post 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 ?
Go to the top of the page
+Quote Post
viking
post 14.07.2020, 20:45:24
Post #9





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1113
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 .


--------------------
Go to the top of the page
+Quote Post
innyDariusz
post 14.07.2020, 21:01:33
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.07.2020

Ostrzeżenie: (0%)
-----


Cytat(Mega_88 @ 14.07.2020, 21:14:39 ) *
Strzelam, masz serwer na home.pl ?

Nie, cyber_Folks, do niedawna LinuxPL.
Go to the top of the page
+Quote Post
trueblue
post 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%)
-----


Cytat(innyDariusz @ 14.07.2020, 21:01:59 ) *
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.


--------------------
Go to the top of the page
+Quote Post
innyDariusz
post 15.07.2020, 00:36:44
Post #12





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.07.2020

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 14.07.2020, 22:02:34 ) *
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">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zamówienie</font></h2>
<h3><font color="#9D0000">Prosimy wybrać zamawiane danie:</font></h3>
&nbsp;&nbsp;&nbsp;<label class='radiolabel'><input type="radio" name="selectedcake" value="KL" onclick="calculateTotal()" />&nbsp;&nbsp;&nbsp;1 &nbsp;x &nbsp;<b>Zupa</b>&nbsp;&nbsp; <font color="#9D0000">(10,-)</font></label><br/>
&nbsp;&nbsp;&nbsp;<label class='radiolabel'><input type="radio" name="selectedcake" value="ML" onclick="calculateTotal()" />&nbsp;&nbsp;&nbsp;1 &nbsp;x &nbsp;<b>Kotlet</b> &nbsp;&nbsp;<font color="#9D0000">(15,-)</font></label><br/>
&nbsp;&nbsp;&nbsp;<label class='radiolabel'><input type="radio" name="selectedcake" value="OM" onclick="calculateTotal()" />&nbsp;&nbsp;&nbsp;1 &nbsp;x &nbsp;<b>Deser</b> &nbsp;&nbsp;<font color="#9D0000">(6,-)</font>&nbsp;&nbsp;</label></b><br/>
<font color="#9D0000">albo</font><br/>
&nbsp;&nbsp;&nbsp;<label class='radiolabel'><input type="radio" name="selectedcake" value="trzy" onclick="calculateTotal()" />&nbsp;&nbsp;&nbsp;<b>Wszystkie trzy dania</b>&nbsp;&nbsp;<font color="#9D0000">(25,-)</font></label><br/>
<br/><br>&nbsp;<br/>
<label><font color="#9D0000"><b>+ Napiwek dla kelnera lub kierowcy</b></font>&nbsp;&nbsp; <font color="#9D0000">6,-</font> </label>
</p>&nbsp;<br/>
<label for='dowoz' class="inlinelabel"><font color="#9D0000"><b>Dowoz?</b></font>&nbsp;&nbsp;
<font color="#9D0000">(+ 10,-)</font> &nbsp;&nbsp; <input type="checkbox" id="dowoz" name='dowoz' onclick="calculateTotal()" /></label>

</p>&nbsp;<br/>&nbsp;<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">&nbsp;</td>
<td width="450"><input type="text" name="Email" size="30" tabindex="1"></td>
</tr>
<tr>
<td width="50">&nbsp;</td>
<td width="450">&nbsp;</td>
</tr>
</table>

<h3><font color="#9D0000">Uwagi dla kucharza?</font> </h3>
<textarea name="Komentarz" cols="50" rows="5">&nbsp; </textarea>
<p>&nbsp; <p>
<p>&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;
</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. :-)

Go to the top of the page
+Quote Post
Tomplus
post 15.07.2020, 05:10:40
Post #13





Grupa: Zarejestrowani
Postów: 1 825
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.
Go to the top of the page
+Quote Post
trueblue
post 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?
  1. $mail .= "Wybor: $selectedcake <br />";


Gdzie w formularzu jest pole o nazwie "zupa", "kotlet", czy "deser" i właściwie w jakim celu je "sprawdzasz"?
  1. $KL = sprawdz($_POST['zupa']);


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


--------------------
Go to the top of the page
+Quote Post
innyDariusz
post 15.07.2020, 18:59:03
Post #15





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.07.2020

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 15.07.2020, 08:57:46 ) *
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).
Go to the top of the page
+Quote Post
trueblue
post 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ń:
  1. $mail .= "Wybor: $selectedcake <br />";

na:
  1. $mail .= "Wybor: " . $_POST['selectedcake'] . "<br />";

i daj znać.


--------------------
Go to the top of the page
+Quote Post
innyDariusz
post 16.07.2020, 19:54:26
Post #17





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.07.2020

Ostrzeżenie: (0%)
-----


Cytat(trueblue @ 15.07.2020, 08:57:46 ) *
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. :-)


Cytat(trueblue @ 15.07.2020, 21:08:30 ) *
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 03:17