function generate_session_id(&$db)
{
$user_sess_id = md5(uniqid(mt_rand(), true);
try
{
$stmt = $db->prepare("SELECT COUNT(*) AS session_exists FROM sessions WHERE session_id = :session_id");
$stmt->bindParam(':session_id', $user_sess_id);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if($result['session_exists'] == 1)
{
// Recursion !
generate_session_id($db);
}
else
{
return $user_sess_id;
}
}
catch(PDOException $e)
{
die("generate_session_id(): " . $e->getMessage());
}
}
Cette fonction est-elle sécuritaire à utiliser ou présente-t-elle des failles? Son seul but est de générer un identifiant unique pour chaque session.Cette fonction récursive peut-elle devenir folle?
En outre, s'il s'agit de MySQL, il pourrait utiliser un champ d'auto-incrémentation. –
Cela dépend de ce qu'il veut exactement, mais oui, je suis d'accord. Bon point sur le 'md5' aussi bien. – deceze