Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wysyłanie formularzy przed zalogowaniem, wymagane zalogowanie, Prośba o waszą opinię
sniver
post
Post #1





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


Witam,

Planuję stworzyć mechanizm który zapewni mi działanie podobne jak na allegro.pl czy oferia.pl.
Dla przykładu gdy składam zamówienie na allegro albo ofertę na oferii, a nie jestem zalogowany, strona automatycznie przenosi mnie do formularza logowania. Po zalogowaniu ta konkretna rzecz jest dodawana (kup teraz lub wysłanie swojej oferty).
Chyba to dobrze opisałem.

Pytanie: Jak zrobić samodzielnie taki mechanizm?
Mój pomysł: wziąć ID sesji które jest wiadomo unikatowe dla każdej osoby, do niej przypisać URL i zaszyfrować obustronnie (tak by potem rozszyfrować gdzie ma wrócić i co zrobić). Dane wysłane do formularza wstawić do pliku albo bazy z tym unikatowym ID, a po powrocie na strone po zalogowaniu wykonać już automatycznie formularz tak by sie jakaś interakcja wykonała...

Troche pomieszałem....

Mój problem jest czysto merytoryczny i chodzi o pomoc, podpowiedź jak to według was powinno być zrobione.
Oczywiście jeśli ktoś zna gotowe rozwiązania tego typu będę wdzięczny za informacje

Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
zonkerman
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 3.07.2010

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


A może w GET'cie np zapisać nr aukcji i akcje jaką ma wykonać i po zalogowaniu przechwycić?
Go to the top of the page
+Quote Post
sniver
post
Post #3





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


Pomysł jest taki:
1. Stworzenie identyfikatora akcji np. wysłanie komentarza. Identyfikator będzie zawierać zakodowaną informacje obustronnie:
a) URL z którego formularz był wywoływany
cool.gif URL do którego kieruje wysłany formularz
c) Aktualny czas (tak by odrzucać formularze które mają za stare winksmiley.jpg)
d) Identyfikator sesji,

I dla przykładu może to wyglądać np. tak: aHR0cDovL3d3dy5iZXRhLmVyb2JheS5wbC9wcm9kdWt0eS8xNDg0L1N1a2llbmthX05JR0hUX1F1ZWVu
X1BBU1NJT04uaHRtbA,,

2. Pola z formularza i wartości nadane przez użytkownika będą zapamiętane względem właśnie tego identyfikatora do np. pliku php o dźwięcznej nazwie: aHR0cDovL3d3dy5iZXRhLmVyb2JheS5wbC9wcm9kdWt0eS8xNDg0L1N1a2llbmthX05JR0hUX1F1ZWVu
X1BBU1NJT04uaHRtbA,,.php
ze zwykłymi wartościami w postaci array, czyli:

  1. <?php
  2.  
  3. $rePost = array(
  4. 'pole1' => 'wartosc tego pola wpisanego przez uzytkownika',
  5. 'pole2' => 'wartosc wpisana przez uzytkownika'
  6. 'jakiesInnePole' => 'blebleble'
  7. );
  8.  
  9. ?>


No i po zalogowaniu funkcja sprawdzi czy plik aHR0cDovL3d3dy5iZXRhLmVyb2JheS5wbC9wcm9kdWt0eS8xNDg0L1N1a2llbmthX05JR0hUX1F1ZWVu
X1BBU1NJT04uaHRtbA,,.php
istnieje czy też nie (wartość aHR0cDovL3d3dy5iZXRhLmVyb2JheS5wbC9wcm9kdWt0eS8xNDg0L1N1a2llbmthX05JR0hUX1F1ZWVu
X1BBU1NJT04uaHRtbA,, będzie podana w adresie i przekazana GET) i doda się albo sie nie doda coś co tam ma sie wykonać.

Dobre rozwiązanie?


--------------------
Go to the top of the page
+Quote Post
zonkerman
post
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 3.07.2010

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


A może zrobić tak:

1. Klikamy, aby coś zrobić np. kupić
2. Robimy przekierowanie na stronę z zakończeniem kupna
3. Sprawdzamy czy ktoś jest zalogowany:
TAK -> kontynuujemy dalsze operacje
NIE -> przechodzimy aby zalogować -> pkt 3

A jak to zrobić? Można np do sesji wsadzić id kupna (pkt 1) czy czegoś tam, bo zmienne $_SESSION siedzą cały czas do zzerowania i do zniszczenia sesji. Sprawdzić czy ktoś jest zalogowany (pkt 3) i podjąć odpowiednie środki. Zawsze możesz sprawdzić sesje + ciastka jako takie zabezpieczenie by nic nie zmieniać, a jak ktoś coś zmieni to wywali błąd.

Ten post edytował zonkerman 23.07.2010, 19:59:57
Go to the top of the page
+Quote Post
sniver
post
Post #5





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


wyposażyłem moje rozwiązanie w taki mechanizm. Dane zapisałem do sesji i jeśli ktoś jest niezalogowany przenosi na formularz logowania i nadaje dodatkowy zahaszowany parametr (czego oczy nie widzą to ludzie sie nie pytają o co chodzi winksmiley.jpg) o nazwie rePosting. No i proste warunki sprawdzają czy wróciło na odpowiednie miejsce i czy całość tyczy sie odpowiedniej podstrony i dodaje albo wywala z sesji wprowadzoną w tym przypadku opinię o produkcie...

Potem zapodam linka...


--------------------
Go to the top of the page
+Quote Post
everth
post
Post #6





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Nie prościej tak?:
  1. Mamy id produktu, mamy akcję użytkownika (co chce zrobić z produktem), jego numer ip oraz id przeglądarki
  2. Sprawdzamy logowanie
  3. Jeśli użytkownik nie jest zalogowany to zapisujemy powyższe dane JSONem (robimy hasz (sha1) z IP oraz ID przeglądarki + jakaś sól) i wysyłamy mu w formie ciasteczka
  4. Ponownie sprawdzamy logowanie
  5. Jeśli zalogowany to sprawdzamy czy nie ma ciasteczka z zapisaną akcją, jeśli ma to sprawdzamy hasz i porównujemy - przechodzi to realizujemy akcje zapisane w ciasteczku, jak nie to ignorujemy ciasteczko

To wydaje mi się bardziej rozsądne od zapisywania danych w Sesji przed zalogowaniem.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
sniver
post
Post #7





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


bez znaczenia do czego to będzie zapisywane. Co jeśli np. zostaną otwarte 2 produkty i z obu zostaną wysłane opinie. W obu zostaną też wyświetlone pola do logowania...
Wtedy bez dobrze przemyślanego mechanizmu może się komentarz pojawić w złym miejscu...


--------------------
Go to the top of the page
+Quote Post
everth
post
Post #8





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Niby jak? Możesz zapisać w ciastku HTTP_REFERER i w ten sposób ocenić z którym URL jest związane dane ciastko (nie do końca jestem pewny czy ciastko nie jest związane z konkretną kartą w przeglądarce, tak mi mówi intuicja, ale głowy nie dam). A jeśli akcja została wykonana to usuwamy ciacho i tyle. Dodatkowo możemy się zabezpieczyć jakimś mechanizmem sprawdzającym wpisy pod kątem duplikatów.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
sniver
post
Post #9





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


Ok gotowe!
Zapraszam do testów i ewentualnych uwag: Przykładowy komentarz

Założyłem testowego usera...
Login: test
Hasło: 123456


Ciacho jest przypisane do strony i przeglądarki - bez względu na to czy odpalisz ów stronę w jednej czy wielu kartach to i tak w każdej z nich będziesz mieć dostęp do tego ciasteczka...


--------------------
Go to the top of the page
+Quote Post
everth
post
Post #10





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Jak ci działa - no problem. Po prostu rozwiązanie z ciachem wydaje mi się bardziej eleganckie - co do przywiązania to po masz hasz żeby ciacho zweryfikować (gdyby ktoś podłożył spreparowane)


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
muk4
post
Post #11





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


BTW.
Validator HTML
86 Errors, 104 warning(s) tongue.gif Nie żebym się czepiał ale jak ktoś sprawdzi...


@DOWN
No, ale i tak liczba dosyć spora.

Ten post edytował muk4 25.07.2010, 21:20:41
Go to the top of the page
+Quote Post
everth
post
Post #12





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Tak to bywa jak się nie stosuje do tworzenia HTMLa odpowiednich bibliotek (np. DOMDocument) smile.gif. Z tego co luknąłem to właściwie małe głupstwa (np. self-close tag).


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
sniver
post
Post #13





Grupa: Zarejestrowani
Postów: 159
Pomógł: 5
Dołączył: 31.08.2007

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


walidacją sie jeszcze nie zajmowałem - póki co - więc sama strona jeszcze nie jest do oceny smile.gif


--------------------
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 Aktualny czas: 22.08.2025 - 11:17