2013-06-11 10 views
5

Zalogowałem użytkownika iw moim skrypcie PHP ustawiam zmienną sesji i przypisuję do niej nazwę użytkownika (ponieważ jest unikalna).Jak rozpoznać użytkownika w sesji w PHP

<?php 
session_start(); 
//$username= getting username from database and all after loggin 
$_SESSION['user_of_mywebsie']=$username; 
// using $username now 

Czy to jest właściwy i bezpieczny sposób? Jeśli nie, co można zrobić? sesja Teraz jest tworzony z nazwą użytkownika w nim ..

$sql_query=mysql_query("SELECT * FROM people WHERE username='$_SESSION['user_of_mywebsite']'"); 
while($row=mysql_fetch_assoc($sql_query)) 
{ 
$name=$row['name']; 
$profile_pic=$row['pro_pic_location']; 
} 

//now i will use $name and $profile_pic furthur 
+0

To są jedyne 2 linie, których potrzebujesz. – xdbas

+0

To wydaje się zbyt szerokie pytanie, które tak naprawdę nie ma konkretnej odpowiedzi i nie jest dobre dla StackOverflow - zobacz FAQ: http://stackoverflow.com/faq – qJake

+1

@SpikeX: To nie jest zbyt szeroki. Być może niezbyt jasne, ale pokazał, co robi i pyta, czy wszystko jest w porządku, czy też istnieją ukryte pułapki. – Jon

Odpowiedz

1

To jest całkowicie w porządku! Zmienna $ _SESSION będzie zawierała tylko informacje dotyczące konkretnego użytkownika witryny, niezależnie od tego, co napisałeś w $ _SESSION (ale, aby być uczciwym, istnieje kilka możliwości czytania "obcych" sesji, na przykład podczas korzystania z hostingu dzielonego lub wiele aplikacji itp.).

robię to dokładnie tak (co jest prawie takie same)

$_SESSION['user_name'] = $result_row->user_name; 

w moim skrypcie PHP logowania (co jest najbardziej ulubionych, pobrane i rozwidlony jeden na github i został sprawdzony przez niektórych bardzo wybrednych). Zobacz więcej skryptu here on github.

+0

Czy powinienem tworzyć zmienne sesji z długimi i nieprzewidywalnymi nazwami ... jak $ _SESSION ['user499dqCVVEFVRVEjjkfriopeq435234ewfwqef'], itp. – Zafta

+1

@Mukurpuri O ile nie używasz hostingu współdzielonego lub uruchamiania wielu aplikacji na jednym serwerze (niektóre serwery chmur działają tak) jest bezpieczny! – Sliq

1

Spowoduje to zapisanie nazwy użytkownika w sesji, ale nie jest szczególnie bezpieczna.

Jeśli jedyną rzeczą, którą trzymasz w sesji, jest nazwa użytkownika, jest to prawdopodobnie w porządku, ale jeśli masz dane osobowe przechowywane w sesji użytkowników, możesz pomyśleć o dodaniu zabezpieczenia.

znalazłem ten poręczny patrząc szybki poradnik dla bezpieczeństwa sesji http://phpsec.org/projects/guide/4.html

Ponadto, jeśli jesteś nowy w programowaniu php, to chyba lepiej użyć jednej z ram, które realizuje zarządzanie użytkownikami, jak to zostało zrobione wiele razy wcześniej, sprawdzone i udoskonalone. Nie trzeba tu wymyślać na nowo.

Jeśli używasz ramy, można sprawdzić to pytanie na temat ram i zarządzanie użytkownikami, a szczególnie tej odpowiedzi: https://stackoverflow.com/questions/10153619/looking-for-a-well-written-user-management-framework#10624058

0

to będzie działać, ale trzeba zwrócić uwagę na dwie rzeczy:

  1. musisz mieć pewność, że NIE jest dwóch lub więcej użytkowników o tej samej nazwie;
  2. co się stanie, jeśli użytkownik zalogowany (nazwa użytkownika, którego sesja jest ważna) zostanie usunięty i utworzony zostanie inny o tej samej nazwie?

W takich przypadkach może się zdarzyć, że użytkownik wciąż w sesji może zostać zalogowany ... ale jako inny użytkownik!

Spróbuj umieścić unikalny identyfikator użytkownika w sesji.