diff -urN cahier-de-prepa4.1.0/CHANGELOG.php cahier-de-prepa4.1.1/CHANGELOG.php
--- cahier-de-prepa4.1.0/CHANGELOG.php	2014-10-23 23:37:27.585509632 +0200
+++ cahier-de-prepa4.1.1/CHANGELOG.php	2014-10-24 15:16:18.698734350 +0200
@@ -1,4 +1,4 @@
-Version actuelle : 4.1.0 (24/10/14)
+Version actuelle : 4.1.1 (24/10/14)
 ===================
 Changements :
 1.0   31/08/11 Première version
@@ -146,6 +146,7 @@
   Correction de bug :
   * Modification du nom du répertoire lors de la modification d'une matière
   * Correction d'une faille de sécurité XSS dans le nom/prénom/login
+4.1.1 24/10/14 Correction d'un bug sur la modifications des préférences d'élèves
 ===================
 
 Todo :
diff -urN cahier-de-prepa4.1.0/haut.php cahier-de-prepa4.1.1/haut.php
--- cahier-de-prepa4.1.0/haut.php	2014-10-23 12:11:33.440192694 +0200
+++ cahier-de-prepa4.1.1/haut.php	2014-10-24 15:05:01.541757066 +0200
@@ -111,7 +111,6 @@
       <h3>Espace utilisateur</h3>
       <a href=\"prefs\">Mes préférences</a>$notes
       <a href=\"connect?deconnexion\">Se déconnecter</a>
-      
     </div>";
     break;
   // Si compte colleur/professeur
@@ -136,7 +135,6 @@
       <a href=\"prefs\">Mes préférences</a>
       <a href=\"mail\">Envoyer un mail</a>$notes
       <a href=\"connect?deconnexion\">Se déconnecter</a>
-      
     </div>";
 }
 
diff -urN cahier-de-prepa4.1.0/prefs.php cahier-de-prepa4.1.1/prefs.php
--- cahier-de-prepa4.1.0/prefs.php	2014-10-23 00:15:15.854817406 +0200
+++ cahier-de-prepa4.1.1/prefs.php	2014-10-24 15:10:23.920511788 +0200
@@ -88,25 +88,28 @@
       $modif[] = 'temps de connexion';
       $_SESSION['timeout'] = $timeout;
     }
-    // Modification de mailexp et mailcopy uniquement si mailexp est non nul
-    if ( $u['mailexp'] && in_array($mailexp = $_REQUEST['mailexp'],array(1,2,3,4)) && ( $mailexp != $u['mailexp'] ) )  {
-      $u['mailexp'] = $mailexp;
-      $requete[] = "mailexp = $mailexp";
-      $modif[] = 'champ expéditeur des mails';
-    }
-    $mailcopy = ( isset($_REQUEST['mailcopy']) ) ? 1 : 0;
-    if ( $u['mailexp'] && ( $mailcopy != $u['mailcopy'] ) )  {
-      $u['mailcopy'] = $mailcopy;
-      $requete[] = "mailcopy = '$mailcopy'";
-      $modif[] = 'mise en copie des mails';
-    }
-    $m = ( isset($_REQUEST['matieres']) ) ? array_filter(array_unique($_REQUEST['matieres'],SORT_NUMERIC),'is_numeric') : array();
-    if ( ( $m = implode(',',$m) ) != $u['matieres'] )  {
-      $requete[] = "matieres = '$m'";
-      $modif[] = 'matières';
-      $_SESSION['matieres'] = $m;
+    // Modifications pour les colleurs et professeurs uniquement
+    if ( $autorisation > 2 )  {
+      // Modification de mailexp et mailcopy uniquement si mailexp est non nul
+      if ( $u['mailexp'] && in_array($mailexp = $_REQUEST['mailexp'],array(1,2,3,4)) && ( $mailexp != $u['mailexp'] ) )  {
+        $u['mailexp'] = $mailexp;
+        $requete[] = "mailexp = $mailexp";
+        $modif[] = 'champ expéditeur des mails';
+      }
+      $mailcopy = ( isset($_REQUEST['mailcopy']) ) ? 1 : 0;
+      if ( $u['mailexp'] && ( $mailcopy != $u['mailcopy'] ) )  {
+        $u['mailcopy'] = $mailcopy;
+        $requete[] = "mailcopy = '$mailcopy'";
+        $modif[] = 'mise en copie des mails';
+      }
+      $m = ( isset($_REQUEST['matieres']) ) ? array_filter(array_unique($_REQUEST['matieres'],SORT_NUMERIC),'is_numeric') : array();
+      if ( ( $m = implode(',',$m) ) != $u['matieres'] )  {
+        $requete[] = "matieres = '$m'";
+        $modif[] = 'matières';
+        $_SESSION['matieres'] = $m;
+      }
     }
-        
+    
     if ( !empty($requete) )  {
       $requete = implode(', ',$requete);
       $modif = implode(', ',$modif);
@@ -127,48 +130,14 @@
 if ( $u['mdp'] == 'pas de mot de passe' )  {
   $message = 'IMPORTANT : votre mot de passe a été réinitialisé. Vous devez absolument le redéfinir ci-dessous.';
   $mdp0 = '    <input type="hidden" name="mdp0" value="réinitialisé">';
-  $mdp_message = '';
-}
-else  {
-  $mdp0 = '    <p class="ligne"><label for="mdp0">Mot de passe actuel&nbsp;: </label><input type="password" id="mdp0" name="mdp0" value=""></p>';
-  $mdp_message = '    <p>Le mot de passe actuel doit être obligatoirement fourni.</p>';
 }
+else
+  $mdp0 = '    <p class="ligne"><label for="mdp0">Mot de passe actuel&nbsp;: </label><input type="password" id="mdp0" name="mdp0" value=""></p>
+    <p>Le mot de passe actuel doit être obligatoirement fourni pour toute modification.</p>';
 
 // Haut de page, menu et message
 include('haut.php');
 
-// Pas de gestion des préférences de mail si mailexp est nul
-if ( $u['mailexp'] )  {
-  if ( strlen($u['mail']) )  {
-    switch ( $u['genre'] )  {
-      case 1 : $g = 'M. '; break;
-      case 2 : $g = 'Mme '; break;
-      case 3 : $g = 'Melle '; break;
-      default : $g = '';
-    }
-    $select_mailexp = str_replace("\"${u['mailexp']}\"","\"${u['mailexp']}\" selected","
-          <option value=\"1\">$g${u['nom']}</option>
-          <option value=\"2\">$g${u['prenom']} ${u['nom']}</option>
-          <option value=\"3\">${u['prenom']} ${u['nom']}</option>
-          <option value=\"4\">${u['nom']}</option>");
-  }
-  else
-    $select_mailexp = '
-          <option value="1">Il faut définir votre adresse mail pour pouvoir en envoyer.</option>';
-  $u['mailcopy'] = ( $u['mailcopy']) ? ' checked' : '';
-  $prefs_mail = <<<FIN
-    <p class="ligne"><label for="mailexp">Champ expéditeur pour les mails&nbsp;:</label>
-      <select name="mailexp" id="mailexp">$select_mailexp
-      </select>
-    </p>
-    <p class="ligne"><label for="mailcopy">Étre en copie des mails envoyés&nbsp;: </label><input type="checkbox" id="mailcopy" name="mailcopy" value="1"${u['mailcopy']}></p>
-
-FIN;
-}
-else  {
-  $prefs_mail = '';
-}
-
 // Formulaire des données
 $select_genre = str_replace("\"${u['genre']}\"","\"${u['genre']}\" selected",'
         <option value="1">M.</option>
@@ -191,41 +160,73 @@
     <p class="ligne"><label for="mdp1">Nouveau mot de passe&nbsp;: </label><input type="password" id="mdp1" name="mdp1" value=""></p>
     <p class="ligne"><label for="mdp2">Confirmation&nbsp;: </label><input type="password" id="mdp2" name="mdp2" value=""></p>
     <p class="ligne"><label for="timeout">Temps de déconnexion&nbsp;: </label><input type="text" id="timeout" name="timeout" value="${u['timeout']}" size="3"></p>
-$prefs_mail
-    <h3>Modifier mes matières</h3>
-
 FIN;
 
 // Modification des matières
-$resultat = $mysqli->query("SELECT id, cle, nom FROM matieres WHERE FIND_IN_SET(id,'${_SESSION['matieres']}')
-                            ORDER BY FIND_IN_SET(id,'${_SESSION['matieres']}')");
-$matieres = array();
-if ( $resultat->num_rows )  {
+if ( $autorisation > 2 )  {
+
+  // Pas de gestion des préférences de mail si mailexp est nul
+  if ( $u['mailexp'] )  {
+    if ( strlen($u['mail']) )  {
+      switch ( $u['genre'] )  {
+        case 1 : $g = 'M. '; break;
+        case 2 : $g = 'Mme '; break;
+        case 3 : $g = 'Melle '; break;
+        default : $g = '';
+      }
+      $select_mailexp = str_replace("\"${u['mailexp']}\"","\"${u['mailexp']}\" selected","
+          <option value=\"1\">$g${u['nom']}</option>
+          <option value=\"2\">$g${u['prenom']} ${u['nom']}</option>
+          <option value=\"3\">${u['prenom']} ${u['nom']}</option>
+          <option value=\"4\">${u['nom']}</option>");
+    }
+    else
+      $select_mailexp = '
+            <option value="1">Il faut définir votre adresse mail pour pouvoir en envoyer.</option>';
+    $u['mailcopy'] = ( $u['mailcopy']) ? ' checked' : '';
+    $prefs_mail = <<<FIN
+    <p class="ligne"><label for="mailexp">Champ expéditeur pour les mails&nbsp;:</label>
+      <select name="mailexp" id="mailexp">$select_mailexp
+      </select>
+    </p>
+    <p class="ligne"><label for="mailcopy">Étre en copie des mails envoyés&nbsp;: </label><input type="checkbox" id="mailcopy" name="mailcopy" value="1"${u['mailcopy']}></p>
+
+FIN;
+  }
+  else  {
+    $prefs_mail = '';
+  }
+
+  echo "$prefs_mail\n    <h3>Modifier mes matières</h3>\n";
+
+  $resultat = $mysqli->query("SELECT id, cle, nom FROM matieres WHERE FIND_IN_SET(id,'${_SESSION['matieres']}')
+                              ORDER BY FIND_IN_SET(id,'${_SESSION['matieres']}')");
+  $matieres = array();
+  if ( $resultat->num_rows )  {
+    while ( $r = $resultat->fetch_assoc() )
+      $matieres[] = $r;
+    $resultat->free();
+  }
+  $resultat = $mysqli->query("SELECT id, nom, ordre FROM matieres ORDER BY ordre");
+  $select = "    <p id=\"ligneXX\" class=\"ligne\"><label for=\"matiereXX\">Matière n°XX&nbsp;:</label>\n      <select id=\"matiereXX\" name=matieres[XX]>\n";
+  $max = $resultat->num_rows;
   while ( $r = $resultat->fetch_assoc() )
-    $matieres[] = $r;
+    $select .= "        <option value=\"${r['id']}\">${r['nom']}</option>\n";
   $resultat->free();
-}
-$resultat = $mysqli->query("SELECT id, nom, ordre FROM matieres ORDER BY ordre");
-$select = "    <p id=\"ligneXX\" class=\"ligne\"><label for=\"matiereXX\">Matière n°XX&nbsp;:</label>\n      <select id=\"matiereXX\" name=matieres[XX]>\n";
-$max = $resultat->num_rows;
-while ( $r = $resultat->fetch_assoc() )
-  $select .= "        <option value=\"${r['id']}\">${r['nom']}</option>\n";
-$resultat->free();
-$select .= "      </select>\n    </p>\n";
-$mysqli->close();
-
-$n = 0;
-foreach ( $matieres as $m )
-  echo str_replace("\"${m['id']}\"","\"${m['id']}\" selected",str_replace('XX',++$n,$select));
-$select = str_replace(array("'","\n",'  '),array("\'",'',''),$select);
+  $select .= "      </select>\n    </p>\n";
+  $mysqli->close();
 
-echo <<<FIN
+  $n = 0;
+  foreach ( $matieres as $m )
+    echo str_replace("\"${m['id']}\"","\"${m['id']}\" selected",str_replace('XX',++$n,$select));
+  $select = str_replace(array("'","\n",'  '),array("\'",'',''),$select);
+
+  echo <<<FIN
     <p class="boutons">
       <input type="button" id="ajouter" value="Ajouter une matière">
       <input type="button" id="retirer" value="Retirer la dernière matière">
     </p>
   </form>
-$mdp_message
   </div>
 
   <script type="text/javascript">
@@ -250,6 +251,9 @@
 
 
 FIN;
+}
+else
+  echo "\n  </form>\n  </div>\n";
 
 // Bas de page
 include('bas.php');
