Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Logowanie z konta użytkownika do panelu administracyjnego
joka13
post 26.04.2010, 17:49:07
Post #1





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

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


Witam
Mam na stronie dwie grupy użytkowników:
- zwykli użytkownicy
- użytkownicy z dostępem do panelu administracyjnego.
Ci wszyscy użytkownicy są zapisani w jednej tabeli - rozróżniam ich na podstawie pola ranga (0 lub 1).

Ma działać to na takiej zasadzie, że wszyscy logują się za pomocą jednego formularza (kod, który mam wstawię niżej).
Następnie osoby, które mają mieć możliwość logowania się na konto admina (w polu ranga jest '1') po zalogowaniu się mają możliwość kliknięcia w link 'Panel adm...' (dodam, że login do pa i konta użytkownika jest taki sam) i zalogowania się do niego.

Mój problem dotyczy tej ostatniej kwestii, a mianowicie - jak zrobić, aby użytkownik mógł zalogować się do PA oraz podczas tej autoryzacji było sprawdzane, czy sesja użytkownika jest aktywna.

Oto fragmenty kodu:

funkcja admin_sesja:
  1. function admin_sesja ($wygasa){
  2. session_name('admin_sid');
  3. if(isset($_SESSION['start_time'])){
  4. if((time() - $_SESSION['start_time']) > $wygasa){
  5. redirect('./login.php');
  6. }
  7. }
  8. $_SESSION['start_time'] = time();
  9. }



index.php
  1. admin_sesja($config['admin_wygasa']); // funkcja sprawdzająca, czy sesja nie wygasła
  2. if(!isset($_SESSION['logged_admin'])){
  3. redirect('./login.php');
  4. }



login.php
  1. if(isset($_SESSION['logged_admin'])){
  2. redirect('./index.php');
  3. }
  4.  
  5. if(isset($_POST['login']) && isset($_POST['haslo'])){
  6. if(sprawdz_login($_POST['login'],$_POST['haslo'],$mysql['prefix']))
  7. {
  8. $_SESSION['logged_admin'] = 1;
  9. $_SESSION['login'] = $_POST['login'];
  10. $_SESSION['StartTimestamp'] = time();
  11. $_SESSION['UserIP'] = $_SERVER['REMOTE_ADDR'];
  12. $_SESSION['UserAgent'] = $_SERVER['HTTP_USER_AGENT'];
  13. redirect('./index.php');
  14. }
  15. }




Edit
Witam
Nie macie żadnego pomysłu jak się za to zabrać?
Może coś źle wyjaśniłem?

Ten post edytował joka13 26.04.2010, 17:51:02
Go to the top of the page
+Quote Post
wiiir
post 26.04.2010, 19:38:30
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


aktualnie tez zmierzam do zrobienia PA i ja chce to zrobic mniej wiecej tak...

Loguje sie normalnie jako uzytkownik, jesli uzytkownik ma prawa do PA klika wiec i dostaje logowanie, do czy ma sie wyswietlic logowanie czy odrazu PA sprawdzam w sesji czyli $_SESSION['zmienna dla admina']... jesli jest true oraz $_SESSION['zmienna dla usera'] tez jest true to wchodze do PA, jesli tylko $_SESSION['zmienna dla usera'] jest true to daje logowanie do PA i po zalogowaniu ustawiam $_SESSION['zmienna dla admina'], jesli wogole to $_SESSION['zmienna dla usera'] jest false to calkowicie wyswietlam logowanie do serwisu... a wylogowanie mozna osobno zrobic dla PA i z serwisu, wystarczy wywalic $_SESSION['zmienna dla admina']... mozna cos tam jeszcze pododawac zeby bylo bezpieczniej itd
Go to the top of the page
+Quote Post
joka13
post 26.04.2010, 21:37:00
Post #3





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

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


Próbowałem już takiej metody, ale problem jest tego typu, że pliki użytkownika i administratora są w dwóch różnych katalogach (także logowanie jest w dwóch różnych plikach). Wiąże się to z tym, że pojęcia nie mam w jaki sposób przekazać wartość $_SESSION['login_user'] do innego pliku.
Go to the top of the page
+Quote Post
nemis
post 27.04.2010, 21:59:53
Post #4





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 18.07.2007

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


Twój błąd polega na inicjacji sesji (session_start()) w jednej z funkcji.

Użyj session_start() na początku swojego pliku index.php, a we wszystkich plikach sesja będzie taka sama.
Go to the top of the page
+Quote Post
wiiir
post 28.04.2010, 20:48:41
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


Cytat(nemis @ 27.04.2010, 22:59:53 ) *
Twój błąd polega na inicjacji sesji (session_start()) w jednej z funkcji.

Użyj session_start() na początku swojego pliku index.php, a we wszystkich plikach sesja będzie taka sama.



no chyba musi miec wszedzie session_start inaczej nie bedzie mogl zweryfikowac czy jest sesja...
Go to the top of the page
+Quote Post
joka13
post 28.04.2010, 21:51:26
Post #6





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

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


Dokładnie tak, mam wszędzie session_start.

Problem w tym, że w pliku, gdzie jest logowanie admina chciałbym dać takie coś w warunku if:
$_SESSION['login'] == loginu podanego przez użytkownika podczas logowania do admina

$_SESSION['login'] - jest to login użytkownika zapisanego w sesji, gdy tenże użytkownik się zalogował. Problem polega na tym, że nie wiem jak wartość $_SESSION['login'] przekazać do pliku, gdzie odbywa się cały proces logowania admina.
Go to the top of the page
+Quote Post
wiiir
post 29.04.2010, 09:45:54
Post #7





Grupa: Zarejestrowani
Postów: 260
Pomógł: 34
Dołączył: 22.02.2010

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


Ale przeciez tego nie przekazujesz zobacz:

index.php

  1. if(!isSet($_SESSION['zalogowany'])){
  2. include_once 'zalogwany.php';
  3. }else{
  4. #header albo include co tam zrobisz
  5. header('location: logowanie.php');
  6.  
  7. }

zalogowany.php
  1. echo 'Witaj'.$_SESSION['zalogowany'];

logowanie.php
  1. echo 'Teraz ustawiam sesje';
  2. $_SESSION['zalogowany']='Osoba testowa';
  3. header('refresh:5;url:index.php')


Zrob sobie te 3 pliczki i zobacz jak to dziala.... chociaz dziwie sie ze nie wiesz jak zrobic logowanie dla admina jak masz normalne logowanie.
Zmiennych sesyjnych sie nie przekazuje .. sa to zmienne sesyjne czyli istnieja dopoki nie ma np: session_destroy();

Ten post edytował wiiir 29.04.2010, 09:46:31
Go to the top of the page
+Quote Post
gigzorr
post 29.04.2010, 10:08:08
Post #8





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


W bazie danych masz np. tabele rejestracja , i tam sa dajmy na to 4 kolumny
user/pw/repeatpw/ranga


Tworzysz sesje/tablice ->

$_SESSION['UserStatus'] = $result[0]['status'];


  1. if($_SESSION['UserStatus'] == 1)
  2. {
  3. // kod dla admina , dajmy na to ze admin to 1 a user 0
  4. }
  5.  
  6. elseif ($_SESSION['UserStatus'] == 0)
  7. {
  8. // kod dla uzytkownika
  9.  
  10. }

Go to the top of the page
+Quote Post
joka13
post 30.04.2010, 16:44:09
Post #9





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

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


Nie zrozumieliśmy się.
Ja nie chciałem kontynuować sesji użytkownika, lecz otworzyć zupełnie nową dla admina - z warunkiem, że sesja admina może być otwarta tylko wtedy, gdy sesja konkretnego użytkownika jest aktywna.
@gigzorr podsunął mi pomysł jak rozwiązać problem w inny sposób.

Dzięki
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 - 01:48