Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Logowanie użytkownika niezaleznie od domeny
Forum PHP.pl > Forum > Przedszkole
patryk9200
Cześć,

Potrzebuję na potrzeby strony stworzyć panel logowania za pomocą którego gdy się zaloguję to do wielu usług jednocześnie, chodzi coś jak zrobione to jest w Windows Live ID. Raz się loguję, a rozpoznaje mnie na wszystkich serwisach.
Próbowałem sam coś takiego zrobić ale mam taki problem, że gdy zaloguję się na stronę np. mojastrona.pl to automatycznie loguje mnie również na np. mojastrona.pl/innastrona/, natomiast gdy wejdę na adres mojastrona.pl/innastrona/ i się zaloguje to nie rozpozna mnie już na mojastrona.pl.
Ma ktoś pomysł albo może mi podpowiedzieć jak to rozwiazać? wolałbym nie robić tego na zasadzie przekierowania ponieważ wtedy koliduje mi to z inną funkcją którą zbudowałem na potrzeby strony.

.
Michaxxx
urzytkownika
Ee... Nie wystarczy sesja?
Wykrywacz
Zrób tak na każdej "stronie" weryfikuj sobie użytkownika, sprawdzając czy wartości w $_SESSION są pełne.
Najprostszy przykład
  1. <?php
  2. if (isset($_SESSION['usr']) and isset($_SESSION['pas']){
  3. // I tu sobie zgodnie ze szczwanym planem sprawdzasz czy faktycznie user o takim haśle istnieje.
  4. }else {
  5. //Jeżeli nie to wywalasz mu panel do logowania, w którym po prawidłowym zalogowaniu wrzucasz jego usr i pas do $_SESSION
  6. }
  7. ?>

W ten sposób raz się logujesz, a potem hasasz radośnie po całej reszcie tam i nazad.
patryk9200
sesja owszem, z tym, że działa ona tylko do domeny głównej i podkatalogów, natomiast ja potrzebuję, żeby działało to tak, że zaloguję sie w jakimś wirtualnym katalogu i rozpozna mnie też na domenie głównej


Cytat(Wykrywacz @ 30.03.2010, 22:01:29 ) *
Zrób tak na każdej "stronie" weryfikuj sobie użytkownika, sprawdzając czy wartości w $_SESSION są pełne.
Najprostszy przykład
  1. <?php
  2. if (isset($_SESSION['usr']) and isset($_SESSION['pas']){
  3. // I tu sobie zgodnie ze szczwanym planem sprawdzasz czy faktycznie user o takim haśle istnieje.
  4. }else {
  5. //Jeżeli nie to wywalasz mu panel do logowania, w którym po prawidłowym zalogowaniu wrzucasz jego usr i pas do $_SESSION
  6. }
  7. ?>

W ten sposób raz się logujesz, a potem hasasz radośnie po całej reszcie tam i nazad.

teoretycznie mogę tak zrobić, ale nie jest to najbezpieczniejsze rozwiazanie
Wykrywacz
Nie czaje albo jestem za głupi dla tego pytania, albo to pytanie dla mnie.

Budujesz sobie katalogi

główny
-- podkatalog zjedz moje szelki
-- podkatalog jaja strusia
----- pod katalog pod katalogu wapienne schadzka

Każdy z nich ma swój index.php i domeny kolejno do nich prowadzące to
główny -> glowny.pl
zjedz moje szelki -> zjedzmojeszelki.pl
...
..
itd.

O takiej sytuacji mówisz? Bo nie czaje gdzie kolwiek wrzucisz w $_SESSION i będziesz ją potem sobie odświerzał i sprawdzał czy w $_SESSION o tych i tych parametrach są dane.. no puki przeglądary nie zamknięsz wszędzie będzie cie witać jak swojego....
WebSee
Wystarczy, że zapiszesz w sesji także nazwę strony lub adres, na którą się logujesz.

<?php
session_start();
if (isset($_SESSION['usr']) and isset($_SESSION['pas'] and $_SESSION['pagename'] == 'nazwastrony/adres'){
// I tu sobie zgodnie ze szczwanym planem sprawdzasz czy faktycznie user o takim haśle istnieje.
}else {
//Jeżeli nie to wywalasz mu panel do logowania, w którym po prawidłowym zalogowaniu wrzucasz jego usr i pas do $_SESSION
}
?>

I przy logowaniu zawsze do zmiennej $_SESSION['pagename'] wysyłasz nazwę strony/adres

Pozdrawiam
zend
Jeżeli dobrze zrozumiałem to musisz mieć kilka tablic wielowymiarowych w sesji
  1. //tak inicjujesz
  2. $_SESSION['strona1'] = array('login' => 'xxx' , 'pass' => 'xxx');
  3. $_SESSION['moja_strona'] = array('login' => 'xxx' , 'pass' => 'xxx');
  4.  
  5. //tak sprawdzasz
  6. if(isset($_SESSION['moja_strona']['login']) && $_SESSION['moja_strona']['login'] == 'poprawny login'))
  7. {
  8.  
  9. }
Wykrywacz
Ale po co mu ten pagename? przecież weryfikacji i tak nie będzie opierał na samym sprawdzeniu issetem czy jamiś tam ==

Patryk strzelasz se tablice z użytkownikami gdzie trzymasz parametry do weryfikacji i na każdej stronie po tym gdzie jedziesz najpierw issetem sprawdzasz czy jest wogóle po co zawracać sobie głowe nie mówiąc o bazie. W każdym razie jak isset jest wporzo to walisz mu jakims sprawdzaczem typu

  1. $super_select = mysql_query("select count(*) from super_tablica_z_userami where user = addslashes($_SESSION['iser']) and pass= md5($_SESSION['pass']);
  2. potem jakieś sprawdzonko czy taki user jest typu
  3. if (mysql_num_rows($super_select) > 0){
  4. return 'jest wporzo';
  5. }else{
  6. return 'nie ma surfowania bez logowania';
  7. }


I tak na każdej nowo otwieranej stronie i styknie bez jakiś tam pagenameów,
zend
"mojastrona.pl to automatycznie loguje mnie również na np. mojastrona.pl/innastrona/, natomiast gdy wejdę na adres mojastrona.pl/innastrona/ i się zaloguje to nie rozpozna mnie już na mojastrona.pl" zakładam, że dane dostępowe są inne stąd te problemy
Wykrywacz
Prawdę mówiąc ciekaw jestem jak widzielibyście bezpieczeństwo takiego skryptu bez jakiej kolwiek wspólnej autoryzacji, jeżeli jest to ileś serwisów z osobnymi bazami userów. Bo o ile jeszcze jestem wstanie wyobrazić sobie przy większej ilości skalę tworzenia powiązań to cały czas powracam mi jedno zasadnicze pytanie "Po jaką cholerę", skoro najlepszy efekt wymaga stworzenia 1 tabeli?
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.