Support exclusif des mots de passe hachés avec la fonction crypt pour l'authentification des utilisateurs + adaptation du format des identifiants utilisateurs de "nom" en "nom@domaine" + ajout de la possibilité pour un administrateur de gérer les possessions des autres utilisateurs + ajout d'une confirmation pour la suppression d'un alias virtuel + nettoyage du code + ajout de commentaires au format PHPDoc + gestion de certaines exceptions du pilote PDO SQLite + suppression du fichier testObjet.php + suppression des fins de lignes vides sur tous les fichiers
@ -24,6 +26,13 @@ if (isset($_GET['erreur']) && !empty($_GET['erreur'])){
case 2:
echo "<pclass=\"alias_virtuel_ajout_ko\">Erreur : aucun alias virtuel créé car une donnée est erronée ou manquante.</p>";
break;
case 3:
echo "<pclass=\"alias_virtuel_ajout_ko\">Erreur : L'alias virtuel est déjà existant.</p>";
break;
case 4:
echo "<pclass=\"alias_virtuel_ajout_ko\">Erreur : La base SQLite n'est pas accessible en écriture. Il faut que la base et le répertoire <i>bdd</i> appartiennent à <i>www-data</i>.</p>";
* Cette méthode un peu spéciale est le constructeur, elle est exécutée lorsque vous "créez" votre objet. Elle doit initialiser les attributs de la classe.
*/
# méthode constructeur
public function __construct()
{
$this->niveau_carburant = 50;
$this-> = 3;
$this->nombre_roues = 4;
}
/**
* Première méthode accessible par tous et modifiant le niveau de carburant
*/
# méthode
public function modifier_carburant(int $niveau)
{
$this->niveau_carburant = $niveau;
}
/**
* Seconde méthode accessible à tous et modifiant le nombre de portes
*/
# méthode
public function modifier_nb_portes(int $nb_portes)
//$req = $pdo->query('SELECT * FROM postfix_alias_virtuels');
// Filtre des alias virtuels de l'utilisateur courant
/*$reqDomaineDefaut = $pdo->query('SELECT domaine FROM postfix_domaines WHERE defaut=1 LIMIT 1');
foreach ($reqDomaineDefaut as $cle => $domaineDefaut) {
$req = $pdo->query('SELECT * FROM postfix_alias_virtuels WHERE courriel='."\"$_SESSION[pseudo_utilisateur]".'@'."$domaineDefaut[domaine]\"");
}*/
$req = $pdo->query('SELECT * FROM postfix_alias_virtuels WHERE courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)');
$req = $pdo->query('SELECT * FROM postfix_alias_virtuels WHERE destination='."\"$_SESSION[pseudo_utilisateur]\"");
$liste_alias_virtuels = array();
foreach ($req as $alias_virtuels_bdd => $alias_virtuels) {
//foreach ($_GET as $id_alias_virtuel => $etat_alias_virtuel) {
//echo "$id_alias_virtuel et $etat_alias_virtuel";
//echo 'UPDATE postfix_alias_virtuels SET active='."$etat_alias_virtuel".' WHERE id='."$id_alias_virtuel".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
//die();
echo "<pre>";
var_dump($_POST);
echo "</pre>";
//echo afficheDomaineDefautPostfix($pdo);
//die();
//$req = $pdo->query('DELETE FROM postfix_alias_virtuels WHERE id='."$_GET[supprAliasVirtuel]".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)');
$req='INSERT INTO postfix_alias_virtuels (courriel,destination,active) VALUES (:courriel,:alias_virtuel,1)';
die ("Erreur de requête d'ajout d'alias virtuel : ".$e->getMessage());
// Récupération du code de retour de la commande SQLite.
$code_retour=$sql->errorInfo();
if ($code_retour[0]=="23000") {
// Code de retour envoyé par le pilote PDO SQLite signifiant que la contrainte "UNIQUE" du champ "courriel" de la table "postif_alias_virtuels" est violé. L'alias envoyé via le formulaire par l'utilisateur a déjà été renseigné
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête d'ajout d'alias virtuel : ".$e->getMessage());
}
}
}
//Tester les injections SQL
/**
* Fonction d'activation/désactivation d'un alias virtuel.
* Suite à une soumission du formulaire dédié, cette fonction va traiter l'ensemble des alias d'un utilisateur.
* Elle occasionnera peut-être des baisses de performance si un très grand nombre d'alias existe pour un utilisateur donné (le traitement n'intervenant pas spécifiquement pour l'entrée modifiée).
*/
function modifEtatAliasVirtuelsPostfix($pdo) {
try {
$compteModifs=0;
foreach ($_POST as $id_alias_virtuel => $etat_alias_virtuel) {
//echo "$id_alias_virtuel et $etat_alias_virtuel";
//echo 'UPDATE postfix_alias_virtuels SET active='."$etat_alias_virtuel".' WHERE id='."$id_alias_virtuel".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
//die();
$req='UPDATE postfix_alias_virtuels SET active=:etat_alias_virtuel WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur';
//$req = $pdo->query('UPDATE postfix_alias_virtuels SET active='."$etat_alias_virtuel".' WHERE id='."$id_alias_virtuel".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)');
$req='UPDATE postfix_alias_virtuels SET active=:etat_alias_virtuel WHERE id=:id_alias_virtuel AND courriel=:pseudo_utilisateur||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
// En cas d'erreur non gérée, le script s'arrête avec un message d'erreur à destination de l'administrateur du serveur
die ("Erreur de requête de modification d'état pour les alias virtuels : ".$e->getMessage());
}
}
}
/**
* Fonction de suppression d'un alias virtuel.
*/
function supprAliasVirtuelsPostfix($pdo) {
try {
//foreach ($_GET as $id_alias_virtuel => $etat_alias_virtuel) {
//echo "$id_alias_virtuel et $etat_alias_virtuel";
//echo 'UPDATE postfix_alias_virtuels SET active='."$etat_alias_virtuel".' WHERE id='."$id_alias_virtuel".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
//die();
echo $_GET['supprAliasVirtuel'];
//$req = $pdo->query('DELETE FROM postfix_alias_virtuels WHERE id='."$_GET[supprAliasVirtuel]".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)');
$req='DELETE FROM postfix_alias_virtuels WHERE id=:id_alias_virtuel AND courriel=:pseudo_utilisateur||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
//$req = $pdo->query('DELETE FROM postfix_alias_virtuels WHERE id='."$_GET[supprAliasVirtuel]".' AND courriel='."\"$_SESSION[pseudo_utilisateur]".'@"'.'||(SELECT domaine FROM postfix_domaines WHERE defaut=1)');
$req='DELETE FROM postfix_alias_virtuels WHERE id=:id_alias_virtuel AND destination=:pseudo_utilisateur';
//$req='DELETE FROM postfix_alias_virtuels WHERE id=:id_alias_virtuel AND courriel=:pseudo_utilisateur||(SELECT domaine FROM postfix_domaines WHERE defaut=1)';
if (isset($alias_virtuels['active']) && $alias_virtuels['active']=="0") echo " checked";
echo "><p>".$alias_virtuels['courriel']."</p><labelclass=\"input-label-supprimer-alias\"for=\"supprimer-alias-".$alias_virtuels['id']."\">Supprimer</label><inputtype=\"checkbox\"class=\"input-checkbox-supprimer-aliasvisuellement-cache\"id=\"supprimer-alias-".$alias_virtuels['id']."\"><aclass=\"confirmation-suppression\"href=\"/services/actions/supprAliasVirtuels.php?supprAliasVirtuel=".$alias_virtuels['id']."\">Confirmer la suppression</a></li>\n";
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
}
}
catch (\Exception $e) {
die ("Erreur de requête de selection utilisateurs pour \"$base\" : ".$e->getMessage());
* Elle est appelée par la page d'identification lorsqu'un visiteur n'est pas parvenu à s'identifier.
* Elle ajoute à cette redirection un temps d'attente pour limiter la fréquence des tentatives ainsi qu'une variable dans l'URL permettant l'affichage d'un message d'explication sur la redirection.
* Page de traitement de l'identification d'un visiteur.
* Elle vérifie la présence des valeurs fournies par le formulaire de la page d'accueil et les passes à la fonction de validation.
* Si le visiteur a été authentifié, il devient un utilisateur et est redirigé vers la page d'administration centrale après ouverture de session (comportant ses informations et privilèges).
* Si le visiteur n'a pas été authentifié, il est redirigé vers la page d'accueil.