Skrypt działa lecz po drugim zaakceptowaniu "submit'em" lub enterem


(Pumson99) #1

Witam, dziś zacząłem naukę połączenia PHP z MySQL, zrobiłem już logowanie do konta z pomocą poradnika Mirosława Zelenta. Robiłem trochę po swojemu, nie klepałem literkę w literkę bo nauka nie na tym polega. Wszystko działa praktycznie tak jak powinno ale… ale jak wpisuję jakieś dane w pola logowania i klikam w “submita” żeby się zalogować nic się nie dzieje (panel logowania powinien zmienić się w informacje o profilu) dopiero gdy kliknę jeszcze raz “Zaloguj” wtedy dopiero panel logowania znika a pojawiają się informacje o profilu. Tak samo jest z podaniem niepoprawnych danych, za pierwszym razem nic dopiero później jak kliknę jeszcze raz “Zaloguj” lub enter wtedy wyrzuci komunikat że login lub hasło nieprawidłowe. Poniżej prezentuję moje pliki. Może ktoś spotkał się z czymś takim i wie jak to rozwiązać? Ja już myślę o tym cały wieczór i nic nie wymyśliłem więc postanowiłem szukać pomocy na forach.
index.php:
http://wklejto.pl/501406
zaloguj.php:
http://wklejto.pl/501408
profil.php:
http://wklejto.pl/501412

Bardzo proszę o pomoc i wyrozumiałość, jestem początkujący. Z góry dziękuję :slight_smile:


(Fizyda) #2

Na początek dodaj do form atrybut action, popraw inputy (https://www.w3schools.com/tags/tag_input.asp), nie potrzeba ich domykać wystarczy napisać:

<input name="asd" ... />

lub

<input name="asd" ... >

Być może te dwa małe błędy powodują taki problem, chociaż nie powinny mieć żadnego wpływu.


(Pumson99) #3

Z inputami racja, błąd jest, ale w sprawie tego action to wydaje mi się że jeżeli do pliku index.php wklejam plik zaloguj.php poprzez require to nie powinno być action ponieważ wszystko dzieje się jakby w jednym pliku. Teraz to zmieniłem że dane są wysyłane do pliku zaloguj.php (teraz plik zaloguj.php nie jest wczytywany w indexie)w zaloguj.php dane się przetwarzają i pod koniec następuje przekierowanie do indexu i wszystko działa jak powinno :smiley: Dziękuję za odpowiedź, temat uważam za rozwiązany. :slight_smile:


(Fizyda) #4

Teoretycznie nie powinno być problemu, w praktyce przeglądarka nie wie gdzie ma wysłać formularz, dlatego jak chcesz wysłać do tej samej strony dodaje się action="/" i jest spokój, wszystko jest wiadomo. A tak zgaduj czy programista chciał wysłać do tej strony czy może zapomniał o atrybucie.