Kontynuując treść poprzedniego posta, ważne jest również rozważenie użycia transjentów i uwierzytelniania.
Ponieważ istnieją scenariusze, w których użytkownicy są uwierzytelniani w witrynie (pomyśl o obszarze witryny tylko dla członków) i lub nie są uwierzytelniani w witrynie (na przykład odwiedzający witrynę).
Tego typu sytuacje są obecne zarówno na blogach, jak i w innych witrynach i aplikacjach internetowych na całym świecie.
Przejściowe stany przejściowe i uwierzytelnianie WordPress
Jak możemy przechowywać informacje o użytkownikach dla tych użytkowników? Na szczęście PHP zapewnia nam pewną funkcjonalność, która daje nam możliwość robienia tego bez potrzeby korzystania z API WordPressa.
Ostatecznym celem, do którego dążymy, jest serializacja danych przejściowych przy użyciu klucza, który używa identyfikatora uwierzytelnionego użytkownika lub nieuwierzytelnionego użytkownika.
A oto jak to zrobić.
API WordPressa
Zakładając, że użytkownik jest uwierzytelniony w WordPressie, możemy użyć funkcji get_current_user_id. To też jest proste.
Z odniesienia do kodu:
Uzyskaj identyfikator bieżącego użytkownika
Możemy następnie użyć tej funkcji w konstruktorze, aby ustawić właściwość przechowującą identyfikator użytkownika. I za chwilę pokażę kod do tego, ale co z sytuacją, gdy użytkownik nie jest zalogowany?
API PHP
Jeśli chodzi o przechowywanie informacji dla użytkowników, którzy nie są uwierzytelnieni, nadal potrzebujemy sposobu ich identyfikacji. Można to zrobić na wiele sposobów, używając różnych wartości utrzymywanych przez PHP w celu dołączenia do klucza przejściowego.
Pamiętaj, że klucz musi być unikalny i dopóki jest unikalny dla użytkownika witryny, powinien być dobry.
Dwie funkcje, które oferuje PHP to:
Jeśli chodzi o drugą, to nie będzie działać z IIS ani żadnymi serwerami z systemem Windows. Ale wspominam o tym tutaj jako o innej alternatywie dla hostów opartych na *nix (ponieważ tak wiele jest, szczególnie w odniesieniu do WordPressa).
Funkcja get_current_user jest wystarczająco przejrzysta:
Pobiera nazwę właściciela bieżącego skryptu PHP
W instrukcji jest jeszcze coś, na co warto zwrócić uwagę. Wyraźnie stwierdza to „[zwraca] imię i nazwisko właściciela bieżącego skryptu PHP". Zajmę się tym przed końcem postu.
Co więcej, get_current_user może również nie być tym, czego szukasz, w zależności od konfiguracji serwera i tego, który użytkownik jest „właścicielem” skryptu PHP działającego na serwerze.
Ale wystarczy powiedzieć, że w tym przykładzie to działa. A oto dlaczego: staram się pokazać, jak używać wartości, które są unikalne dla użytkownika, który nie jest uwierzytelniony w witrynie, do generowania klucza, z którego możemy pobrać informacje.
Sposób generowania klucza jest drugorzędny w stosunku do rzeczywistego kodu.
Łącząc to wszystko razem
Jak więc wygląda kod, jeśli mamy wykorzystać powyższe funkcje? To znaczy, jeśli utrzymujemy właściwość, która przechowuje identyfikator użytkownika, a następnie robi to zarówno dla uwierzytelnionych, jak i nieuwierzytelnionych użytkowników?
A to da ci funkcjonalność niezbędną do tworzenia unikalnego identyfikatora użytkownika zarówno dla uwierzytelnionych użytkowników, jak i nieuwierzytelnionych użytkowników.
A co z kluczami przejściowymi?
Tak – częścią tego, o czym mówimy, jest również tworzenie unikalnych kluczy przejściowych.
Aby to zrobić, stwierdziłem, że dość łatwo jest połączyć identyfikator użytkownika, który wygenerowaliśmy powyżej i dołączyć go do klucza używanego podczas serializacji przejściowej.
Następnie, z wartością zwracaną przez tę funkcję, możemy jej użyć do zapisania danych jako nieustalonych za pomocą unikalnych kluczy.
Jeszcze inne opcje
Jak wspomniano, zwykłe używanie funkcji wbudowanych w PHP może nie być właściwą drogą. Ale to nie znaczy, że nie ma innych wartości, które zapewniają unikalną wartość temu, czego potrzebujesz.
W takich przypadkach ważne jest, aby określić, w jaki sposób chcesz zidentyfikować użytkownika, jakiego systemu operacyjnego używają i jakie konto użytkownika jest właścicielem aplikacji.
Jeśli to nie zapewnia wystarczająco unikalnego ustawienia (i jest bardzo prawdopodobne, że nie nastąpi to w pewnych warunkach), zasada nadal obowiązuje – wystarczy zamienić wywołanie funkcyjne get_current_user() na coś, co działa najlepiej dla ty.