Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][AJAX] Logowanie alternatywne, W przypadku włączonego lub wyłaczonego JS
Mephis
post 13.11.2014, 08:02:06
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 1
Dołączył: 16.12.2012

Ostrzeżenie: (0%)
-----


Witam.

Nie wiedziałem za bardzo w którym dziale napisać ten temat, przepraszam za ewentualny kłopot.

Na stronie chciałbym zrobić logowanie przy pomocy AJAX. Z samym logowaniem problemu nie ma. Problem zaczyna się, gdy użytkownik ma wyłączoną obsługę JavaScript - albowiem uniemożliwia to logowanie. Pozostawiam więc Ajaxa jak i cały JS tylko w celu zachowania na stronie dynamiki i ewentualnie dodatkowych 'efektów graficznych' interfejsu (jQueru) użytkownikom, którzy mają włączone JS. Cała reszta będzie się mogła obejść i bez tego.

Została sama kwestia logowania w sposób dynamiczny czy też nie. Pierwsze co wpadło mi do głowy, to:
- do formularza, z którego będzie logował się użytkownik, dodać niewidoczne pole typu hidden z domyślną wartością "noajax".
  1. <input type="hidden" value="noajax" id="action" name="action" />

- w skrypcie js, dodać do danych POST zmienną "action" z wartościa "ajax"
  1. var string = '&login=' + login + '&password=' + password + '&action=ajax';

Działanie jest proste - wprzypadku braku js, zmienna action wyśle się jako "noajax". W przeciwnym wypadku zmienna ta zostanie zastąpiona przy pomocy JS na wartość "ajax". Jestem świadomy możliwości manipulacji polem action w formularzu i doprowadzenia do "rzekomego" dynamicznego logowania.

W ten sposób, mogę sprawdzić w skrypcie PHP, jakim sposobem wysłano formularz. Pytanie mam następujące:
czy takie rozwiązanie jest bezpieczne i jakie jest na to bardziej profesjonalne rozwiązanie?

Ten post edytował Mephis 13.11.2014, 08:03:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Pyton_000
post 13.11.2014, 08:10:16
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A na co ? Przecież dynamicznie i statycznie odwołujesz się do tego samego skryptu logowania.
Jak robisz ajaxem to robisz zapewne preventDefault, potem obsługa, pierdoły, animacje itp.

Jak robisz ręcznie wciskasz "Loguj" i tyle.
A w PHP sprawdzasz czy przyszedł AJAX:
  1. if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  2. }

i robisz albo redirect albo die;
Go to the top of the page
+Quote Post
Mephis
post 13.11.2014, 08:36:58
Post #3





Grupa: Zarejestrowani
Postów: 94
Pomógł: 1
Dołączył: 16.12.2012

Ostrzeżenie: (0%)
-----


Owszem, skrypt logowanie jest ten sam. W nim stawiam warunek czy $_POST['action'] jest "ajax" lub "noajax". W przypadku ajax, ze skryptu logowania wypuszczam dane przez "echo json_encode($dane);", zaś w przypadku noajax, muszę zainicjować komunikat o ewentualnym błędzie i zrobić przekierowanie do strony z logowaniem.

Z tego co rozumiem, ten warunek mam wstawić zamiast sprawdzenia czy 'action' jest 'ajax' i żadne 'action' nie jest mi już potrzebne?
Go to the top of the page
+Quote Post
Pyton_000
post 13.11.2014, 08:57:53
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


dokładnie tak smile.gif Choć i to ma swoje wady ponieważ czasami serwer nie obsługuje tego nagłówka :|
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:31