Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] problem z zabezpieczeniem logowania
intermediate
post 11.01.2011, 17:37:35
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.10.2010

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


Mam takie pytanie. Zrobiłem jak umiałem w php/sql stronę logowaniem i rejestracją użytkowników. Mam na przykład do systemu logowania 3 osobne pliki (main_login z formularzem, checklogin do sprawdzania danych, oraz login_success to stronka na którą jestem przekierowywany jak sie poprawnie zaloguje). Wszystko pięknie tylko zapomniałem o jednym:) Jak wpisze w pasku adresu bezpośrenio link do stronki login_success, który mam na serwerze to jestem zalogowany. Tak nie może byćsmile.gif

I jeszcze jedno. czy da się jakoś razem połączyć formularz z wpisywaniem danych i wysyłaniem plików na serwer. Chodzi mi o to, żeby za pomocą jednego przycisku były przesyłane zarówno pliki jak i dane z formularza:

Formularz uploadu:

  1. <form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
  2. Upload Image<input type="file" id="userfile" name="userfile">
  3. <input type="submit" name="upload" value="Upload">
  4. </form>


Formularz do wpisywania danych:

  1. <form action = "blebleble" method = "POST">
  2. Imie<br/>
  3. <input type="text" name="imie" ><br/>
  4. Nazwisko<br/>
  5. <input type="password" name="nazw" ><br/><br/>
  6.  
  7. <input type="submit" value="Wyslij">
  8. </form>


dzieki z góry za pomoc
Go to the top of the page
+Quote Post
toffiak
post 11.01.2011, 17:51:06
Post #2





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


Skoro przechodząc do strony login_success jesteś zalogowany to znaczy że na stronie nie jest sprawdzane czy użytkownik jest zalogowany, możesz to rozwiązać dodając do sesji informacje, na przykład login, zalogowanego użytkownika, gdy w sesji nie będzie informacji o loginie to znaczy że użytkownik nie jest zalogowany i powinien został przekierowany do strony logowania/rejestracji.

Dane wpisywane i ładowanie plików mozna połączyć w jeden formularz.


--------------------
Go to the top of the page
+Quote Post
ciekawskiii
post 11.01.2011, 17:58:12
Post #3





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


Rozumiem ze formularz wysylasz przez POST wiec na stronie gdzie sprawdza dane daj
  1. if(isset($_POST['$zmienna']))
  2. { //sprawdzam dane
  3. }else{
  4. //wysylam do strony logowania gdy formularz niewypelniony
  5. header('Location: logowanie.php');
  6. }

Sprawdzaj tez czy formularz pusty - empty i filtruj dane i podobnie na stronie gdzie zalogowano poprawnie to sprawdzaj czy ktos jest zalogowany, co do plikow i tejstu to input type="file" dodaj normalie do formularza


--------------------
Go to the top of the page
+Quote Post
kuba_pilach
post 11.01.2011, 19:28:02
Post #4





Grupa: Zarejestrowani
Postów: 224
Pomógł: 3
Dołączył: 24.12.2010

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


Sorki, że się czepiam, ale te logowanie zrobiłeś trochę bezsensu... po co aż trzy pliki na to?
Wystarczy jeden przeznaczyć na logowanie... gdzieś widziałem niezły tutorial...
Jak znajdę to ci wyślę linka...
Go to the top of the page
+Quote Post
benio101
post 11.01.2011, 20:12:47
Post #5





Grupa: Zarejestrowani
Postów: 111
Pomógł: 10
Dołączył: 16.07.2009
Skąd: Toruń

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


W checklogin, jeśli zalogowano pomyślnie, dajesz np.
  1. $_SESSION[loginok]=1;
W login_success dajesz na początku:
  1. $_SESSION[loginok]?$_SESSION[loginok]="":die("Precz, oszuście");


Ten post edytował benio101 11.01.2011, 20:14:05
Go to the top of the page
+Quote Post
intermediate
post 12.01.2011, 20:46:23
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.10.2010

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


dzięki, działa już nawet, jak ktoś otwiera bezpośrednio login_succes to wyskakuje "Precz, oszuście",
tylko teraz znowu jak jestem już na stronie login_success, wystarczy że odświeżę stronę to mi wyskakuje mi również ""Precz, oszuście". Tak chyba nie może być. Powinienem nadal pozostać na login_success.
Go to the top of the page
+Quote Post
ciekawskiii
post 12.01.2011, 20:52:27
Post #7





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


Jednym slowem, namieszales. Cos gdzies zle sprawdzasz


--------------------
Go to the top of the page
+Quote Post
benio101
post 12.01.2011, 22:14:15
Post #8





Grupa: Zarejestrowani
Postów: 111
Pomógł: 10
Dołączył: 16.07.2009
Skąd: Toruń

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


OK. To pierwszy krok za nami. Oczywiście, jak zacząłem, to dokończę robotę, tj. pomogę Ci, aż będzie dobrze.
Myślałem, że chodzi Ci o jednorazowy dostęp do strony login_success i że na niej ustawiasz parametr, że zalogowano.

W takim razie nie usuwaj sesji po jednokrotnym zalogowaniu:

Zamiast
  1. $_SESSION[loginok]?$_SESSION[loginok]="":die("Precz, oszuście");
daj
  1. if(!$_SESSION[loginok])die("Precz, oszuście");

Wtedy po zalogowaniu, tak długo login_succes będzie się pokazywać , aż nie wygaśnie sesja, czyli Użytkownik nie wyłączy przeglądarki, dostępu do komputera ani samego komputera.
Gdy sesja wygaśnie, np. właśnie poprzez zamknięcie przeglądarki, to będzie on musiał się ponownie zalogować.

Przy wylogowywaniu dodaj
  1. $_SESSION[loginok]="";
Wtedy wszystko będzie gitas.

Następny krok, to zamiast dawać komunikat Precz oszuście, przekieruj na stronę logowania z informacją, że sesja wygasła i prosisz o ponowne zalogowanie się, gdyż jeśli Użytkownikowi wygaśnie sesja, np. na chwilę wyłączą prąd, to dostanie komunikat "Precz oszuście" i może się zniechęcić, a nie będzie wiedział dlaczego, bo się na tym po prostu nie zna. Dlatego myślę, że o wiele lepiej jest dać przekierowanie na stronę logowania z informacją o konieczności ponownego zalogowania się. Tak na marginesie: To precz oszuście podałem jako przykład, nie najlepszy, lepiej właśnie przekierować na stronę logowania z notką, dlaczego każesz się ponownie logować.

Np.:
checklogin:
  1. if(!$_SESSION[loginok])die("<script>self.location.href='main_login.php?sesja=wygasla'</script>");

mainlogin:
Dodajesz gdzieś kod o treści:
  1. if($_GET["sesja"]=="wygasla")echo "Sesja wygasła. Proszę się ponownie zalogować.";
który poinformuje Użytkownika o tym, że ma się ponownie zalogować. Oczywiście treść możesz zmienić, sformatować i dodać, gdzie zechcesz.

Jeśli masz jeszcze jakieś pytania, to postaram Ci odpowiedzieć, jeśli źle Cię zrozumiałem, opisz dokładniej. Obiecuję, że postaram się pomóc.

Ten post edytował benio101 12.01.2011, 22:19:21
Go to the top of the page
+Quote Post
intermediate
post 13.01.2011, 11:23:58
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.10.2010

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


dzieki wielkie za pomoc, teraz działa wszystko gites. A komunikat zamierzałem zmienićsmile.gif
Go to the top of the page
+Quote Post
benio101
post 13.01.2011, 18:07:30
Post #10





Grupa: Zarejestrowani
Postów: 111
Pomógł: 10
Dołączył: 16.07.2009
Skąd: Toruń

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


No, to się bardzo cieszę 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 Wersja Lo-Fi Aktualny czas: 10.05.2024 - 09:28