Communauté • Livre d'or
Actualités, astuces, interview... Venez lire la gazette de ce printemps de Vikidia !
Actualités, astuces, interview... Venez lire la gazette de ce printemps de Vikidia !
Vikidia:Achille/sources/user.php
< Vikidia:Achille | sources
Aller à la navigation
Aller à la recherche
Version 0.1.5 (c) Ces pages sont données pour consultation. Si vous souhaitez utiliser Achille, téléchargez de préférence les sources au format zip |
<?php /* Achille/user.php GPL v3 Thomas Pimmel 2008 */ //Ajouter utilisateur function us_adduser_mdp($user,$pass1,$pass2,$statx) { if ($pass1!=$pass2) { message ("Vos deux mots de passe doivent être identiques !",0); return false; } if (strlen($pass1)<6) { message ("Votre mot de passe doit comporter au moins six lettres !",0); return false; } if ($pass1==$user) { message ("Votre mot de passe doit être différent de votre nom d'utilisateur !",0); return false; } switch ($statx) { case "Administrateur": $stat=2; break; case "Utilisateur": $stat=1; break; case "Démonstration": $stat=3; break; default: $stat=0; } return us_adduser($user,$pass1,$stat); } //compter le nombre d'utilisateurs (hors root) function us_comptage () { $liste=us_read(); if (!$liste) return false; $n=0; while (isset($liste[$n+1])) $n++; return $n; } //----------- Bas-niveau-------------// // lire la base function us_read() { // ouverture fichier $liste=file_get_contents("users/utilisateurs.txt"); if (!$liste) { message ("La liste des utilisateurs est introuvable",1); return false; } // mettre par ligne $lignes=explode("\n",$liste); // séparer les arguments $n=0; $idx=0; while (isset($lignes[$n])) { if ($lignes[$n] && $lignes[$n]!="\n") { $user[$idx]=explode("|",$lignes[$n]); /*$tmp=$user[$idx][0]; print "$idx Arg0 : $tmp<br>"; $tmp=$user[$idx][1]; print "$idx Arg1 : $tmp<br>";*/ $idx++; } $n++; } return $user; } // trouver utilisateur et mot de passe function us_control($user,$mdp) { $mdp=md5($mdp); $liste=us_read(); if (!$liste) return 0; $n=1; while (isset($liste[$n])) { if ($user==$liste[$n][USUSER] && $mdp==$liste[$n][USMDP]) { if ($liste[$n][USWARN]!=0) message ("Attention : vous devez changer votre mot de passe pour vous connecter à Vikidia"); return $liste[$n][USTAT]; } $n++; } message ("Mot de passe ou utilisateur incorrect",1); return 0; } // supprimer un utilisateur function us_deluser($user) { $essai=2; while ($essai) { $liste=us_read(); if (!$liste) return false; $n=1; $found=false; while (isset($liste[$n]) && !$found) { if ($user==$liste[$n][USUSER]) $found=true; else $n++; } if ($found) { us_delelem ($liste,$n); $res=us_write($liste); if ($res==2) return true; if ($res==0) return false; $essai--; if (!$essai) message ("Fichier des utilisateurs bloqué !",1); } else { message ("Utilisateur $user non trouvé !",1); return false; } } return false; } // supprimer un élément de la chaîne function us_delelem(&$liste,$n) { while (isset($liste[$n+1])) { $liste[$n]=$liste[$n+1]; $n++; } unset ($liste[$n]); } // ajouter un utilisateur function us_adduser($user,$mdp,$stat="1") { $essai=2; if ($stat=="1") $warn=1; else $warn=0; while ($essai) { $liste=us_read(); if (!$liste) return false; $n=1; $found=false; while (isset($liste[$n]) && !$found) { if ($user==$liste[$n][USUSER]) $found=true; $n++; } if (!$found) { $liste[$n]=array($user,md5($mdp),$stat,$warn,"0"); $res=us_write($liste); if ($res==2) return true; if ($res==0) return false; $essai--; if (!$essai) message ("Fichier des utilisateurs bloqué !",1); } else { message ("L'utilisateur $user existe déjà !",1); return false; } } return false; } // changer une valeur // ajouter un utilisateur function us_chguser($user,$idx,$new) { $essai=2; while ($essai) { $liste=us_read(); if (!$liste) return false; $n=1; $found=false; while (isset($liste[$n]) && !$found) { if ($user==$liste[$n][0]) $found=true; else $n++; } if ($found) { if ($idx==USMDP) $liste[$n][$idx]=md5($new); else $liste[$n][$idx]=$new; $res=us_write($liste); if ($res==2) return true; if ($res==0) return false; $essai--; if (!$essai) message ("Fichier des utilisateurs bloqué !",1); } else { message ("L'utilisateur $user non-trouvé !",1); return false; } } return false; } // écrire le fichier function us_write ($liste) { $fh=fopen ("users/utilisateurs.txt","a+"); if (!$fh) {message ("Erreur lors de l'ouverture de la liste des utilisateurs",1);return 0;} fseek($fh,0); $line=fgets($fh); $line=explode("\n",$line); if ($liste[0][0]!=$line[0]) { message ("Le fichier a été modifié depuis sa lecture, nouvel essai",0); fclose($fh); return 1; } fseek($fh,0); ftruncate($fh,0); $liste[0][0]=time(); $new=us_string($liste); fwrite($fh,$new); fclose($fh); return 2; } function us_string($liste) { $n=0; while (isset($liste[$n])) { $ligne[$n]=implode("|",$liste[$n]); $n++; } $user=implode("\n",$ligne); //print ($user); return $user; } ?>