Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Problem z funkcją resetowania hasła


Rekomendowane odpowiedzi

Opublikowano (edytowane)

Cześć, przychodzę ponownie z problemem.

Miałem dość rozjechane forum, ale po aktualizacji wszystko się naprawiło (w innym wątku prosiłem o pomoc - rozwiazane)

Teraz wszystko śmiga poza dość istotną funkcją, mam około 4000 kont w systemie i forum było nieaktywne około 3 lat teraz chcę zrobić reaktywacje i na bank ludzie nie będą znali swoich haseł. Dlatego też istotna jest funkcja przywracania hasła.

Wykonałem test dostałem maila z linkiem do resetowania jednak po wejściu w ten link mam błąd:

image.thumb.png.118b0a0589b4e2e79ffb6fdaab1667df.png

System twierdzi, że nie oczekuję na potwierdzenie żądania zmiany hasła. Nic w tej funkcji nie było modyfikowane. Szablon mail do resetowania nie był zmieniany, modyfikowany był jedynie szablon główny.

Link wygląda dobrze:

Edytowane przez MWo
  • Manager
Opublikowano

Kod tego błędu jest tutaj:

	/**
	 * Validate
	 *
	 * @return	void
	 */
	protected function validate()
	{
		/* Prevent the vid key from being exposed in referrers */
		\IPS\Output::i()->sendHeader( "Referrer-Policy: origin" );

		try
		{
			$record = \IPS\Db::i()->select( '*', 'core_validating', array( 'vid=? AND member_id=? AND lost_pass=1', \IPS\Request::i()->vid, \IPS\Request::i()->mid ) )->first();
		}
		catch ( \UnderflowException $e )
		{
			\IPS\Output::i()->error( 'no_validation_key', '2S151/1', 410, '' );
		}

Zatem jeśli nie masz wpisów z podanym hashem (vid) w tabeli core_validating to przyczyna leży gdzie indziej.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano
39 minut temu, DawPi napisał(a):

No jednak nie do końca. Uzupełnij profil o wersję forum.


Uzupełnione, moja wersja to 4.6.9

 

 

49 minut temu, DawPi napisał(a):

Kod tego błędu jest tutaj:

	/**
	 * Validate
	 *
	 * @return	void
	 */
	protected function validate()
	{
		/* Prevent the vid key from being exposed in referrers */
		\IPS\Output::i()->sendHeader( "Referrer-Policy: origin" );

		try
		{
			$record = \IPS\Db::i()->select( '*', 'core_validating', array( 'vid=? AND member_id=? AND lost_pass=1', \IPS\Request::i()->vid, \IPS\Request::i()->mid ) )->first();
		}
		catch ( \UnderflowException $e )
		{
			\IPS\Output::i()->error( 'no_validation_key', '2S151/1', 410, '' );
		}

Zatem jeśli nie masz wpisów z podanym hashem (vid) w tabeli core_validating to przyczyna leży gdzie indziej.


Zauważyłem wpisy w bazie więc tabelę wyczyściłem.
Zrobiłem ponowny test, mail przyszedł, resetowanie zadziałało. Drugi mail wysłany (po wygaśnięciu pierwszego), nie dodał/zaktualizował wpisu w tabeli core_validating, mail przyszedł i znowu link nieprawidłowy.

Pytanie czy nie powinno być dodanego czegoś w cron co usuwa stare wpisy, może mam braki. Nie wiem jak to działa.

Opublikowano (edytowane)

Zauważyłem chyba błąd, nie rozumiem tego.

Jeżeli jest już wpis, email_sent jest aktualizowany na aktualną datę i token jest ten sam. Natomiast entry_date się nie aktualizuje i wchodząc w ten link mam błąd bo entry_date się nie zmieniło.

Natomiast widzę że to zacytowane zapytanie nie ma sprawdzania ani email_sent ani entry_date tylko info czy jest taki vid.

I tu nie rozumiem bo:

Link: 

 
A błąd ten sam:

image.thumb.png.d95ea177461b3e2d8f3a6430cd7bbaba.png

Gdy wpisu nie ma i jest insert, wszystko wygląda dobrze.
Edytowane przez MWo
Opublikowano

Jeszcze jedno.

Ten kod u mnie wygląda zupełnie inaczej i używa jednak entry_date:

 

Cytat
try
        {
            $timeLimit = \IPS\DateTime::create()->sub( new \DateInterval( 'PT1H' ) )->getTimestamp();
            $record = \IPS\Db::i()->select( '*', 'core_validating', array( 'vid=? AND member_id=? AND lost_pass=1 AND entry_date>?', \IPS\Request::i()->vid, \IPS\Request::i()->mid, $timeLimit ) )->first();
        }
        catch ( \UnderflowException $e )
        {
            \IPS\Output::i()->error( 'no_validation_key', '2S151/1', 410, '' );
        }


A zaktualizował mi się tylko email_sent po wysyłce ponownego maila.

 

  • Manager
Opublikowano

Dlatego też zalecana jest pilna aktualizacja do najnowszej wersji, być może był to jakiś błąd i potem został poprawiony.

Możesz sobie tego poszukać w liście zmian/fixów: https://invisioncommunity.com/release-notes/

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.