Skocz do zawartości
Pecetowicz Forum komputerowe

2S119/1. The CSRF protection key did not match | Invision Community


Przejdź do rozwiązania Rozwiązane przez aXenDev,

Rekomendowane odpowiedzi

Cześć. Otóż zrobiłem sobie aplikację w Invision Community, która wyświetla tabelę z danymi a na ostatniej kolumnie są ikonki, które wykonują dane akcję. Po wejściu w link wyświetla się jednak błąd:

2S119/1. The CSRF protection key did not match. This may indicate a plugin or theme is out of date. Please contact technical support for more information.

'link'		=> \IPS\Http\Url::internal('app=mtasa&module=adminpanel&controller=players&do=viewAccount&id='. $row['id'])

Funkcja viewAccount

	protected function viewAccount()
	{
		\IPS\Session::i()>csrfCheck();
		$database = \IPS\mtasa\Application::dbConnect();

		$result = $db->select( '*', 'users', [ 'id = ?', \IPS\Request::i()->id ] )->first();

		$template = \IPS\Theme::i()->getTemplate( 'adminpanel', 'mtasa', 'admin' )->playerDetails($result);
		\IPS\Output::i()->output = $template;
	}
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
  • Rozwiązanie
Napisano (edytowane)

Dodaj CSRF:

	/**
	 * @brief	Has been CSRF-protected
	 */
	public static $csrfProtected = TRUE;

To jest przestarzała funkcja, która nie działa od wersji IPS 4.5:

\IPS\Session::i()>csrfCheck();

Przy tworzeniu aplikacji warto patrzyć na kod źródłowy samego silnika, bo dokumentacja dla IPS mocno kuleje 🙂

Edytowane przez aXenDev
  • Lubię to! 1
  • Super 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Czyli $csrfProtected = TRUE: mam dodać w pliku Application.php czy w pliku wyświetlającym tabele?

Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Ekspert
Godzinę temu, RiV napisał:

module=adminpanel&controller=players

Tutaj

  • Super 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach
56 minut temu, aXenDev napisał:

Tutaj

Ok dzięki wielkie. Czyli ten kod \IPS\Session::i()>csrfCheck(); jest zbędny?

Odnośnik do odpowiedzi
Udostępnij na innych stronach
26 minut temu, RiV napisał:

Ok dzięki wielkie. Czyli ten kod \IPS\Session::i()>csrfCheck(); jest zbędny?

Tak, bo jest przestarzały jak Axen napisał. 

  • Lubię to! 2
  • Super 1
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Problem wciąż nierozwiązany? Dodaj swoją odpowiedź

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ę
×
×
  • Dodaj nową pozycję...