function startSession($SESSNAME, $login, $database = LOCATION) { global $dbh; // le lien MySQL global $stylesheet; /* pour qu'à l'ouverture de la session le user récupère de suite son style */ global $PMBuserid, $PMBusername, $PMBgrp_num; global $checkuser_type_erreur; global $PMBusernom; global $PMBuserprenom; global $PMBuseremail; global $PMBdatabase; if (!$PMBdatabase) { $PMBdatabase = $database; } // nettoyage des sessions 'oubliées' cleanTable($SESSNAME); // génération d'un identificateur unique // initialisation du générateur de nombres aléatoires mt_srand((double) microtime() * 1000000); // nombre aléatoire entre 1111111111 et 9999999999 $SESSID = mt_rand(1111111111, 9999999999); // début session (date UNIX) $SESSstart = time(); // adresse IP du client $IP = $_SERVER['REMOTE_ADDR']; $query = "SELECT rights, user_lang FROM users WHERE username='******'"; $result = pmb_mysql_query($query, $dbh); $ff = pmb_mysql_fetch_object($result); $flag = $ff->rights; // inscription de la session dans la table $query = "INSERT INTO sessions (SESSID, login, IP, SESSstart, LastOn, SESSNAME) VALUES("; $query .= "'{$SESSID}'"; $query .= ", '{$login}'"; $query .= ", '{$IP}'"; $query .= ", '{$SESSstart}'"; $query .= ", '{$SESSstart}'"; $query .= ", '{$SESSNAME}' )"; $result = pmb_mysql_query($query, $dbh); if (!$result) { $checkuser_type_erreur = CHECK_USER_PB_OUVERTURE_SESSION; return CHECK_USER_PB_OUVERTURE_SESSION; } // cookie pour le login de l'utilisateur setcookie($SESSNAME . "-LOGIN", $login, 0); // cookie pour le nom de la session setcookie($SESSNAME . "-SESSNAME", $SESSNAME, 0); // cookie pour l'ID de session setcookie($SESSNAME . "-SESSID", $SESSID, 0); // cookie pour la base de donnée setcookie($SESSNAME . "-DATABASE", $PMBdatabase, 0); // mise à disposition des variables de la session define('SESSlogin', $login); define('SESSname', $SESSNAME); define('SESSid', $SESSID); define('SESSstart', $SESSstart); define('SESSlang', $ff->user_lang); define('SESSrights', $flag); /* param par défaut */ $requete_param = "SELECT * FROM users WHERE username='******' LIMIT 1 "; $res_param = pmb_mysql_query($requete_param, $dbh); $field_values = pmb_mysql_fetch_row($res_param); $i = 0; while ($i < pmb_mysql_num_fields($res_param)) { $field = pmb_mysql_field_name($res_param, $i); $field_deb = substr($field, 0, 6); switch ($field_deb) { case "deflt_": global ${$field}; ${$field} = $field_values[$i]; break; case "deflt2": global ${$field}; ${$field} = $field_values[$i]; break; case "param_": global ${$field}; ${$field} = $field_values[$i]; break; case "value_": global ${$field}; ${$field} = $field_values[$i]; break; case "xmlta_": global ${$field}; ${$field} = $field_values[$i]; break; case "deflt3": global ${$field}; ${$field} = $field_values[$i]; break; default: break; } $i++; } $requete_nom = "SELECT nom, prenom, user_email, userid, username, grp_num FROM users WHERE username='******' "; $res_nom = pmb_mysql_query($requete_nom, $dbh); $param_nom = pmb_mysql_fetch_object($res_nom); $PMBusernom = $param_nom->nom; $PMBuserprenom = $param_nom->prenom; $PMBgrp_num = $param_nom->grp_num; $PMBuseremail = $param_nom->user_email; // pour que l'id user soit dispo partout define('SESSuserid', $param_nom->userid); $PMBuserid = $param_nom->userid; $PMBusername = $param_nom->username; /* on va chercher la feuille de style du user */ $stylesheet = $deflt_styles; //Ouverture de la session php header("Expires: Sat, 01 Jan 2000 00:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: post-check=0, pre-check=0", false); session_cache_limiter('must-revalidate'); session_name("pmb" . SESSid); session_start(); //Récupération de l'historique $query = "select session from admin_session where userid=" . $PMBuserid; $resultat = pmb_mysql_query($query); if ($resultat) { if (pmb_mysql_num_rows($resultat)) { $_SESSION["session_history"] = @unserialize(@pmb_mysql_result($resultat, 0, 0)); } } return CHECK_USER_SESSION_OK; }
function startSession($SESSNAME, $login) { global $dbh; // le lien MySQL global $stylesheet; /* pour qu'à l'ouverture de la session le user récupère de suite son style */ global $checkempr_type_erreur; // nettoyage des sessions 'oubliées' cleanTable($SESSNAME); // génération d'un identificateur unique // initialisation du générateur de nombres aléatoires mt_srand((double) microtime() * 1000000); // nombre aléatoire entre 1111111111 et 9999999999 $SESSID = mt_rand(1111111111, 9999999999); // début session (date UNIX) $SESSstart = time(); // adresse IP du client $IP = $_SERVER['REMOTE_ADDR']; // inscription de la session dans la table $query = "INSERT INTO sessions (SESSID, login, IP, SESSstart, LastOn, SESSNAME) VALUES("; $query .= "'{$SESSID}'"; $query .= ", '{$login}'"; $query .= ", '{$IP}'"; $query .= ", '{$SESSstart}'"; $query .= ", '{$SESSstart}'"; $query .= ", '{$SESSNAME}' )"; $result = pmb_mysql_query($query, $dbh); if (!$result) { $checkempr_type_erreur = CHECK_EMPR_PB_OUVERTURE_SESSION; return CHECK_EMPR_PB_OUVERTURE_SESSION; } // cookie pour le login de l'utilisateur setcookie($SESSNAME . "-LOGIN", $login, 0); // cookie pour le nom de la session setcookie($SESSNAME . "-SESSNAME", $SESSNAME, 0); // cookie pour l'ID de session setcookie($SESSNAME . "-SESSID", $SESSID, 0); // cookie pour la base de donnée setcookie($SESSNAME . "-DATABASE", $PMBdatabase, 0); // mise à disposition des variables de la session define('SESSlogin', $login); define('SESSname', $SESSNAME); define('SESSid', $SESSID); define('SESSstart', $SESSstart); //Ouverture de la session php header("Expires: Sat, 01 Jan 2000 00:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: post-check=0, pre-check=0", false); session_cache_limiter('must-revalidate'); session_name("pmb" . SESSid); session_start(); return CHECK_EMPR_SESSION_OK; }