Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jedno okno log-in do kilku stronek.
Forum PHP.pl > Forum > Przedszkole
TOTALNY_AMATOR
Tak jak w temacia. Dokladniej mowiac jest tak:

Mam dwa programy ktore to sa "open source" i generlanie chcialbym usprawnic korzystanie z nich w taki to sposob ze:

Mamy program_1, program_2 i program_3 (aplikacje php).
oraz uzytkownikow z uprawnieniami a, b, c.

potrzebny jest interface ("zarejestruj sie" stronka) ktory to gdy sie zaloguje uztyk. z uprawnieniami_a to bedzie miec automatycznie dostep do np program_1 i program_3 natomiast gdy sie zaloguje uzytkownik z uprawnieniami c to np bede wstanie skorzystac z wszystkcih stronek bez dodatkowego logowania itd.
(w tym momencie trzeba sie logowac do kazdej stronki osobno)

Dodatkowym jak mi sie wydaje utrudnieniem jest fakt ze kazda z tych stronek ma swoja tabele uzytkownikow w bazie danych.

Czy moge liczyc na sugestie w jaki sposob zabrac sie za taki problem! bede wdzieczny nawet za trafne slowa kluczowe ktore to ultawia znalezienie tych informacji w internecie.

pozdrawiam
Amorph
Tabelaz userami+uprawnienia, po poprawnym logowaniu ustawiasz w sesji klucz z uprawnieniami i na poczatku kazdej strony:
  1. <?php
  2. if ( isset ( $_SESSION['uprawnienia'] ) AND $_SESSION['uprawnienia'] == 'jakies uprawnienie do ogladania tej strony' ){
  3.  
  4. // kod strony
  5.  
  6. }
  7. ?>

A jesli masz 3 rozne tabele z userami i haslami to swobodnie z tego mozesz wygenerowac 1 dodatkową z tymi userami i uprawnieniami do stron.
TOTALNY_AMATOR
hmm generalnnie to sprawa wyglda w ten sposob ze w programie_A (dotProject tak na marginesie) ustawilem taki kod zaraz za danymi uzytkownik
  1. <?php
  2. /*tak wyglada oryginaly kod*/
  3. $username = dPgetParam( $_POST, 'username', '' );
  4. $password = dPgetParam( $_POST, 'password', '' );
  5. /*a tak wyglada kod ktory dodalem aby zapisac w pamiec username i password*/
  6. $_SESSION['username'] = $username; // store a username
  7. $_SESSION['password'] = $password; // store a userpassword
  8. ?>

i jest spox tzn zapisuje te sesje co sprawdzilem poprzez isset function (tzn sprawdzilem to w programie_A)
natomiast gdy przechodze do programu_B (Mantis) to sesja sa niewidoczne dla tego programu

Notice: Undefined index: username in c:\program files\easyphp1-8\www\mantis\mantis\login.php on line 20

Notice: Undefined index: password in c:\program files\easyphp1-8\www\mantis\mantis\login.php on line 21

Generalnie jest w tym programie tak ze gdy sie chcesz zalogowac to jestes przekierowany na login_page.php gdzie podajemy swoj login i haslo a nastepnie te dane sa przekierowane na login.php i tam nastepuje logowanie.
Gdy na login.php ustawie ze f_username = "username" f_password="password" to loguje mnie do stronki automatycznie (wiec logicznie) (w kodzie ponizej linie 3 4).
natomiast gdy jest tak jak od lini 6 poczawszy
  1. <?php
  2. /*a w tym przypadku loguje automatycznie*/
  3. $f_username ='username';
  4. $f_password='password';
  5.  
  6. /*zamiastorginalej zawartosci stronki tak jak jest ponizej ustawie to co jest nas
    tepnie*/
  7.  
  8. // $f_username = gpc_get_string( 'username', '' );
  9. // $f_password = gpc_get_string( ' ', '' );
  10.  
  11. $f_username = $_SESSION['username'];
  12. $f_password = $_SESSION['password'];
  13. ?>

to niestety nie dziala i tak sie zastanwiam czy istnieje cos takiego jak globalne sesje .... badz gdzie jest blad!
z gory dzieki za wszelkei sugestie
PS oczywiscie zakladam ze uzytkownicy w tych programach maja ten sam login i haslo!!
Amorph
Sesje z założenia są globalne
Cytat
i jest spox tzn zapisuje te sesje co sprawdzilem poprzez isset function (tzn sprawdzilem to w programie_A)
natomiast gdy przechodze do programu_B (Mantis) to sesja sa niewidoczne dla tego programu

Jest spore prawdopodobienstwo, że w anglojęzycznym skrypcie, który zapewne też ma sesje może być sesja username i password
TOTALNY_AMATOR
Cytat(Amorph @ 14.11.2006, 12:18:57 ) *
Sesje z założenia są globalne

Jest spore prawdopodobienstwo, że w anglojęzycznym skrypcie, który zapewne też ma sesje może być sesja username i password

hmmm nie wydaje mi sie poniewaz ustawiajac usernamee i passwordd bylo podobnie
ackzolwiek zrobilem tak
zamiast
  1. <?php
  2. $f_username = $_SESSION['username']; $f_password = $_SESSION['password'];
  3. ?>

jest tak
  1. <?php
  2. $f_username = session_decode('username');
  3. $f_password = session_decode('password');
  4. ?>

i tym samym pozbylem sie problmeu

Notice: Undefined index: username in c:\program files\easyphp1-8\www\mantis\mantis\login.php on line 20

Notice: Undefined index: password in c:\program files\easyphp1-8\www\mantis\mantis\login.php on line 21


aczkolwiek uzywajac ten samej funkcji isset do sprawdzenie czy sessja userneme i password is set to wyswietla mi komunikat ze sessji w tym drugim programie nie ma.

Tak wiec szukam dalej smile.gif.... jak rozwiaze problem to napisze

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

niestety to session_decode to jakas pomylka bo co bym tam nie wstawil to bledu nie pokaze wiec dupa jasia

Jesli ktos ma pomysl co moge sprobwac zeby wartosc sesji skopiowac do username i password to bede wdzieczny.

generlanie stanelo na tym ze w ponizszy sposob zapisuej dane w sesji i to sie wydje byc ok bo jak odczytuje to pokazuej to co zapisalem
  1. <?php
  2. $_SESSION['username'] = $username; // store a username
  3.  $_SESSION['password'] = $password; // store a usetpassword
  4. ?>


Teraz potrzebne jest cos zeby w tym drugim program on odczytal te wartosci i skopiowale do username i password

probwalem np tak:

  1. <?php
  2. $f_username = $SESSION('username');
  3. $f_password = $SESSION('password');
  4. ?>
ale niestety pokazuej ze username i password sa niezane.

Z gory wielkie dziki za sugestie rozwiazania tego problemu!





-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
Postanowielem sprobowac rozwiazac ten problem uzywajac URL
Zamierzam przekazac prze URL SID (session id) i mam nadzieje ze gdy ten
drugi program go otrzyma to juz nie utworzy sesji tylko bedzie korzystac z tej samej
powinno sie dac poniewaz te programy do kotrych chce przekazac znajdauja sie na tym samym serwerze i przez to moge uzywac "local variables" (czyli wymaganie ze strony php-tak wyczytalem).
Aczkolwiek przekazanie SID sie nie udaje....
czesc kodu w kotrej proboje te session id przekazac wyglada nastepujsa (odnsnie tego manuala)w ktorym to jest przyklad
  1. <a href="..//mantis/mantis/login.php?<?php echo SID; ?>">mantis</a>

gdy przechodze do tej drugie stronki to adres przekazwyany ma ta wartos: "http://localhost//mantis/mantis/login_page.php?"
wowczas gdy ja spodziewam sie cos takiego "http://localhost//mantis/mantis/login_page.php?SID=0a214e6454e60ca921b2bbdb421dc788"

poza tym gdy moim programie href="Tutaj wszystko jest jednego koloru nawet <?php echo ...?>" a nie tak jak powyzej


dodatkow w php.ini ustawielm
session.use_trans_sid = 1 (bylo = 0)
session.auto_start = 1 (bylo = 0)

aczkowliek to sie nie wydaje pomagac.

Ktos jest wstanie mi pomoc?


EUREKA
Tak wiec po usilnych dzialanich udalo mi to rozwiazac. Zdaje sobie sprawe z tego ze bedzie trzeba jeszcze popracowac nad bezpieczenstwem (co moze tez byc bardzo trudne) ale poki co osiagnalem to co chcialem.
Mianowicie:

W programie_A ktorym sie loguje jako pierwszy dodalem dwie linie
  1. <?php
  2.  
  3.  $_SESSION['username'] = $username; // store a username
  4.  $_SESSION['password'] = $password; // store a password
  5. ?>

a link do tej drugiej strony wyglada nastepujaco
  1. <a href="/mantis/mantis/login.php?<?php echo 'SID='.SESSION_ID(); ?>">mantis</a>


nastepnie w programie_B (w powyzszym linku mantis) - do ktorego chce miec dostep za pomoca tego linka bez koniecznosci ponownego logowania - dodalem to:
  1. <?php
  2. $f_username = $_SESSION['username'];
  3. $f_password = $_SESSION['password'];
  4. ?>


Dodatkowa zauwazylem ze jesli w linku do jest podane session_id to wtedy ten drugi program nie otwiera nowej sesj - gdy probwalem uzyc session_start() to dosatlem komunikat ze sesja juz isteniej.
Poza tym co mnie znacznie zwolnilo byl fakt ze uzywalem jak sie okazalo nie za dobrego php editora (FREE LIGHT php EDIT) i w zwiazku z tym w linku do tej drugiej stronki (ten co powyzej) ten editor nie wyszegolnial mi <?php echo....?> w taki sposob jak tutaj np na forum tzn ze widac ze w srodku href jest otwarte php. przez co koncentrowalem sie dlugo na tym. oczywiscie z pkunktu widzenia php bylo ok.

Jesli bedzie koniecznie ukrycie session Id (czyli ta olbrzymia luka bezpieczenstwa) to bede pisac dalej.
jesli ktos ma jakis komentarz odnosnie tego co napisane powyzej to chetnie poczytam

PS wiem ze dla chyba wszystkich rozwiazanie tego problemu zjeloby pare minut ale dal mnie to jest taki maly sukcesik biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.