Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] problem z zabezpieczeniem logowania
intermediate
post
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ć(IMG:style_emoticons/default/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
 
Start new topic
Odpowiedzi
benio101
post
Post #2





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

Posty w temacie


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

 



RSS Aktualny czas: 16.10.2025 - 14:02