J'ai besoin d'utiliser un identifiant unique comme l'identifiant de session. Comment puis-je obtenir un identifiant de session en php?
session_start();
echo session_id();
Je ne vous recommanderais pas de commencer la session simplement pour obtenir un identifiant unique. Utilisez plutôt des éléments tels que uniqid()
car il est conçu pour renvoyer un identifiant unique.
Cependant, si vous avez déjà une session, utilisez bien sûr session_id()
) pour obtenir votre identifiant de session - mais ne vous fiez pas à cela, car "identifiant unique" n'est pas identique en tant qu '"identifiant de session" au sens commun: par exemple, dans la plupart des navigateurs, plusieurs onglets utiliseront le même processus et utiliseront donc le même identifiant de session dans le résultat - et, par conséquent, différentes connexions auront le même identifiant. C’est votre décision quant au comportement souhaité. Je vous en ai déjà parlé pour montrer la différence entre un identifiant de session et un identifiant unique.
Avant d'obtenir un identifiant de session, vous devez démarrer une session à l'aide de la fonction: session_start ().
Maintenant que vous avez démarré une session, vous pouvez obtenir un identifiant de session en utilisant: session_id ().
/* A small piece of code for setting, displaying and destroying session in PHP */
<?php
session_start();
$r=session_id();
/* SOME PIECE OF CODE TO AUTHENTICATE THE USER, MOSTLY SQL QUERY... */
/* now registering a session for an authenticated user */
$_SESSION['username']=$username;
/* now displaying the session id..... */
echo "the session id id: ".$r;
echo " and the session has been registered for: ".$_SESSION['username'];
/* now destroying the session id */
if(isset($_SESSION['username']))
{
$_SESSION=array();
unset($_SESSION);
session_destroy();
echo "session destroyed...";
}
?>
Vous avez la fonction uniqid pour un identifiant unique
Vous pouvez ajouter un préfixe pour le rendre plus unique
Source: http://pk1.php.net/uniqid
if(isset($_POST['submit']))
{
if(!empty($_POST['login_username']) && !empty($_POST['login_password']))
{
$uname = $_POST['login_username'];
$pass = $_POST['login_password'];
$res="SELECT count(*),uname,role FROM users WHERE uname='$uname' and password='$pass' ";
$query=mysql_query($res)or die (mysql_error());
list($result,$uname,$role) = mysql_fetch_row($query);
$_SESSION['username'] = $uname;
$_SESSION['role'] = $role;
if(isset($_SESSION['username']) && $_SESSION['role']=="admin")
{
if($result>0)
{
header ('Location:Dashboard.php');
}
else
{
header ('Location:loginform.php');
}
}