DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
Staro 02. 08. 2006.   #1
misk0
majstor
Wrote a book
 
Avatar misk0
 
Datum učlanjenja: 30.01.2006
Lokacija: Lugano - Switzerland
Poruke: 1.251
Hvala: 219
106 "Hvala" u 67 poruka
misk0 će postati "faca" uskoromisk0 će postati "faca" uskoro
Pošaljite ICQ poruku za misk0 Pošaljite poruku preko Skype™ za misk0
Default Jedno logovanje na 2 aplikacije

Ideja je imati 2 razlicite aplikacije (eventualno na razlicitim serverima) i obezbjediti jedan login. Recimo da su aplikacije phpBB i Joomla (lupam primjer), da pri registraciji oba prepravim registracione procedure i kad se registruje na jednom sistemu da se automatski registruje i na drugom. Znaci imam mogucnosti da prepravljam oba sistema jer su OS.
Kako bi izveli da kad se korisnik loguje na phpBB i klikne na nekom linku tog foruma na Joomla sajt, tj kad dodje na taj sajt da je vec ulogovan?

Interesuju me ideje, programski cu se vec snaci.
misk0 je offline   Odgovorite uz citat
Staro 02. 08. 2006.   #2
Ilija Studen
Direktor Kombinata
Invented the damn thing
 
Avatar Ilija Studen
 
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
Ilija Studen će postati "faca" uskoroIlija Studen će postati "faca" uskoro
Default

Zavisi za šta ti treba. Ako je za nešto kratkoročno ili nešto što ćeš samo ti koristiti onda igraj prljavo. Ako ti treba nešto ozbiljnije, što će koristiti više ljudi, što mora da bude integrisano sa postojećim sistemima (LDAP, postojeće aplikacije itd) onda tome treba pristupiti malo ozbiljnije.

Tema o kojoj razmišljam u skorije vreme je realizacija ovog drugog sistema (kako bi se activeCollba mogao integrisati u postojeća okruženja po firmama, bez potrebe da se hakuje kod ili da svaki zaposleni dobije još jedno korisničko ime i šifru koju treba pamtiti).

Ovde objektno orijentisano programiranje i proširivost kao osnova razvoja rešenja znaju da budu od velikog značaja. Uglavnom, meni je ponajdraža ideja o jednog login sistemu kome svaka aplikacija ima pristup. Interfejs unutar samih aplikacija je prilično jednostavan i sve što je bitno je da ga svaka aplikacija implementira:

* register($username, $password) - vraća novokreirani objekat User klase
* autheticate($username, $password) - vraća objekat User klase ili baca exception
* getUser($user_id) - vraća objekat User klase

User klasa ima mogućnosti da sačuva svoja svojstva u taj centralni sistem.

Kako ćeš realizovati samo skladištenje podataka, održavanje sesija itd itd itd - to je na centralizovanom sistemu da reši. Nije najjednostavnije moguće rešenje, ali je strašno fleksibilno jer su mehanizmi skladištenja i autentifikacije... zaključani. Aplikacije nemaju šta tu puno da razmišljaju.

Btw, pogledaj kako je to rešeno kod Djanga.
Ilija Studen je offline   Odgovorite uz citat
Staro 02. 08. 2006.   #3
zekica
Filip Milivojević
Certified
 
Datum učlanjenja: 06.06.2005
Lokacija: Pirot (Nis), Serbia, Serbia and Montenegro
Poruke: 51
Hvala: 0
0 "Hvala" u 0 poruka
zekica is on a distinguished road
Default

Hm, ako su te dve aplikacije na jednom domenu, onda neće biti problema (teoretski). Sad ne znam kako rade te aplikacije, ali u pincipu treba napraviti sledece:
- kad se korisnik registruje u jednoj aplikaciji, da se njegovi podatci upisu u drugu bazu (ako su na istom serveru ili je remote pristup bazi omogucen onda direktno u bazu, u suprotnom preko neke proxy skripte i slanja zahteva preko CURL-a ili tako nesto)
- ako se zahteva aktivacija preko email-a, onda kad se aktivira nalog na jednom mestu, da se upise da je aktiviran i u drugoj aplikaciji na isti način kao u prethodnom koraku
Ostaje samo login i logout:
- ako su na istom serveru, treba iz jedne aplikacije pozvati funkciju za login iz druge (ako je moguće) ili napraviti ekvivalentnu (koja će postaviti odgovarajuće cookie-je ili sta već)
- ako su na različitim serverima, i ako je u pitanju cookie-based login, onda obe aplikacije mogu biti na istom domenu (recimo prvaapp.domen.com i drugaapp.domen.com) pri čemu je najlakše napraviti ekvivalentnu funkciju za login ako je moguće ili pozvati drugu preko CURL-a, pokupiti cookie-je i proslediti ih klijentu...
- ako su aplikacije na različitim domenima, nemogu se postaviti cookies za drugo domen sa ovog, tako da se u tom slučaju podatci o login-u moraju slati u sklopu URL-a kojim se pristupa drugom sajtu, a na tom drugom sajtu napraviti nešto što će takve URL-ove prihvatati, postavljati cookie i otvarati stvarnu stranu sa sadržajem.

To je to u principu, nije nešto preterano komplikovano, ali nije ni jednostavno, tako da...
zekica je offline   Odgovorite uz citat
Staro 02. 08. 2006.   #4
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Citat:
Originalno napisao Ilija Studen
Tema o kojoj razmišljam u skorije vreme je realizacija ovog drugog sistema (kako bi se activeCollba mogao integrisati u postojeća okruženja po firmama, bez potrebe da se hakuje kod ili da svaki zaposleni dobije još jedno korisničko ime i šifru koju treba pamtiti).
Jedna dobar hack (ali ipak vro univerzalan i cist) za to sto pominjes je da se za login koristi pop3 server. Obicno u svakom poslovnom okruzenju ljudi vec imaju setovane naloge na mail serveru (sve, sve, ali to uvek postoji), i onda da bi izbegao cimanja sa duplim interfejsom nad nekom bazom i ne znam sta sve, naprosto probas da se ulogujes na pop3, ako uspes znaci login je ok, i to je to...

A sve radi vrlo transparentno, lokalni administrator moze da dodaje/brise korisnike kao i do tada, i prakticno ne mora nista da se menja u setupu sistema...

Tu foru sam koristio za login aplikaciju u nekadasnjoj internet sali RCUBa, i fino je radila par godina, sekeretarica je kreirala i brisala accounte u postojecoj aplikaciji za to, nismo ni liniju koda morali da promenimo za integraciju...
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 02. 08. 2006.   #5
Ilija Studen
Direktor Kombinata
Invented the damn thing
 
Avatar Ilija Studen
 
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
Ilija Studen će postati "faca" uskoroIlija Studen će postati "faca" uskoro
Default

Da, ali je hack

Ako uzmeš da je izvor autentifikacije proširiv (interfejs koji konkretni izvori moraju da implementiraju ili apstraktna klasa koju izvori treba da naslede - glasam za ovo drugo) onda lako možeš napraviti pop3 izvor - jedna klasa, korisnik samo kaže sistemu da koristi upravo nju u config.php fajlu i on je dobar.

Šta dobijaš kasnije? Mnogo... Dođe neko i integriše ga sa nekim postojećim ili novim metodima autentifikacije, napravi bolje skladište podataka i ponudi ga korisnicima itd itd. Nađe se recimo neko i napravi da možeš da koristiš Basecamp accounte za logovanje (jes da ne vidim preteranu poentu u tome, ali naći će se neko ko će to napraviti iz proste zafrkancije)

Jednostavno, možeš da radiš šta god ti padne na pamet. Nivo kompleksnosti rešenja je povećan, ali je fleksibilnost dovedena do te mere da više ne moraš previše da brineš o tome i na svaki feature request možeš da kažeš: Pera je to već napravio, evo ti link za download ili evo ti uputsvo pa integriši (ili pak najbolje: moj hourly rete je toliko, možemo da pričamo ).

A što se konkretnog slučaja tiče, kao što rekoh: igraj prljavo, hackuj skripte zekica rekao i ne bi trebalo da bude problema. Sranje je samo što modovi nikad nisu zvainično podržani i moraš sam da se brineš o njima prilikom upgradea.

Poslednja izmena od Ilija Studen : 02. 08. 2006. u 18:25.
Ilija Studen je offline   Odgovorite uz citat
Staro 02. 08. 2006.   #6
misk0
majstor
Wrote a book
 
Avatar misk0
 
Datum učlanjenja: 30.01.2006
Lokacija: Lugano - Switzerland
Poruke: 1.251
Hvala: 219
106 "Hvala" u 67 poruka
misk0 će postati "faca" uskoromisk0 će postati "faca" uskoro
Pošaljite ICQ poruku za misk0 Pošaljite poruku preko Skype™ za misk0
Default

Hvala svima na odgovorima. Ono sto je meni problem (mislim, otezava posao) jer da je jedna aplikacija neki web store napisan u ColdFusion i radi na MS SQL serveru. Znaci... totalno 2 drugacije tehnologije i baze i 2 masine i ... malo toga zajednickog.
Oki, interesuje me malo login sistem koristenjem sesija (vidio sam da ga koriste i Joomla i phpBB, vjerovatno jos tona php OS rjesenja). Koliko sam shvatio, kad se korisnik konektuje na sajt, u tabeli session se doda red sa session_id (generisano ne znam kako, nije ni vazno), i taj isti session bi trebao da bude kod usera u cookie-u. Kazem 'trebao bi' jer sam prateci malo Joomla-u uvidio da nije, mada moram jos malo iskontrolisati (ocistiti cookije i pratiti).
Zatim, taj korisnik tako razgleda sajt ovo, ono... kad odluci da se uloguje, taj red u tabeli dobije popunjeno polje 'logged' sa recimo username-om i slicno i onda CMS zna da je korisnik logovan i na osnovu toga se i ponasa.
Pitanja:
- Kako radi mehanizam za brisanje viska redova, tj sessija koje su istekle?
- Da li to znaci da ja mogu sve to uraditi preko pristupa bazi na ovaj nacin:
* korisnik se loguje na jednu aplikaciju - ispravno
* u bazu druge aplikacije dodam red u session sa cak istim session varijablom
* u taj red, u drugoj bazi promjenim polje logged u 'YES' ili sta je vec potrebno kako bi oznacio ulogovanog korisnika
* korisniku (buduci da je rijec o drugom domenu) posaljem cookie koji koristi druga aplikacija.

Hm.. ako ima kakvih clanaka na tu temu ili kakav help, dobro bi doshao

hvala jos jednom
misk0 je offline   Odgovorite uz citat
Staro 02. 08. 2006.   #7
dee
Domagoj Horvat
Expert
 
Avatar dee
 
Datum učlanjenja: 24.07.2006
Lokacija: Zagreb
Poruke: 502
Hvala: 22
10 "Hvala" u 8 poruka
dee is on a distinguished road
Pošaljite ICQ poruku za dee
Default

ne bi li ti bilo jednostavnije:

korisnik dolazi na jednu aplikaciju. aplikacija provjerava je li logiran u njenoj bazi? ako je, sve pet, ako nije, provjerava je li logiran u drugoj bazi? ako je, opet sve pet. ako nije, goni ga na svoju login stranu.

istu stvar radi i druga aplikacija.
__________________
postoje ludosti bez kojih je nemoguce ljudsko dostojanstvo
dee je offline   Odgovorite uz citat
Staro 02. 08. 2006.   #8
misk0
majstor
Wrote a book
 
Avatar misk0
 
Datum učlanjenja: 30.01.2006
Lokacija: Lugano - Switzerland
Poruke: 1.251
Hvala: 219
106 "Hvala" u 67 poruka
misk0 će postati "faca" uskoromisk0 će postati "faca" uskoro
Pošaljite ICQ poruku za misk0 Pošaljite poruku preko Skype™ za misk0
Default

Citat:
Originalno napisao dee
ne bi li ti bilo jednostavnije:
korisnik dolazi na jednu aplikaciju. aplikacija provjerava je li logiran u njenoj bazi? ako je, sve pet, ako nije, provjerava je li logiran u drugoj bazi? ako je, opet sve pet. ako nije, goni ga na svoju login stranu.
istu stvar radi i druga aplikacija.
Buduci da je informacija o sessiji smjestena u cookie koji je opet vezan za domen, nisam siguran da mozes citati cookije koji nisu vezani za tvoj domen.
misk0 je offline   Odgovorite uz citat
Staro 02. 08. 2006.   #9
dee
Domagoj Horvat
Expert
 
Avatar dee
 
Datum učlanjenja: 24.07.2006
Lokacija: Zagreb
Poruke: 502
Hvala: 22
10 "Hvala" u 8 poruka
dee is on a distinguished road
Pošaljite ICQ poruku za dee
Default

Citat:
Originalno napisao misk0
* u taj red, u drugoj bazi promjenim polje logged u 'YES' ili sta je vec potrebno kako bi oznacio ulogovanog korisnika
ako u tabeli sessiona imas polja u kojima imas user_id i stanje_usera u kojem su vrijednosti 0|1 (logiran|nelogiran), onda samo to provjeravas u drugoj bazi. a svaka aplikacija postavlja svoje cookije i pise u svoju bazu. ona druga samo cita.

znaci, svaka cita svoj cookie i zapis za tog usera u session tabeli druge baze. ako u nijednom ne nadje stanje=logirano -> salje na login skriptu. ako pak u ijednom nadje stanje=logirano -> i u svoju bazu pise user_id=logiran.

Edit: phpBB radi nesto takvo
__________________
postoje ludosti bez kojih je nemoguce ljudsko dostojanstvo

Poslednja izmena od dee : 02. 08. 2006. u 19:08.
dee je offline   Odgovorite uz citat
Staro 02. 08. 2006.   #10
misk0
majstor
Wrote a book
 
Avatar misk0
 
Datum učlanjenja: 30.01.2006
Lokacija: Lugano - Switzerland
Poruke: 1.251
Hvala: 219
106 "Hvala" u 67 poruka
misk0 će postati "faca" uskoromisk0 će postati "faca" uskoro
Pošaljite ICQ poruku za misk0 Pošaljite poruku preko Skype™ za misk0
Default

Citat:
Originalno napisao dee
ako u tabeli sessiona imas polja u kojima imas user_id i stanje_usera u kojem su vrijednosti 0|1 (logiran|nelogiran), onda samo to provjeravas u drugoj bazi. a svaka aplikacija postavlja svoje cookije i pise u svoju bazu. ona druga samo cita.

znaci, svaka cita svoj cookie i zapis za tog usera u session tabeli druge baze. ako u nijednom ne nadje stanje=logirano -> salje na login skriptu. ako pak u ijednom nadje stanje=logirano -> i u svoju bazu pise user_id=logiran.

Edit: phpBB radi nesto takvo
Da, ali recimo loguje se user u jednu aplikaciju, radi, i onda otvori drugu app. U toj drugoj app ti u tom trenutku ne znas username (nije ulogovan logicno), ne znas session_id od prve aplikacije jer ne mozes citati njegove cookie i kako mozes provjeriti uopste da li je logovan u prvoj aplikaciji??
misk0 je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
jedno pitanje u vezi preg_match... dejan86 Regular expression i htaccess 3 03. 07. 2009. 23:29
jedno pravno pitanje zvonko Istine i zablude 11 19. 02. 2009. 22:49
Automatsko logovanje orangem Sva početnička pitanja 17 15. 04. 2008. 23:52
Još jedno početničko....o .ME domenima dark_mark Sva početnička pitanja 1 16. 01. 2008. 00:35
Jedno strucno (pravno) pitanje... twix Opušteno 13 22. 02. 2007. 08:47


Vreme je GMT +2. Trenutno vreme je 21:00.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.