2013-06-11 14 views
5

Accedo a un utente e, nel mio script PHP, creo una variabile di sessione e assegno un nome utente (poiché è univoca).Come identificare un utente in sessione in PHP

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

Ora è questo il modo giusto e sicuro? Se no, cosa si può fare? Ora sessione viene creato con il nome utente in esso ..

$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

Queste sono le uniche 2 linee necessarie. – xdbas

+0

Questa sembra una domanda troppo ampia che non ha una risposta specifica e non è adatta per StackOverflow: consulta le domande frequenti: http://stackoverflow.com/faq – qJake

+1

@SpikeX: non è eccessivamente ampio. Forse non troppo chiaro, ma ha mostrato cosa sta facendo e chiede se è OK o se ci sono insidie ​​nascoste. – Jon

risposta

1

Questo è totalmente giusto! La variabile $ _SESSION conterrà solo le informazioni per uno specifico visitatore del tuo sito web, indipendentemente da ciò che hai scritto nella $ _SESSION (ma, per essere onesti, ci sono alcune possibilità di leggere le sessioni "straniere", ad esempio quando usi l'hosting condiviso o configurazioni multi-app, ecc.).

lo sto facendo esattamente come questo (che è quasi uguali ai suoi)

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

nel mio script PHP di accesso (che è il più recitato, scaricato e biforcuta uno su GitHub, ed è stato controllato da alcune persone che sono molto esigenti). Vedi di più dello script here on github.

+0

Quindi dovrei creare variabili di sessione con nomi lunghi e imprevedibili .. come $ _SESSION ['user499dqCVVEFVRVEjjkfriopeq435234ewfwqef'], ecc. – Zafta

+1

@Mukurpuri A meno che tu non stia usando l'hosting condiviso o eseguendo più app su un server (alcuni cloud server funzionano così) tutto è sicuro! – Sliq

1

Questo memorizzerà il nome utente nella sessione, ma non è particolarmente sicuro.

Se l'unica cosa che si tiene nella sessione è il nome utente, è probabile che questo sia corretto, ma se si dispone di informazioni personali memorizzate nella sessione degli utenti, si potrebbe voler aggiungere un po 'di sicurezza.

Ho trovato questo pratico breve tutorial in cerca di sicurezza sessione http://phpsec.org/projects/guide/4.html

Inoltre, se siete nuovi alla programmazione php, è probabilmente meglio utilizzare uno dei quadri che implementa la gestione degli utenti, in quanto questo è stato fatto molti volte prima, testato e perfezionato. Non c'è bisogno di reinventare la ruota qui.

Se si utilizza un framework, è possibile controllare questa domanda su quadri e gestione degli utenti ed in particolare questa risposta: https://stackoverflow.com/questions/10153619/looking-for-a-well-written-user-management-framework#10624058

0

che funzionerà, ma bisogna prestare attenzione a due cose:

  1. devi essere sicuro che NON ci siano due o più utenti con lo stesso nome;
  2. cosa succede se un utente che ha effettuato l'accesso (nome utente la cui sessione è valida) viene eliminato e viene creato un altro con lo stesso nome?

In questi casi può capitare che un utente ancora in sessione possa trovarsi loggato ... ma come un altro utente!

Provare a inserire un ID utente univoco in sessione.

Problemi correlati