Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Raz na jakiś czas zdarza się, że...
Forum PHP.pl > Inne > Hydepark
Dejmien_85
I znów się to zdarzyło...

Siedzę k... 3 godziny i się zastanawiam dlaczego po kliknięciu w przycisk "submit" dane nie wysyłają się za pomocą metody POST, tylko za pomocą GET.

Tak, to formularz logowania. Nie był to zwykly plik .php, tylko najnowsza wersja frameworka FuelPHP.

Męczę się, męczę, przez 3h przeglądam kod, czytam dokumentację, zaglądam do silnika FW, przeglądam dokumentację, głowię się, przeglądam dokumentacje, męczę "wuja Google" myslę sobie: "Ale jesteś ŁOOOŚŚŚŚ, danych metodą POST przesłać nie możesz, Boże, czowieku, zmień zawód!".

I sie męczę, męczę... I nagle zauważam... iż formularz stworzyłem za pomocą metody Form::open() (choć i tak wytarczyłoby samo <form action="" method="post">), a kilka linijek wyżej znalazł się kod HTML z TwitterBootstrapa o treści "<form>" - wkleiłem gotowca przy tworzeniu szablonu i nie usunąłem tego kodu, nie zauważyłem, przeoczyłem...
<mówiZOgromnąFrustracjąWGłosie>Tak, przez 3 godziny nie zauważyłem kodu HTML o treści <form> (sic!), który sprawiał, że mój formularz działał nie tak, jak powinien.</mówiZOgromnąFrustracjąWGłosie>

I teraz mała refleksja - debugging zaczynamy od rzeczy najprostszych! Ufff. Nie sądziłem, że kiedyś przypłapię się na tak błahej sprawie. Na formularzu, <mówiZZatrważającymŻalem>Boże</mówiZZatrważającymŻalem>. brzydal.gif

Może Ty pamiętasz podobne sytuacje swojej "ślepoty"? Jeśli tak, wtedy pisz śmiało! ; )
sazian
miałem ostatnio podobną przypadłość, tylko że u mnie nie wiedzieć czemu nagle w action był wymagany pełen adres(http://domena/plik.php). Przy podaniu tylko nazwy pliku w tajemniczych okolicznościach formularz wysyłał się tylko GET'em
Adi32
Przeniosłem projekt z produkcji na deva (czyli wrzuciłemw szystko do katalogu dev na który była przekierowana subdomena)

Podpiąłem nowy model (M). Na nowym module typu Notification (moduł od powiadomień w tle) wykonuje jakieś testowe akcje a on zwraca mi błąd, że nie odnaleziono tabeli notifications w bazie danych.
Szybko stwierdzam, że skrypt łączy się do bazy danych od produkcji, gdzie jeszcze tej tabeli nie ma ale... jak to możliwe?
Myśle, kuurde configi poprzerabiałem, ale sprawdzam poraz kolejny, sprawdzam w bazie danych czy faktycznie taka tabela istnieje, wszystko ok.
Przeszukuje cały kod przez funkcje IDE w poszukiwaniu parametrów połączenia do bazy produkcyjnej i NIC.
Skoro nazwa produkcyjnej bazy danych w kodzie NIE wystepuje to jakim cudem skrypt łączy mi się do produkcyjnej bazy?

Odpowiedź okazała się banalna... Ciekaw jestem czy ktoś rozkmini o co chodziło...

Po mocnym "facepalmie"...

  1. '.:/sciezka_do_domeny/public_html/' . PATH_SEPARATOR .
  2. dirname(__FILE__)
  3. );

zamiast
  1. '.:/sciezka_do_domeny/public_html/dev/' . PATH_SEPARATOR .
  2. dirname(__FILE__)
  3. );
Sephirus
Ludzie to tylko ludzie - mamy prawo do błędów... z moim triple facepalm'em spotkałem się już jakiś kawałek czasu temu ale pamiętam go doskonale bo straciłem też około 3h na szukaniu błędu.

Nie pamiętam już co dokładnie tworzyłem, pamiętam jedynie, że skrypt liczył jakieś kwestie finansowe. Mniej więcej w 1/3 kodu znajdywała się pętla FOR. Nie wykonywała się ona tak jak należy i wszystko po niej się chrzaniło w taki sposób, że wyniki całej operacji były albo ciągle takie same albo zupełnie z czapy smile.gif

Po debugowaniu, analizie stwierdziłem, że ta jedna jedyna pętla nie działa - nie udało mi się jednak odkryć dlaczego. W końcu po jakichś 3h napisałem cały kod od nowa, który oczywiście nie ruszył od razu bez jakichś tam poprawek. Straciłem na to jakieś 3/4 dnia pracy.

Po jakimś czasie przeglądając repozytorium w poszukiwaniu czegoś natknąłem się na poprzednią (tą niedziałającą) wersję tego skryptu i przewijając go za pierwszym razem od razu ujrzałem coś takiego:

  1.  
  2. // kod...
  3.  
  4. for($rIndex = 0; $rIndex < $rCount; $rIndex++); {
  5. // kod...
  6. }
  7.  
  8. // kod...


od tej pory dobrze patrzę gdzie "niechcący" stawiam średniki smile.gif
buliq
@up nice one biggrin.gif
freemp3
Średnik za pętlą - klasyk wink.gif
Kiedyś na zajęciach koledze też z nieznanych przyczyn program sie wieszał, wszyscy jak spojrzeli na kod od razu zauważyli średnik po pętli:
Kod
while(1);{
// reszta kodu
}

W pętli oczywiście była instrukcja przerwania wink.gif Po klikuminutowych męczarniach prowadzący zlitował się i wskazał miejsce błędu.

Wracając do rzeczy ostatnio pisałem komunikację z aplikacją mobilną przez http. Autoryzacja itp wszystko cacy, ale aplikacja wywalała cały czas informacje, że przesłane dane są błędne. Sprawdzałem wszystko ze specyfikacją, wygląda ok. Przesłałem żadania do firmy robiącej aplikacje też stwierdzili, że jest ok. Po dłuższej analizie przez nich okazało się, że w jednym z kluczy tablicy, którą przesyłałem jest literówka. Mianowicie przesyłałem klucz movieUrl a był wymgany movieURL. Na znalezienie "błędu" poszło jakieś 4 godziny.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.