![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Cześć. Mam pytanie, jak przekazujecie wartości zmiennych między podstronami? Głównie chodzi mi o tak kluczowe dane jak np. login użytkownika, albo numery identyfikacyjne. Pytam dlatego, że pisałem sobie skrypt i zapomniałem się, w formularzy do <input> typu hidden wrzuciłem login użytkownika. Tak więc korzystając z wyświetlenia źródła strony można było sobie wpisać w tego inputa co się chciało... tak więc do bazy dodało mi to co sobie tam wrzuciłem dopisując a nie to co zakładałem. Myślałem o tym, żeby kluczowe parametry przekazywać korzystając ze zmienny $_SESSION. Czy to dobre rozwiązanie?
Mam również pytanie, czy funkcja:
Jest bezpieczna i tak na każdej podstronie można sprawdzać sesje użytkownika? Pozdrawiam! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 13 Dołączył: 16.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Przechowywanie w sesji np. id usera to dobre rozwiązanie. Możesz tak sprawdzać czy jest zalogowany - tylko w wyloguj.php musisz tą zmienną sesji usunąć
Ten post edytował mikolaj51 4.09.2012, 21:14:00 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
"Możesz tak sprawdzać czy jest zalogowany, tylko w wyloguj.php musisz tą zmienną sesji usunąć"
Rozumiem, że tam miał być przecinek po zalogowany? ![]()
Tak wygląda mój kod wylogowania, czy jest ok? A jak z przekazywaniem zmiennych między podstronami? Tak, żeby było to bezpieczne i żeby user nie mógł ich modyfikować? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Coż, zależy co te zmienne mają przechowywać? Bo tutaj masz pełen zakres możliwości:
- zmienne sesyjne - POST i GET - cookies - zmienne globalne Jeśli ta strona funkcjonuje mógłbyś podać link? Ten post edytował b4rt3kk 5.09.2012, 01:31:02 -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze stronka nie działa. Chodzi mi o takie wartości, których absolutnie user nie może modyfikować. Jak np. wartość punktową jaką dostanie za np. zgłoszenie się do jakiegoś zadania itp. Myślę, że wtedy z pomocą przychodzą zmienne sesyjne? Tylko przy wylogowaniu usera należy taką zmienną $_SESSION najpierw wyczyścić? Stosując $_SESSION=array(); ?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przesyłanie danych pomiędzy stronami za pomocą geta i posta nie pasuje do Twojego problemu. Tutaj właśnie potrzebne są zmienne sesyjne, albo ewentualnie singleton + baza danych. Pewnie na jeszcze kilka innych sposobów można Twój problemów rozwiązać... ale wybierz sesje
![]() -------------------- :)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze stronka nie działa. Chodzi mi o takie wartości, których absolutnie user nie może modyfikować. Jak np. wartość punktową jaką dostanie za np. zgłoszenie się do jakiegoś zadania itp. Myślę, że wtedy z pomocą przychodzą zmienne sesyjne? Tylko przy wylogowaniu usera należy taką zmienną $_SESSION najpierw wyczyścić? Stosując $_SESSION=array(); ? Cóż, jeśli użytkownik dostaje jakieś punkty to pewno chciałby je z powrotem mieć jak się zaloguje ponownie, więc najlepszym sposobem jest zapis do bazy danych. -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
No dokładnie Panowie, dlatego właśnie potrzebuję przesłać na inną podstronę np. jakąś kluczową wartość dzięki, której będzie można pierdyknąć poprawne zapytanie do bazy
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 13 Dołączył: 16.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Przechowujesz w sesji id użytkownika i potem już nie masz problemu z zapytaniem. Tworzysz zapytanie "(...) WHERE id = ..." i będzie dobrze. Nie rozumiem z czym problem:
Cytat No dokładnie Panowie, dlatego właśnie potrzebuję przesłać na inną podstronę np. jakąś kluczową wartość dzięki, której będzie można pierdyknąć poprawne zapytanie do bazy ta kluczowa wartość to id użytkownika zapisana w sesji ;-)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wszystkiego niestety nie da się załatwić samym identyfikatorem/ loginem usera
![]() Jedyne co mi przychodzi do głowy to po prostu na kolejnej podstronie, gdzie już user się zdecydował jaką nagrodę chce po prostu sprawdzić jeszcze raz czy usera stać na taki id nagrody, a jeżeli go nie stać to wyświetlić komunikat o błędzie. Ten post edytował ŁukaszŁ. 5.09.2012, 15:13:48 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Więc wszystkie potrzebne zmienne, takie jak id usera, liczbę punktów powinieneś ładować do sesji, żeby były pod ręką w każdej chwili. No i to oczywiste, że należy sprawdzać poprawność przesłanych przez usera danych na każdym kroku. Id nagrody możesz przesyłać nawet w get, byleby sprawdzić:
- czy nagroda o takim id istnieje - czy pkt użytkownika pozwalają mu taką zamówić jeśli nie to komunikat o błędzie -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wpadłem też na pomysł, żeby kiedy wyświetlam dostępne nagrody dla usera do zmiennej sesji ładować przy okazji id nagrody, a do <a href> jako zmienna get również id nagrody, wtedy na podstronie do ktorej kieruje <a> wystarczyło by sprawdzić:
To ogranicza mi zapytania do bazy i przeklada sie na wydajnosc, co o tym myślicie ? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Id nagrody do sesji ładować nie musisz, ale za to możesz sprawdzić $_SERVER['HTTP_REFERER'], jeśli przekierowanie nastąpi z właściwego linka wtedy $_SERVER['HTTP_REFERER'] zwróci adres z której użytkownik tu wszedł, jeśli wpisze samodzielnie w pasku adresu wtedy $_SERVER['HTTP_REFERER'] będzie puste.
-------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Działa to fajnie, ale to nie jest bezpieczne, faktycznie na stronę nie można wbić z innego linka jak z tego, z którego jest odnośnik ale i tak jak wejdzie się na stronę która przekierowuje usera do innej strony gdzie już wykonuje się zapytanie, to wtedy w stronie źródłowej nadal można ręcznie modyfikować kod html np. w google chrom i dopisywać wartości do linków.
Ten post edytował ŁukaszŁ. 5.09.2012, 17:32:00 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 13 Dołączył: 16.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Według mnie nie możesz do końca ufać $_SERVER['HTTP_REFERER'] - o ile się nie mylę, jest ustawiany przez przeglądarkę i można podrobić to curl'em..
Więc do końca nie jest ok
Edit: Zerknij tu http://php.pl/Wortal/Artykuly/PHP/Bibliote...P/Naglowki-HTTP Ten post edytował mikolaj51 5.09.2012, 18:03:41 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tak tak, też to zauważyłem, ale generalnie przesyłanie zmiennych w sesji jest bezpieczne?
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 13 Dołączył: 16.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Powinno być bezpieczne, ale zależy jak masz napisany system logowania... Nikt tych zmiennych nie przeczyta sobie ani nie wykorzysta, chyba że przechwyci identyfikator sesji i zamieni sobie w ciasteczku phpsessid
![]() ![]() |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
mój skrypt logowania wygląda tak:
plik loguj.php:
a tutaj funkcja loguj() :
Co o tym myślicie Panowie, da się na tym ujechać? ![]() |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 13 Dołączył: 16.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
O addslashes() możesz zapomnieć skoro korzystasz z PDO, a tam jest preparowanie zapytań(bindValue) - określasz sobie typ zmiennej i jest bezpiecznie
![]() http://php.net/manual/pl/pdostatement.bindvalue.php Jak reszta strony jest ok, tak żeby nikt nie umieścił złośliwego kodu to nie będzie się dało podszyć pod innego usera... Nie wiem czy to dobre rozwiązanie ale ja zawsze sobie robię tabele w bazie danych gdzie są utworzone sesje zalogowanych userów ![]() Ten post edytował mikolaj51 5.09.2012, 18:33:12 |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 20.08.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tak tak, z pdo korzystam tylko skryptu logowania nie przerobiłem jeszcze tak aby korzystał z pdo. Czyli pdo zwalnia mnie ze stosowania addslashes? tego nie wiedziałem
![]() ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 21:51 |