security_check();
if ($resultat_session == 'c') {
header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes");
die();
} else if ($resultat_session == '0') {
header("Location: ../logout.php?auto=1");
die();
}
$sql="SELECT 1=1 FROM droits WHERE id='/gestion/gestion_signature.php';";
$test=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($test)==0) {
$sql="INSERT INTO droits SET id='/gestion/gestion_signature.php',
administrateur='V',
professeur='F',
cpe='F',
scolarite='F',
eleve='F',
responsable='F',
secours='F',
autre='F',
description='Gestion signature',
statut='';";
$insert=mysqli_query($GLOBALS["mysqli"], $sql);
}
if (!checkAccess()) {
header("Location: ../logout.php?auto=1");
die();
}
$msg="";
$choix_acces=isset($_GET['choix_acces']) ? $_GET['choix_acces'] : NULL;
$mode=isset($_POST['mode']) ? $_POST['mode'] : (isset($_GET['mode']) ? $_GET['mode'] : NULL);
if(isset($_POST['activation_desactivation'])) {
check_token();
if (isset($_POST['activer'])) {
if (!saveSetting("active_fichiers_signature", $_POST['activer'])) {$msg = "Erreur lors de l'enregistrement du paramètre activation/désactivation !";}
else {
$msg = "Enregistrement du paramètre activation/désactivation effectué !";
}
}
}
//debug_var();
$sql="CREATE TABLE IF NOT EXISTS signature_droits (
id INT(11) unsigned NOT NULL auto_increment,
login VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( id )
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
$create_table=mysqli_query($GLOBALS["mysqli"], $sql);
if(isset($_POST['enregistrer_choix_utilisateurs'])) {
check_token();
$login_user=isset($_POST['login_user']) ? $_POST['login_user'] : array();
$tab_droits_existants=array();
$sql="SELECT * FROM signature_droits;";
$res=mysqli_query($GLOBALS["mysqli"], $sql);
if(mysqli_num_rows($res)>0) {
while($lig=mysqli_fetch_object($res)) {
$tab_droits_existants[]=$lig->login;
}
}
$nb_suppr=0;
for($loop=0;$loop
";
}
if($nb_reg>0) {
$msg.=$nb_reg." droit(s) enregistré(s).
";
}
}
$sql="CREATE TABLE IF NOT EXISTS signature_fichiers (
id_fichier INT(11) unsigned NOT NULL auto_increment,
fichier VARCHAR( 255 ) NOT NULL ,
login VARCHAR( 255 ) NOT NULL ,
type VARCHAR( 255 ) NOT NULL,
PRIMARY KEY ( id_fichier )
) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
//echo "$sql
";
$create_table=mysqli_query($GLOBALS["mysqli"], $sql);
if (isset($_POST['ajout_fichier'])) {
check_token();
$sign_file = isset($_FILES["sign_file"]) ? $_FILES["sign_file"] : NULL;
$login_user = isset($_POST["login_user"]) ? $_POST["login_user"] : NULL;
if(!isset($sign_file)) {
$msg.= "Aucun fichier n'a été fourni.
";
}
elseif((!isset($login_user))||($login_user=="")) {
$msg.= "Aucun utilisateur n'a été choisi.
";
}
elseif((isset($sign_file['error']))&&($sign_file['error']==4)) {
$msg.= "Aucun fichier n'a été proposé.
";
}
elseif((!preg_match("/\.jpeg$/i", $sign_file['name']))&&(!preg_match("/\.jpg$/i", $sign_file['name']))) {
$msg.= "Seule l'extension JPG est autorisée.
";
}
else {
if(!check_user_temp_directory($login_user, 1)) {
$msg.= "Le dossier temporaire de ".civ_nom_prenom($login_user)." ne peut pas être créé ou n'est pas accessible en écriture.
";
}
else {
$dirname=get_user_temp_directory($login_user);
if((!$dirname)||($dirname=="")) {
$msg.= "Le dossier temporaire de ".civ_nom_prenom($login_user)." n'existe pas ou n'est pas accessible en écriture.
";
}
else {
$tmp_dim_img=getimagesize($sign_file['tmp_name']);
if((isset($tmp_dim_img[2]))&&($tmp_dim_img[2]==2)) {
$dirname="../temp/".$dirname."/signature";
if(!file_exists($dirname)) {
mkdir($dirname);
if ($f = @fopen("$dirname/index.html", "w")) {
@fputs($f, '
Retour\n"; //============================================================================== if(!isset($mode)) { echo "
La possibilité d'utiliser des fichiers de signature est actuellement ".((getSettingValue('active_fichiers_signature')!='y') ? "in" : "")."active.
Choisissez :
Ou
NOTES :
Les fichiers mis en place ne sont pas protégés contre un téléchargement abusif.
Toute personne connaissant le chemin (aléatoire tout de même) et le nom du fichier signature pourrait le récupérer.
Le chemin d'un fichier mis en place peut se trouver après affichage dans une page web,... dans le cache de votre navigateur ou dans les fichiers temporaires du navigateur.
Pensez à effacer vos traces.
On peut aussi se demander quelle garantie d'authenticité apporte une image insérée.
Un document peut être scanné et l'image réinsérée ailleurs.
Conserver un tamponnage classique des bulletins peut être une bonne chose.
Aucun utilisateur n'est actuellement autorisé à utiliser un fichier de signature.
"; require("../lib/footer.inc.php"); die(); } /* $sql="CREATE TABLE IF NOT EXISTS signature_fichiers ( id_fichier INT(11) unsigned NOT NULL auto_increment, fichier VARCHAR( 255 ) NOT NULL , login VARCHAR( 255 ) NOT NULL , type VARCHAR( 255 ) NOT NULL, PRIMARY KEY ( id ) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; */ $cpt=0; $login_prec=""; $tab_fichiers_utilisateurs=array(); $sql="SELECT * FROM signature_fichiers ORDER BY login;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { while($lig=mysqli_fetch_object($res)) { // Vérifier si le user_temp_directory peut changer? if(!array_key_exists($lig->login, $tab_user_temp_dir)) { $tab_user_temp_dir[$lig->login]=get_user_temp_directory($lig->login); } if($lig->login!=$login_prec) { $cpt=0; $login_prec=$lig->login; } $tab_fichiers_utilisateurs[$lig->login][$cpt]['id_fichier']=$lig->id_fichier; $tab_fichiers_utilisateurs[$lig->login][$cpt]['fichier']=$lig->fichier; $tab_fichiers_utilisateurs[$lig->login][$cpt]['chemin']="../temp/".$tab_user_temp_dir[$lig->login]."/signature/".$lig->fichier; $cpt++; } } echo " | Index signatureNOTE : N'oubliez pas de choisir ensuite à quelles quelle(s) classe(s) vous souhaitez associer telle signature.
\n"; require("../lib/footer.inc.php"); die(); } //============================================================================== if($mode=='choix_assoc_fichier_user_classe') { // Tableau des chemins user_temp_directory $tab_user_temp_dir=array(); // Tableau des utilisateurs autorisés à utiliser un fichier de signature $cpt=0; $tab_user=array(); $sql="SELECT * FROM signature_droits;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { while($lig=mysqli_fetch_object($res)) { $tab_user[$cpt]['login']=$lig->login; $tab_user[$cpt]['designation']=civ_nom_prenom($lig->login); $cpt++; } } else { echo " | Index signatureAucun utilisateur n'est actuellement autorisé à utiliser un fichier de signature.
"; require("../lib/footer.inc.php"); die(); } $cpt=0; $login_prec=""; $tab_fichiers=array(); $tab_fichiers_utilisateurs=array(); $sql="SELECT * FROM signature_fichiers ORDER BY login;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { while($lig=mysqli_fetch_object($res)) { // Vérifier si le user_temp_directory peut changer? if(!array_key_exists($lig->login, $tab_user_temp_dir)) { $tab_user_temp_dir[$lig->login]=get_user_temp_directory($lig->login); } if($lig->login!=$login_prec) { $cpt=0; $login_prec=$lig->login; } $tab_fichiers_utilisateurs[$lig->login][$cpt]['id_fichier']=$lig->id_fichier; $tab_fichiers_utilisateurs[$lig->login][$cpt]['fichier']=$lig->fichier; $tab_fichiers_utilisateurs[$lig->login][$cpt]['chemin']="../temp/".$tab_user_temp_dir[$lig->login]."/".$lig->fichier; $tab_fichiers[$lig->id_fichier]="../temp/".$tab_user_temp_dir[$lig->login]."/signature/".$lig->fichier; $cpt++; } } /* $sql="CREATE TABLE IF NOT EXISTS signature_classes ( id INT(11) unsigned NOT NULL auto_increment, login VARCHAR( 255 ) NOT NULL , id_classe INT( 11 ) NOT NULL , id_fichier INT( 11 ) NOT NULL , PRIMARY KEY ( id ) ) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; $create_table=mysql_query($sql); */ $tab_fichiers_classes_utilisateurs=array(); $tab_fichiers_utilisateurs_classes=array(); $sql="SELECT * FROM signature_classes ORDER BY login, id_classe;"; $res=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res)>0) { while($lig=mysqli_fetch_object($res)) { $tab_fichiers_classes_utilisateurs[$lig->id_classe][$lig->login]=$lig->id_fichier; $tab_fichiers_utilisateurs_classes[$lig->login][$lig->id_classe]=$lig->id_fichier; } } /* echo ""; print_r(); echo ""; */ $tab_classe=array(); $sql="SELECT * FROM classes c ORDER BY c.classe, c.nom_complet;"; $res_classe=mysqli_query($GLOBALS["mysqli"], $sql); if(mysqli_num_rows($res_classe)>0) { $cpt=0; while($lig_classe=mysqli_fetch_object($res_classe)) { $tab_classe[$cpt]['id_classe']=$lig_classe->id; $tab_classe[$cpt]['classe']=$lig_classe->classe; $cpt++; } } echo " | Index signature \n"; require("../lib/footer.inc.php"); die(); } /* echo "\n"; echo "
NOTES :
\n"; echo "Le fichier mis en place n'est protégé contre un téléchargement abusif que si un .htaccess est en place dans le dossier de backup (voir la rubrique Sauvegarde et restauration).";
if(($nom_fichier_signature!="")&&(file_exists($dirname."/".$nom_fichier_signature))) {
echo "
";
echo "Si le .htaccess est en place et pris en compte par le serveur, vous devriez vous voir réclamer un couple compte/mot de passe pour télécharger l'image : Tester la protection.
";
echo "Si l'accès n'est pas protégé, toute personne connaissant le chemin (aléatoire tout de même) et le nom du fichier signature pourrait le récupérer.";
}
echo "
Le fichier mis en place peut se trouver après affichage dans une page web,... dans le cache de votre navigateur ou dans les fichiers temporaires du navigateur.
Pensez à effacer vos traces.
On peut aussi se demander quelle garantie d'authenticité apporte une image insérée.
Un document peut être scanné et l'image réinsérée ailleurs.
Conserver un tamponnage classique des bulletins peut être une bonne chose.