1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| public function __construct ($bd,$login, $password) {
try
{
//Si on a des arguments on est dans la première ouverture de session
if(isset($bd) && !empty($bd)){
$this->connexion = parent::__construct($this->getDns(), $this->login, $this->password);
// pour mysql on active le cache de requête
if($this->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql')
$this->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
return $this->connexionSpecifique($bd,$login,$password);
}
else {
//Récupération des données en session
$this->connexion = parent::__construct('mysql:dbname='.$_SESSION['nomBd'].';host='.$this->nomServeur.';', $_SESSION['login'], $_SESSION['password']);
// pour mysql on active le cache de requête
if($this->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql')
$this->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
return $this->connexion;
}
}
catch(PDOException $e) {
//Afficher un message d'erreur
echo "Erreur de construction de la connexion.";
}
}
function connexionSpecifique($bd,$login,$password){
$sql = "SELECT b.*, u.ID AS idUser FROM Bases AS b, RelBaseUtilisateur AS r, Utilisateurs AS u
WHERE u.Login = '".$login."'
AND u.Password = '".$password."'
AND r.IdUtilisateur = u.ID
AND r.IdBase = b.ID";
$result = $this->executeQuery($sql);
//Si on a le même utilisateur et mot de passe dans plusieurs BD
foreach($result as $base){
if($base['nomBd'] == $bd){
$baseSpecifique = $base;
}
}
try
{
$connexionSpe = parent::__construct('mysql:dbname='.$baseSpecifique['nomBd'].';host='.$baseSpecifique['nomServeur'].';', $baseSpecifique['login'], $baseSpecifique['password']);
// pour mysql on active le cache de requête
if($this->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql')
$this->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
//Sauvegarde de la connexion spécifique
$this->saveConnexion($baseSpecifique['ID'],$baseSpecifique['idUser']);
return $connexionSpe;
}
catch(PDOException $e) {
//Afficher un message d'erreur
echo "Erreur de construction de la connexion spécifique.";
}
}
function saveConnexion($bd,$idUser){
date_default_timezone_set('Europe/Paris');
$date = date("Y-m-d H:i:s",time());
$adresseIp = $_SERVER['REMOTE_ADDR'];
$sql = "INSERT INTO Connexions (IdBase,IdUtilisateur,Date,AdresseIp)
VALUES(".$bd.",".$idUser.",".$date.",".$adresseIp.")";
$result = $this->executeSQL($sql);
} |
Partager