co trzeba włączyć na serwerze (apache), aby pusty textarea pojawiał się $_POST? Tu nie działa: http://kimla.de/qcresptest/ wrzucić coś do koszyka, wypełnić formularz zamówienia, NIC NIE WPISYWAĆ w komentarz, zamówić. Pojawi się array $aFields i $aForm. I właśnie przy pustym textarea nie ma w $aForm pola sComment.
U Ciebie, przy pustym komentarzu, nie ma sComment. Zastanawia mnie że u Ciebie na http://kimla.de/qcresptest/ przy pustym komentarzu mamy ulubiony komunikat: Please fill in all required fields
To musi być jakiś drobiazg. W tym momencie poddaję się ale jak coś znajdę to Mikołaja wyślę z informacją :)
Właśnie dlatego jest Fill in required fields, bo nie ma pola sComment w $POST. Zerknij w trash.php na funkcję checkRequiredFields. returns false jeśli nie ma tego pola. Trochę internetu już obszukałem, ale na razie nic nie znalazłem. Sprawę można bezboleśnie obejść "if nie ma pola w $post, to zrób chociaż puste". Ale mi chodzi o principium. Oba serwery u jednego Providera na apache. I jedynym wytłumaczeniem dla mnie jest to, że delikatnie się różnią jakimś ustawieniem. Pytanie - jakim?
Pobrałem ponownie bezpłatną wersje Quick.Cart v6.6 (projekty robię tylko na EXT) Nie widzę funkcji o tej nazwie: checkRequiredFields. Może wprowadziłeś jakąś własną funkcję.
Dzisiaj mija 10 lat od nawiązania mojej oficjalnej współpracy z OpenSolution. W ciągu tych 10 lat nie spotkałem opisanego przez Ciebie problemu.
Z ciekawości złożyłem testowe zamówienie z pustym komentarzem na http://kimla.de/ Poszło. Dostałem nawet podziękowanie :)
W podkatalogu qcresptest takie coś nie przeszło: http://kimla.de/qcresptest/ W takich przypadkach to zaczynam od sprawdzenia czy wersja startowa, domyślna, działa prawidłowo a następnie szukam dale ale w miejscach nieprzewidywalnych.
Widzisz Zbyszku, zamówienie zrobiłeś na qc wersji 4.0 :-) Tam funkcja checkFields nie sprawdza pola sComment.
Twierdzę, że problem NIE leży w skrypcie OS, tylko w ustawieniach Apacza. Jakiś "pstryczek", który wkłada albo nie, pustą textare'ę do $_POST.
Oba skrypty z podanych adresów, to świeżo ściągnięty QC6.6 z dołożonym "Webmaster responsive". ŻADNYCH innych zmian. OK, włożony print_r($aForm) i $aFields aby pokazać przekazywane zmienne. Binarny upload tego samego katalogu na server kimla i na server jsb. Na JSB w $_POST ($aForm) jest pusta textarea (sComment), na KIMLA jej nie ma.
Dlatego pytałem na początku, czy ktoś wie, gdzie się to w Apaczu ustawia. Bo zanim zadałem tu to pytanie, to na sprawdzaniu i szukaniu w skrypcie pół niedzieli mi minęło. Z jednoznacznym wynikiem: na serverze "kimla" pusta textarea nie jest wkładana do $_POST.
Też przypuszczam, że tu jest przyczyna. Napisałem do providera, ciekaw jestem jego odpowiedzi. Oczywiście nie omieszkam się podzielić uzyskaną informacją.
Porównaj ustawienia modułu Suhosin (a jest ich ponad 100) na obu stronach. Suhosin to moduł bezpieczeństwa. Nie jestem jego znawcą ale tryb symulacji powinien być ON raczej tylko na etapie testów.
Na tę chwilę problem został "scedowany" na providera. To ma działać z włączonym suhosinem, a nie z jego symulacją. Oczywiście poprosiłem o podanie przyczyny, gdy tylko zostanie znaleziona. Naturalnie podzielę się tu tą wiedzą. Być może problem istnieje u wielu, jednak nie jest w ogóle widoczny, dopóki w pewnym momencie skrypt (jakikolwiek) nie zacznie "domagać się" pól w $_POST, nawet jeśli są one puste.
Gdzieś w historii updade'ów i upgrade'ów PHP przeczytałem o oszczędności pamięci przy przekazywaniu POST'a. Może tu jest przyczyna? "Reduced POST data memory usage by 200-300%." (http://php.net/ChangeLog-5.php)
Na chwilę obecną w przypadku braku tego pola, QC6x reaguje w dwóch funkcjach w trash.php przy składaniu zamówienia: 1. wspomniana checkFormFields 2. changeMassTxt (gdy wystrychnę na dudka :-) checkFormFields, wtedy ta funkcja daje notice o braku indexu)
Póki co, obszedłem problem dodając pole w przypadku jego braku. W pliku order-step-3 NAD linijką:
Ale to jest rozwiązanie doraźne i mnie nie satysfakcjonujące. Podłubię w tuch funkcjach i postaram się je uodpornić na brak pól. Bo kto wie, może to jest trend w PHP - oszczędność pamięci. W jakiś sposób przyznaję developerom PHP rację: po co przekazywać (i "zaśmiecać" environment) puste pola? Przecież na przykład checkBoxy - jeśli nie są zakliknięte - w $_POST nie istnieją.