Awarie i bezpieczeństwo

Błąd logowania do wp-admin – pętla logowania, brak maila resetującego

Błąd logowania do wp-admin – pętla logowania, brak maila resetującego

Wpisujesz login i hasło, klikasz „Zaloguj się”, strona mruga i wracasz na ten sam formularz. Bez komunikatu o błędzie, bez wyjaśnienia. Klikasz „Nie pamiętasz hasła?”, mail nie przychodzi. Po dziesięciu minutach zaczynasz się zastanawiać, czy ktoś przejął Twoją stronę.

Zwykle nie przejął. W mojej praktyce brak dostępu do panelu WordPressa w zdecydowanej większości przypadków wynika z czterech rzeczy: ciasteczek, pamięci podręcznej, wtyczki bezpieczeństwa albo niedziałającej poczty. Poniżej pokazuję ścieżkę diagnostyczną, którą sam przechodzę krok po kroku, od najprostszych rzeczy do grzebania w bazie danych. Każdy krok kończy się konkretnym wnioskiem: albo to jest przyczyna, albo idziesz dalej.

Cztery scenariusze, które wyglądają podobnie

Zanim zaczniesz naprawiać, nazwij dokładnie to, co widzisz. To skraca diagnozę o połowę.

  • Pętla logowania. Formularz przyjmuje dane, strona się przeładowuje i znowu widzisz formularz. Brak komunikatu o błędnym haśle. To najczęściej ciasteczka albo cache.
  • Błąd: nieprawidłowa nazwa użytkownika lub hasło. WordPress odpowiada konkretnie. Tu problem leży po stronie danych logowania albo konta użytkownika.
  • Komunikat o zablokowanych ciasteczkach. WordPress wprost informuje, że przeglądarka nie przyjmuje ciasteczek. Bardzo wąski trop, łatwy do sprawdzenia.
  • Logujesz się poprawnie, ale panel jest pusty albo wyrzuca Cię z powrotem. To już kwestia uprawnień, wtyczek lub motywu.

Jeśli zamiast formularza logowania widzisz całkiem inny ekran, na przykład białą stronę albo komunikat o błędzie krytycznym, to inna historia. Opisałem ją osobno we wpisach o białej stronie śmierci oraz o błędzie krytycznym WordPressa.

Zanim zaczniesz: pięć minut przygotowania

Nie zaczynaj od zmieniania plików. Najpierw upewnij się, że masz drogę odwrotu.

  • Sprawdź, czy masz dostęp do panelu hostingu. Będzie potrzebny do menedżera plików, FTP i phpMyAdmin. Jeśli nie masz do niego hasła, zacznij od jego odzyskania, bo bez tego część kroków odpadnie.
  • Zrób kopię zapasową. Pliki i baza danych. Większość hostingów w Polsce ma to w panelu jako jeden przycisk.
  • Zanotuj, co zmieniałeś w ciągu ostatnich 48 godzin. Aktualizacja wtyczki, zmiana adresu na HTTPS, przeniesienie strony, instalacja wtyczki bezpieczeństwa, zmiana ustawień w Cloudflare. To zwykle jest winowajca.

Krok 1: wyklucz przeglądarkę

Brzmi banalnie, ale połowa zgłoszeń kończy się właśnie tutaj.

Otwórz okno prywatne, czyli tryb incognito, i wejdź na adres twojadomena.pl/wp-login.php. Jeśli logowanie działa w incognito, a nie działa w normalnym oknie, przyczyną są dane zapisane w przeglądarce. Wyczyść ciasteczka i pamięć podręczną dla swojej domeny, wyloguj się ze wszystkich sesji i spróbuj ponownie.

Sprawdź też trzy rzeczy:

  • Czy wchodzisz na dokładnie ten adres, pod którym działa strona. Wersja z www i bez www to dla ciasteczek dwie różne domeny.
  • Czy adres zaczyna się od https://, jeśli strona ma certyfikat. Logowanie przez http na stronie wymuszającej HTTPS to klasyczna przyczyna pętli. Więcej o tym, jak zachowuje się strona z problemami certyfikatu, piszę we wpisie o braku certyfikatu SSL.
  • Czy przeglądarka ma włączone ciasteczka i czy nie blokuje ich rozszerzenie do prywatności. Wyłącz tymczasowo blokery i spróbuj jeszcze raz.

Test kontrolny: spróbuj zalogować się z innego urządzenia i z innej sieci, na przykład z telefonu na transmisji komórkowej. Jeśli tam działa, problem jest lokalny i dalej możesz nie szukać.

Krok 2: pętla logowania i ciasteczka sesji

Jeśli wracasz na formularz także w incognito i z innego urządzenia, WordPress nie potrafi zapisać ciasteczka sesji. Dzieje się tak zwykle wtedy, gdy adres strony zapisany w bazie nie zgadza się z adresem, pod którym faktycznie jesteś.

Najpierw sprawdź plik wp-config.php przez FTP lub menedżera plików w panelu hostingu. Szukaj linii z WP_HOME i WP_SITEURL. Jeśli są, muszą zawierać dokładnie ten sam adres, którego używasz w przeglądarce, razem z protokołem i z www lub bez.

define('WP_HOME', 'https://twojadomena.pl');
define('WP_SITEURL', 'https://twojadomena.pl');

Jeśli tych linii nie ma, adres siedzi w bazie danych. Wejdź w phpMyAdmin, otwórz tabelę wp_options i sprawdź wiersze siteurl oraz home. Uwaga: przedrostek tabeli nie zawsze brzmi wp_, bywa losowy, więc kieruj się nazwą options na końcu.

Gdy adresy się zgadzają, a pętla trwa, dodaj tymczasowo do wp-config.php, powyżej linii z komentarzem o zaprzestaniu edycji:

define('COOKIE_DOMAIN', false);

To wyłącza sztywne przypisanie ciasteczka do domeny i bardzo często rozwiązuje pętlę po migracji albo po przejściu na HTTPS. Jeśli pomogło, zostaw tę linię albo uporządkuj adresy w bazie i ją usuń.

Sprawdź jeszcze, czy w wp-config.php nie ma wpisu FORCE_SSL_ADMIN ustawionego na true na stronie, która nie ma działającego certyfikatu. To gwarantowana pętla.

Krok 3: cache i CDN

Druga najczęstsza przyczyna pętli. Wtyczka cache albo serwer proxy zapisuje w pamięci podręcznej stronę logowania razem z jednorazowym tokenem bezpieczeństwa. Token wygasa, a WordPress odrzuca formularz i odsyła Cię z powrotem.

Co zrobić:

  • Wyczyść całą pamięć podręczną: wtyczkę cache, cache po stronie serwera w panelu hostingu, cache w Cloudflare lub innym CDN.
  • Jeśli korzystasz z Cloudflare, włącz na chwilę tryb deweloperski, który wyłącza cache na kilka godzin.
  • Upewnij się, że ścieżki /wp-admin/ i /wp-login.php są wykluczone z pamięci podręcznej. To standard, ale po ręcznej konfiguracji reguł potrafi zniknąć.
  • Jeśli nie masz dostępu do panelu, wyłącz wtyczkę cache przez FTP, zmieniając nazwę jej folderu w /wp-content/plugins/. Usuń też pliki advanced-cache.php i object-cache.php z folderu /wp-content/, jeśli tam są.

Krok 4: wtyczki i motyw

Skoro cache odpada, sprawdź resztę. Najszybsza metoda to wyłączenie wszystkiego naraz.

Przez FTP lub menedżera plików zmień nazwę folderu /wp-content/plugins/ na /wp-content/plugins-off/. WordPress przestanie widzieć wtyczki i automatycznie je dezaktywuje. Spróbuj się zalogować.

Jeśli wejście do panelu się udało, przywróć nazwę folderu na plugins. Wszystkie wtyczki będą wyłączone, a Ty włączysz je pojedynczo, sprawdzając po każdej, czy nadal możesz się zalogować w drugiej przeglądarce. Ta, po której logowanie pada, jest winna.

Jeśli wyłączenie wtyczek nie pomogło, zrób to samo z motywem: zmień nazwę jego folderu w /wp-content/themes/. WordPress przełączy się na motyw domyślny, o ile jest zainstalowany.

Krok 5: dlaczego nie przychodzi mail resetujący hasło

To osobny problem i warto go rozwiązać niezależnie, bo brak działającej poczty uderzy w Ciebie także przy powiadomieniach o zamówieniach.

Typowe przyczyny, od najczęstszej:

  • Mail trafił do spamu. Sprawdź folder spam i wszystkie zakładki w skrzynce.
  • Hosting blokuje funkcję wysyłki PHP. Coraz więcej firm wyłącza ją domyślnie i wymaga SMTP. Wtedy WordPress uważa, że wysłał wiadomość, a ona nigdy nie opuszcza serwera.
  • Adres nadawcy nie pasuje do domeny i filtry odbiorcy odrzucają wiadomość. To ten sam mechanizm, który opisuję we wpisie o tym, dlaczego maile ze sklepu trafiają do spamu.
  • Adres e-mail konta jest nieaktualny. Skrzynka po byłym pracowniku, literówka, domena, która wygasła.
  • Wtyczka bezpieczeństwa wyłączyła reset hasła. Niektóre mają taką opcję i po jej włączeniu formularz odzyskiwania po prostu nic nie robi.

Praktyczny wniosek: nie czekaj na mail. Ustaw hasło ręcznie, a kwestię poczty napraw później, spokojnie, konfigurując wysyłkę przez SMTP. Jeśli prowadzisz sklep, zajrzyj też do wpisu o tym, co robić, gdy sklep nie wysyła maili z potwierdzeniem zamówienia.

Krok 6: reset hasła bez dostępu do maila

Masz dwie sensowne drogi. Obie wymagają dostępu do panelu hostingu.

Przez phpMyAdmin

Wejdź w phpMyAdmin, wybierz bazę danych swojej strony i otwórz tabelę wp_users. Znajdź swojego użytkownika, kliknij „Edytuj” i w polu user_pass wpisz nowe hasło, a w kolumnie obok wybierz funkcję MD5. Zapisz.

WordPress przy pierwszym poprawnym logowaniu sam przeliczy hasło na bezpieczniejszy format. Po zalogowaniu od razu ustaw normalne hasło w swoim profilu.

Jeśli phpMyAdmin w ogóle się nie otwiera albo strona zgłasza problem z bazą, zajrzyj do wpisu o błędzie nawiązywania połączenia z bazą danych, bo wtedy diagnoza idzie zupełnie inną ścieżką.

Przez tymczasowy plik w mu-plugins

Jeśli wolisz nie dotykać bazy, utwórz folder /wp-content/mu-plugins/, a w nim plik reset-tymczasowy.php o treści:

<?php
add_action('init', function () {
    $user = get_user_by('login', 'twoj_login');
    if ($user) {
        wp_set_password('NoweTrudneHaslo2026', $user->ID);
    }
});

Wejdź raz na stronę główną, zaloguj się nowym hasłem, a potem natychmiast usuń ten plik. Zostawienie go oznacza, że hasło będzie się resetowało przy każdym wejściu na stronę, a plik stanie się otwartą furtką dla każdego, kto go znajdzie.

Gdy nie masz nawet konta administratora

W tabeli wp_users możesz dodać nowego użytkownika, ale samo to nie wystarczy. Uprawnienia siedzą w tabeli wp_usermeta, w polach wp_capabilities i wp_user_level. Jeśli Twoja instalacja ma inny przedrostek tabel, na przykład xy7_, to te pola muszą się nazywać xy7_capabilities i xy7_user_level. Niezgodność przedrostka to najczęstszy powód, dla którego nowe konto loguje się, ale panel jest pusty.

Krok 7: logujesz się, ale panel jest pusty lub wyrzuca Cię z powrotem

Hasło działa, WordPress Cię wpuszcza, a Ty widzisz pustą stronę albo tylko fragment panelu. Sprawdź po kolei:

  • Uprawnienia konta. Twoja rola mogła zostać zmieniona z administratora na subskrybenta. Wtedy panel jest ubogi, ale technicznie działa. Weryfikacja przez wp_usermeta, tak jak wyżej.
  • Limit pamięci PHP. Panel jest cięższy niż strona publiczna i potrafi paść jako pierwszy. Dodaj w wp-config.php linię define('WP_MEMORY_LIMIT', '256M'); i sprawdź ponownie.
  • Uszkodzone pliki rdzenia. Pobierz czystą paczkę WordPressa w tej samej wersji i wgraj przez FTP foldery wp-admin oraz wp-includes, nadpisując istniejące. Nie ruszaj folderu wp-content ani pliku wp-config.php.

Krok 8: blokady bezpieczeństwa

Jeśli po kilku próbach zamiast formularza widzisz komunikat o zablokowanym dostępie albo strona przestała się otwierać tylko dla Ciebie, prawdopodobnie sam siebie zablokowałeś.

  • Limit prób logowania. Wtyczki bezpieczeństwa blokują adres IP po kilku nieudanych próbach. Blokada zwykle mija po kilkunastu minutach lub godzinie. Możesz też zmienić IP, przełączając się na transmisję komórkową w telefonie.
  • Zmieniony adres logowania. Część wtyczek ukrywa wp-login.php pod własnym adresem. Jeśli go nie pamiętasz, wyłącz wtyczkę przez FTP, a standardowy adres wróci.
  • Dwuskładnikowe uwierzytelnianie. Zmiana telefonu albo usunięcie aplikacji z kodami odcina dostęp. Ratunkiem są kody zapasowe, a jeśli ich nie masz, wyłączenie wtyczki przez FTP.
  • Reguły w pliku .htaccess. Sprawdź, czy nie ma tam wpisu ograniczającego dostęp do panelu do jednego adresu IP, który już się zmienił. Reguły Require ip lub deny from all w sekcji dotyczącej wp-admin to typowy trop.
  • Blokada po stronie serwera. Systemy typu ModSecurity potrafią odrzucić żądanie logowania z błędem 403. Tego nie zdiagnozujesz z poziomu WordPressa, tu pomoże wsparcie hostingu.

Krok 9: kiedy podejrzewać włamanie

Są sygnały, przy których przestaję szukać przyczyny technicznej i traktuję sprawę jako incydent bezpieczeństwa:

  • Twoje hasło przestało działać z dnia na dzień, choć nikt go nie zmieniał.
  • W tabeli wp_users jest konto administratora, którego nie zakładałeś.
  • Adres e-mail konta administratora został podmieniony.
  • Strona przekierowuje odwiedzających na obce witryny albo Google oznaczył ją jako niebezpieczną.
  • W logach serwera widać setki prób logowania z różnych adresów IP.

W takiej sytuacji samo odzyskanie hasła niczego nie załatwia, bo napastnik zwykle zostawia furtkę w plikach. Pełną procedurę opisałem we wpisie o tym, jak odwirusować stronę WordPress.

Szybka tabela: objaw i pierwszy ruch

Co widziszNajbardziej prawdopodobna przyczynaPierwszy ruch
Wracasz na formularz bez komunikatuCiasteczka lub cacheTryb incognito, wyczyszczenie cache, sprawdzenie adresu strony
Komunikat o zablokowanych ciasteczkachNiezgodność domeny lub protokołuWeryfikacja WP_HOME i WP_SITEURL, wpis COOKIE_DOMAIN
Nieprawidłowa nazwa użytkownika lub hasłoZłe dane albo zmienione kontoReset hasła przez phpMyAdmin
Mail resetujący nie przychodziWyłączona wysyłka poczty na hostinguUstawienie hasła ręcznie, potem konfiguracja SMTP
Komunikat o zablokowanym dostępieWtyczka bezpieczeństwa lub reguła w .htaccessOdczekanie, zmiana IP, wyłączenie wtyczki przez FTP
Logujesz się, ale panel jest pustyUprawnienia, limit pamięci lub uszkodzone plikiSprawdzenie wp_usermeta, podniesienie limitu pamięci
Nieznane konto administratora w bazieWłamanieOdcięcie strony i pełne czyszczenie

Czego nie robić

Cztery rzeczy, które regularnie pogarszają sytuację:

  • Nie instaluj WordPressa od nowa na tej samej bazie. Można stracić całą zawartość strony, a problem z logowaniem zwykle i tak zostaje.
  • Nie kasuj folderu wp-content. To tam siedzą Twoje zdjęcia, motyw i wtyczki. Reinstalacja dotyczy wyłącznie wp-admin i wp-includes.
  • Nie zostawiaj plików ratunkowych. Skrypt resetujący hasło w mu-plugins usuwasz od razu po użyciu, nie „jutro”.
  • Nie próbuj w nieskończoność. Kolejne nieudane logowania przedłużają blokadę adresu IP i mylą diagnozę.

Jak nie wracać do tego problemu

Trzy nawyki, które w praktyce eliminują większość takich sytuacji:

  • Drugie konto administratora z innym adresem e-mail, na skrzynce w innej domenie. Kosztuje minutę, a ratuje dzień.
  • Poczta wysyłana przez SMTP zamiast przez domyślną funkcję PHP. Dzięki temu reset hasła i powiadomienia z zamówień faktycznie docierają.
  • Kody zapasowe do uwierzytelniania dwuskładnikowego zapisane w menedżerze haseł, nie tylko w aplikacji na telefonie.

Warto też wiedzieć, że problem z logowaniem rzadko chodzi sam. Zwykle jest objawem czegoś szerszego: zaniedbanych aktualizacji, źle skonfigurowanego cache albo przeciążonego hostingu. Zebrałem te wątki we wpisie o najczęstszych przyczynach awarii strony internetowej.

Kiedy przestać kombinować i poprosić o pomoc

Odpuść samodzielne grzebanie, jeśli zachodzi choć jedno:

  • nie masz dostępu do FTP ani do panelu hostingu,
  • strona zarabia i każda godzina przestoju kosztuje Cię pieniądze,
  • podejrzewasz włamanie,
  • nie masz świeżej kopii zapasowej, więc każdy błąd może być nieodwracalny.

W takich przypadkach szybciej i taniej wychodzi oddanie tego komuś, kto robi to na co dzień. Zajmuję się awariami i bezpieczeństwem stron WordPress oraz sklepów WooCommerce. Jeśli nie możesz dostać się do swojego panelu, napisz do mnie, przywrócę Ci dostęp i sprawdzę, co było realną przyczyną, żeby to się nie powtórzyło.

Nie chcesz robić tego samodzielnie?

Zajmę się tym za Ciebie. Napisz krótko, co się dzieje - odpowiem tego samego dnia roboczego.

Napisz do mnie
Bartosz
Bartosz Web Developer & Freelancer · Cyberiusz.pl
14 września 2026
Sklepy internetowe to moja codzienność - tworzę je, opiekuję się nimi i pomagam właścicielom przyciągać klientów. Działam w sieci od ponad 10 lat.
Sklepy internetowe Marketing online Web development