Code PHP
Page mise à jour le 11-03-2026 à 15:41
// backup d'une base de données MySQL
$link = mysqli_connect('HostName','UserName','Password');
mysqli_select_db($link,'BddName');
$rep = "backups_bdd/";
$ExportPath = $rep."backup_".date("Ymd-His").".sql.gz";
// exécution avec requêtes separées (option --extended-insert=false) et compression gzip
$command = 'mysqldump --extended-insert=false -h'.$HostName.' -u'.$UserName.' -p'.$Password.' '.$BddName;
$command .= ' | gzip > '.$ExportPath;
exec($command, $output, $worked);
mysqli_close($link);
// recherche du fichier de sauvegarde le plus récent
$dir = opendir($rep);
$last_date = 0;
while ($file = readdir($dir)) {
if (($file != ".") && ($file != "..") && (!is_dir($rep.$file))) {
$date_file = filemtime($rep.$file);
if ($date_file > $last_date) $last_date = $date_file;
}
}
// conserve un historique de sauvegarde de 90 jours
$dir = opendir($rep);
$now = time();
while ($file = readdir($dir)) {
if (($file != ".") && ($file != "..") && (!is_dir($rep.$file))) {
$date_file = filemtime($rep.$file);
$ecart = ($now - $date_file) / (60*60*24*90);
if ($ecart > 1) unlink($rep.$file);
}
}
$link = mysqli_connect('HostName','UserName','Password');
mysqli_select_db($link,'BddName');
$rep = "backups_bdd/";
$ExportPath = $rep."backup_".date("Ymd-His").".sql.gz";
// exécution avec requêtes separées (option --extended-insert=false) et compression gzip
$command = 'mysqldump --extended-insert=false -h'.$HostName.' -u'.$UserName.' -p'.$Password.' '.$BddName;
$command .= ' | gzip > '.$ExportPath;
exec($command, $output, $worked);
mysqli_close($link);
// recherche du fichier de sauvegarde le plus récent
$dir = opendir($rep);
$last_date = 0;
while ($file = readdir($dir)) {
if (($file != ".") && ($file != "..") && (!is_dir($rep.$file))) {
$date_file = filemtime($rep.$file);
if ($date_file > $last_date) $last_date = $date_file;
}
}
// conserve un historique de sauvegarde de 90 jours
$dir = opendir($rep);
$now = time();
while ($file = readdir($dir)) {
if (($file != ".") && ($file != "..") && (!is_dir($rep.$file))) {
$date_file = filemtime($rep.$file);
$ecart = ($now - $date_file) / (60*60*24*90);
if ($ecart > 1) unlink($rep.$file);
}
}
// directives globales
date_default_timezone_set('Europe/Paris');
include('');
echo "<script> window.location.replace('index.php') </script>";
session_start();
session_destroy();
session_unset();
$_SESSION[''];
$_POST[''];
$_GET[''];
date_default_timezone_set('Europe/Paris');
include('');
echo "<script> window.location.replace('index.php') </script>";
session_start();
session_destroy();
session_unset();
$_SESSION[''];
$_POST[''];
$_GET[''];
// volumes disques
$si_prefix = array('o','Ko','Mo','Go','To');
$base = 1024;
$bytes = disk_total_space("/");
$class = min((int)log($bytes,$base),count($si_prefix)-1);
$total = sprintf('%1.0f',$bytes/pow($base,$class))." ".$si_prefix[$class];
$bytes = disk_free_space("/");
$class = min((int)log($bytes,$base),count($si_prefix)-1);
$dispo = sprintf('%1.0f',$bytes/pow($base,$class))." ".$si_prefix[$class];
$used = $total - $dispo;
$si_prefix = array('o','Ko','Mo','Go','To');
$base = 1024;
$bytes = disk_total_space("/");
$class = min((int)log($bytes,$base),count($si_prefix)-1);
$total = sprintf('%1.0f',$bytes/pow($base,$class))." ".$si_prefix[$class];
$bytes = disk_free_space("/");
$class = min((int)log($bytes,$base),count($si_prefix)-1);
$dispo = sprintf('%1.0f',$bytes/pow($base,$class))." ".$si_prefix[$class];
$used = $total - $dispo;
// durée d'exécution en ms et taille en ko du code généré par PHP
ob_start();
$codeStart = microtime(true);
// ========= position du code à évaluer =========
$codeStop = microtime(true);
$duration = round(($codeStop - $codeStart) * 1000);
$codeSize = strlen(ob_get_contents());
$codeSize = round($codeSize / 1000);
ob_start();
$codeStart = microtime(true);
// ========= position du code à évaluer =========
$codeStop = microtime(true);
$duration = round(($codeStop - $codeStart) * 1000);
$codeSize = strlen(ob_get_contents());
$codeSize = round($codeSize / 1000);
// retourne un tableau associatif trié par noms des fichiers d'un répertoire
// $ext = tableau des extensions à prendre en compte, exemple array('txt','pdf')
// $out = tableau des fichiers à exclure, exemple array('file1','file2')
function enumDir($dir, $ext, $out) {
$files = array();
if ($rep = opendir($dir))
while ($name = readdir($rep))
if ((in_array(pathinfo($name, PATHINFO_EXTENSION), $ext)) &&
(!in_array(pathinfo($name, PATHINFO_FILENAME), $out))) {
$files['name'][] = $name;
$files['time'][] = filemtime($dir.$name);
}
array_multisort($files['name'], SORT_ASC, $files['time']);
return $files;
}
// $ext = tableau des extensions à prendre en compte, exemple array('txt','pdf')
// $out = tableau des fichiers à exclure, exemple array('file1','file2')
function enumDir($dir, $ext, $out) {
$files = array();
if ($rep = opendir($dir))
while ($name = readdir($rep))
if ((in_array(pathinfo($name, PATHINFO_EXTENSION), $ext)) &&
(!in_array(pathinfo($name, PATHINFO_FILENAME), $out))) {
$files['name'][] = $name;
$files['time'][] = filemtime($dir.$name);
}
array_multisort($files['name'], SORT_ASC, $files['time']);
return $files;
}
// retourne un tableau associatif trié par noms des répertoires et du nombre de fichiers par répertoire
$tableau = array();
$i = 0;
// fonction récursive d'exploration d'une arborescence de répertoires
function exploreDir($root_dir, &$total_rep, &$total_file, &$n) {
global $tableau, $i;
$dir = opendir($root_dir);
while ($file = readdir($dir))
if (($file!=".") && ($file!=".."))
if (is_dir("$root_dir/$file")) {
$nfiles = exploreFiles("$root_dir/$file");
$total_file = $total_file + $nfiles;
$total_rep++;
$n++;
$repertoire = substr($root_dir,2,strlen($root_dir)-2);
$tableau['name'][$i] = $repertoire."/".$file;
$tableau['nber'][$i] = $nfiles;
$i++;
exploreDir("$root_dir/$file", $total_rep, $total_file, $n);
}
closedir($dir);
array_multisort($tableau['name'], SORT_ASC, $tableau['nber']);
return $tableau;
}
// comptage des fichiers d'un répertoire appelé par la fonction exploreDir()
function exploreFiles($rep) {
$nfiles = 0;
$dir = opendir($rep);
while ($file = readdir($dir))
if (is_file("$rep/$file")) $nfiles++;
closedir($dir);
return $nfiles;
}
$tableau = array();
$i = 0;
// fonction récursive d'exploration d'une arborescence de répertoires
function exploreDir($root_dir, &$total_rep, &$total_file, &$n) {
global $tableau, $i;
$dir = opendir($root_dir);
while ($file = readdir($dir))
if (($file!=".") && ($file!=".."))
if (is_dir("$root_dir/$file")) {
$nfiles = exploreFiles("$root_dir/$file");
$total_file = $total_file + $nfiles;
$total_rep++;
$n++;
$repertoire = substr($root_dir,2,strlen($root_dir)-2);
$tableau['name'][$i] = $repertoire."/".$file;
$tableau['nber'][$i] = $nfiles;
$i++;
exploreDir("$root_dir/$file", $total_rep, $total_file, $n);
}
closedir($dir);
array_multisort($tableau['name'], SORT_ASC, $tableau['nber']);
return $tableau;
}
// comptage des fichiers d'un répertoire appelé par la fonction exploreDir()
function exploreFiles($rep) {
$nfiles = 0;
$dir = opendir($rep);
while ($file = readdir($dir))
if (is_file("$rep/$file")) $nfiles++;
closedir($dir);
return $nfiles;
}
// retourne la date et l'heure du dernier fichier mis à jour dans une sélection de répertoires
// $folders = liste des répertoires à scanner avec '' pour racine, exemple array('','dir1/','dir2/')
function lastUpdate($folders) {
$last_time = 0;
foreach ($folders as $rep) {
$dir = opendir($rep);
while ($file = readdir($dir))
if (is_file($rep.$file)) {
$time_file = filemtime($rep.$file);
if ($time_file > $last_time) $last_time = $time_file;
}
closedir($dir);
}
return date("d-m-Y H:i", $last_time);
}
// $folders = liste des répertoires à scanner avec '' pour racine, exemple array('','dir1/','dir2/')
function lastUpdate($folders) {
$last_time = 0;
foreach ($folders as $rep) {
$dir = opendir($rep);
while ($file = readdir($dir))
if (is_file($rep.$file)) {
$time_file = filemtime($rep.$file);
if ($time_file > $last_time) $last_time = $time_file;
}
closedir($dir);
}
return date("d-m-Y H:i", $last_time);
}
// retourne le commentaire d'une photo
function pictureComment($picture) {
$picComment = '';
$exif = exif_read_data($picture, 0, true);
foreach ($exif as $key => $section)
foreach ($section as $name => $val)
if (($key == 'IFD0') && ($name == 'Comments')) {
for ($cpt=0; $cpt<strlen($val); $cpt++) {
$car = substr($val,$cpt,1);
$x = ord($car);
if ($x > 31) $picComment .= $car;
}
return $picComment;
}
}
// retourne l'heure de prise de vue d'une photo
function pictureDatetime($picture) {
$picTime = '';
$exif = exif_read_data($picture, 0, true);
foreach ($exif as $key => $section)
foreach ($section as $name => $val)
if (($key == 'EXIF') && ($name == 'DateTimeOriginal')) {
for ($cpt=0; $cpt<strlen($val); $cpt++) {
$car = substr($val,$cpt,1);
$x = ord($car);
if ($x > 31) $picTime .= $car;
}
$picTime = substr($picTime,8,2).'/'.substr($picTime,5,2).'/'.substr($picTime,0,4);
return $picTime;
}
}
function pictureComment($picture) {
$picComment = '';
$exif = exif_read_data($picture, 0, true);
foreach ($exif as $key => $section)
foreach ($section as $name => $val)
if (($key == 'IFD0') && ($name == 'Comments')) {
for ($cpt=0; $cpt<strlen($val); $cpt++) {
$car = substr($val,$cpt,1);
$x = ord($car);
if ($x > 31) $picComment .= $car;
}
return $picComment;
}
}
// retourne l'heure de prise de vue d'une photo
function pictureDatetime($picture) {
$picTime = '';
$exif = exif_read_data($picture, 0, true);
foreach ($exif as $key => $section)
foreach ($section as $name => $val)
if (($key == 'EXIF') && ($name == 'DateTimeOriginal')) {
for ($cpt=0; $cpt<strlen($val); $cpt++) {
$car = substr($val,$cpt,1);
$x = ord($car);
if ($x > 31) $picTime .= $car;
}
$picTime = substr($picTime,8,2).'/'.substr($picTime,5,2).'/'.substr($picTime,0,4);
return $picTime;
}
}
// retourne la taille d'un fichier dans l'unité adaptée
function sizeFile($file) {
$volume=filesize($file);
if ($volume >= 1073741824) {
$volume = round($volume / 1073741824 * 100) / 100; $unit = 'Go'; }
elseif ($volume >= 1048576) {
$volume = round($volume / 1048576 * 100) / 100; $unit = 'Mo'; }
elseif ($volume >= 1024) {
$volume = round($volume / 1024 * 100) / 100; $unit = 'Ko'; }
else $unit = 'o';
if ($volume > 99.99) $volume = round($volume * 100 / 100);
if ($volume > 9.99) $volume = round($volume * 10) / 10;
return number_format($volume,2,'.','').' '.$unit;
}
function sizeFile($file) {
$volume=filesize($file);
if ($volume >= 1073741824) {
$volume = round($volume / 1073741824 * 100) / 100; $unit = 'Go'; }
elseif ($volume >= 1048576) {
$volume = round($volume / 1048576 * 100) / 100; $unit = 'Mo'; }
elseif ($volume >= 1024) {
$volume = round($volume / 1024 * 100) / 100; $unit = 'Ko'; }
else $unit = 'o';
if ($volume > 99.99) $volume = round($volume * 100 / 100);
if ($volume > 9.99) $volume = round($volume * 10) / 10;
return number_format($volume,2,'.','').' '.$unit;
}
// retourne une chaine sans caractères accentués
function sansAccents($string){
$chars = array('%C3%80'=>'A','%C3%81'=>'A','%C3%82'=>'A','%C3%83'=>'A','%C3%84'=>'A','%C3%85'=>'A',
'%C3%A0'=>'a','%C3%A1'=>'a','%C3%A2'=>'a','%C3%A3'=>'a','%C3%A4'=>'a','%C3%A5'=>'a',
'%C3%92'=>'O','%C3%93'=>'O','%C3%94'=>'O','%C3%95'=>'O','%C3%96'=>'O','%C3%98'=>'O',
'%C3%B2'=>'o','%C3%B3'=>'o','%C3%B4'=>'o','%C3%B5'=>'o','%C3%B6'=>'o','%C3%B8'=>'o',
'%C3%88'=>'E','%C3%89'=>'E','%C3%8A'=>'E','%C3%8B'=>'E','%C3%A8'=>'e','%C3%A9'=>'e',
'%C3%AA'=>'e','%C3%AB'=>'e','%C3%87'=>'C','%C3%A7'=>'c','%C3%8C'=>'I','%C3%8D'=>'I',
'%C3%8E'=>'I','%C3%8F'=>'I','%C3%AC'=>'i','%C3%AD'=>'i','%C3%AE'=>'i','%C3%AF'=>'i',
'%C3%99'=>'U','%C3%9A'=>'U','%C3%9B'=>'U','%C3%9C'=>'U','%C3%B9'=>'u','%C3%BA'=>'u',
'%C3%BB'=>'u','%C3%BC'=>'u','%C3%BF'=>'y','%C3%91'=>'N','%C3%B1'=>'n',
'%C3%87'=>'C','%C3%A7'=>'c','%C5%92'=>'OE','%C5%93'=>'oe');
$string = urlencode($string);
foreach ($chars as $key => $value) $string = str_replace($key,$value,$string);
return urldecode($string);
}
function sansAccents($string){
$chars = array('%C3%80'=>'A','%C3%81'=>'A','%C3%82'=>'A','%C3%83'=>'A','%C3%84'=>'A','%C3%85'=>'A',
'%C3%A0'=>'a','%C3%A1'=>'a','%C3%A2'=>'a','%C3%A3'=>'a','%C3%A4'=>'a','%C3%A5'=>'a',
'%C3%92'=>'O','%C3%93'=>'O','%C3%94'=>'O','%C3%95'=>'O','%C3%96'=>'O','%C3%98'=>'O',
'%C3%B2'=>'o','%C3%B3'=>'o','%C3%B4'=>'o','%C3%B5'=>'o','%C3%B6'=>'o','%C3%B8'=>'o',
'%C3%88'=>'E','%C3%89'=>'E','%C3%8A'=>'E','%C3%8B'=>'E','%C3%A8'=>'e','%C3%A9'=>'e',
'%C3%AA'=>'e','%C3%AB'=>'e','%C3%87'=>'C','%C3%A7'=>'c','%C3%8C'=>'I','%C3%8D'=>'I',
'%C3%8E'=>'I','%C3%8F'=>'I','%C3%AC'=>'i','%C3%AD'=>'i','%C3%AE'=>'i','%C3%AF'=>'i',
'%C3%99'=>'U','%C3%9A'=>'U','%C3%9B'=>'U','%C3%9C'=>'U','%C3%B9'=>'u','%C3%BA'=>'u',
'%C3%BB'=>'u','%C3%BC'=>'u','%C3%BF'=>'y','%C3%91'=>'N','%C3%B1'=>'n',
'%C3%87'=>'C','%C3%A7'=>'c','%C5%92'=>'OE','%C5%93'=>'oe');
$string = urlencode($string);
foreach ($chars as $key => $value) $string = str_replace($key,$value,$string);
return urldecode($string);
}
// cryptage réversible d'une chaine de caractères
// crypte une chaine
function crypt($chain,$key) {
srand((double)microtime()*1000000);
$cle = md5(rand(0,32000));
$n = 0;
$temp = '';
for ($i=0; $i<strlen($chain); $i++) {
if ($n == strlen($cle)) $n = 0;
$temp .= substr($cle,$n,1).(substr($chain,$i,1) ^ substr($cle,$n,1));
$n++;
}
return base64_encode(genKey($temp,$key));
}
// décrypte une chaine
function decrypt($chain,$key) {
$chain = genKey(base64_decode($chain),$key);
$temp = '';
for ($i=0; $i<strlen($chain); $i++) {
$code = substr($chain,$i,1);
$i++;
$temp .= (substr($chain,$i,1) ^ $code);
}
return $temp;
}
// fonction appelée par crypt() et decrypt()
function genKey($chain,$key) {
$key = md5($key);
$n = 0;
$temp = '';
for ($i=0; $i<strlen($chain); $i++) {
if ($n == strlen($key)) $n = 0;
$temp .= substr($chain,$i,1) ^ substr($key,$n,1);
$n++;
}
return $temp;
}
// crypte une chaine
function crypt($chain,$key) {
srand((double)microtime()*1000000);
$cle = md5(rand(0,32000));
$n = 0;
$temp = '';
for ($i=0; $i<strlen($chain); $i++) {
if ($n == strlen($cle)) $n = 0;
$temp .= substr($cle,$n,1).(substr($chain,$i,1) ^ substr($cle,$n,1));
$n++;
}
return base64_encode(genKey($temp,$key));
}
// décrypte une chaine
function decrypt($chain,$key) {
$chain = genKey(base64_decode($chain),$key);
$temp = '';
for ($i=0; $i<strlen($chain); $i++) {
$code = substr($chain,$i,1);
$i++;
$temp .= (substr($chain,$i,1) ^ $code);
}
return $temp;
}
// fonction appelée par crypt() et decrypt()
function genKey($chain,$key) {
$key = md5($key);
$n = 0;
$temp = '';
for ($i=0; $i<strlen($chain); $i++) {
if ($n == strlen($key)) $n = 0;
$temp .= substr($chain,$i,1) ^ substr($key,$n,1);
$n++;
}
return $temp;
}
// retourne la date complète en français
function frDate($day) {
$aujourdhui = getDay($day)." ";
$jour = date("j", strtotime($day));
$aujourdhui .= $jour;
if ($jour == 1) $aujourdhui .= "er";
$aujourdhui .= " ".strtolower(getMonth($day))." ";
$aujourdhui .= date("Y", strtotime($day));
return $aujourdhui;
}
// retourne le jour en français
function getDay($date) {
$j = date("N", strtotime($date));
if ($j == 1) $jour = 'Lundi';
if ($j == 2) $jour = 'Mardi';
if ($j == 3) $jour = 'Mercredi';
if ($j == 4) $jour = 'Jeudi';
if ($j == 5) $jour = 'Vendredi';
if ($j == 6) $jour = 'Samedi';
if ($j == 7) $jour = 'Dimanche';
return $jour;
}
// retourne le mois en français
function getMonth($date) {
$m = date("m", strtotime($date));
if ($m == 1) $mois = 'Janvier';
if ($m == 2) $mois = 'Février';
if ($m == 3) $mois = 'Mars';
if ($m == 4) $mois = 'Avril';
if ($m == 5) $mois = 'Mai';
if ($m == 6) $mois = 'Juin';
if ($m == 7) $mois = 'Juillet';
if ($m == 8) $mois = 'Août';
if ($m == 9) $mois = 'Septembre';
if ($m == 10) $mois = 'Octobre';
if ($m == 11) $mois = 'Novembre';
if ($m == 12) $mois = 'Décembre';
return $mois;
}
// retourne le nombre de mercredis dans un mois défini
function howManyWednesday($month, $year) {
$date = date("Y-m-d", strtotime($year.'-'.$month.'-1'));
$nDays = date("t", strtotime($date));
$nWednesday = 0;
for ($i=0;$i<$nDays;$i++)
if (date("N", strtotime($date.' + '.$i.' days')) == 3) $nWednesday++;
return $nWednesday;
}
// retourne la date du mercredi précédent le plus proche
function wednesdayBefore($date) {
$jour = date("N", strtotime($date));
if ($jour == 1) $decalage = -5;
if ($jour == 2) $decalage = -6;
if ($jour == 3) $decalage = 0;
if ($jour == 4) $decalage = -1;
if ($jour == 5) $decalage = -2;
if ($jour == 6) $decalage = -3;
if ($jour == 7) $decalage = -4;
$date = date("Y-m-d", strtotime("$date ".$decalage." days"));
return $date;
}
// retourne la date du mercredi suivant le plus proche
function wednesdayAfter($date) {
$jour = date("N", strtotime($date));
if ($jour == 1) $decalage = +2;
if ($jour == 2) $decalage = +1;
if ($jour == 3) $decalage = 0;
if ($jour == 4) $decalage = +6;
if ($jour == 5) $decalage = +5;
if ($jour == 6) $decalage = +4;
if ($jour == 7) $decalage = +3;
$date = date("Y-m-d", strtotime("$date ".$decalage." days"));
return $date;
}
function frDate($day) {
$aujourdhui = getDay($day)." ";
$jour = date("j", strtotime($day));
$aujourdhui .= $jour;
if ($jour == 1) $aujourdhui .= "er";
$aujourdhui .= " ".strtolower(getMonth($day))." ";
$aujourdhui .= date("Y", strtotime($day));
return $aujourdhui;
}
// retourne le jour en français
function getDay($date) {
$j = date("N", strtotime($date));
if ($j == 1) $jour = 'Lundi';
if ($j == 2) $jour = 'Mardi';
if ($j == 3) $jour = 'Mercredi';
if ($j == 4) $jour = 'Jeudi';
if ($j == 5) $jour = 'Vendredi';
if ($j == 6) $jour = 'Samedi';
if ($j == 7) $jour = 'Dimanche';
return $jour;
}
// retourne le mois en français
function getMonth($date) {
$m = date("m", strtotime($date));
if ($m == 1) $mois = 'Janvier';
if ($m == 2) $mois = 'Février';
if ($m == 3) $mois = 'Mars';
if ($m == 4) $mois = 'Avril';
if ($m == 5) $mois = 'Mai';
if ($m == 6) $mois = 'Juin';
if ($m == 7) $mois = 'Juillet';
if ($m == 8) $mois = 'Août';
if ($m == 9) $mois = 'Septembre';
if ($m == 10) $mois = 'Octobre';
if ($m == 11) $mois = 'Novembre';
if ($m == 12) $mois = 'Décembre';
return $mois;
}
// retourne le nombre de mercredis dans un mois défini
function howManyWednesday($month, $year) {
$date = date("Y-m-d", strtotime($year.'-'.$month.'-1'));
$nDays = date("t", strtotime($date));
$nWednesday = 0;
for ($i=0;$i<$nDays;$i++)
if (date("N", strtotime($date.' + '.$i.' days')) == 3) $nWednesday++;
return $nWednesday;
}
// retourne la date du mercredi précédent le plus proche
function wednesdayBefore($date) {
$jour = date("N", strtotime($date));
if ($jour == 1) $decalage = -5;
if ($jour == 2) $decalage = -6;
if ($jour == 3) $decalage = 0;
if ($jour == 4) $decalage = -1;
if ($jour == 5) $decalage = -2;
if ($jour == 6) $decalage = -3;
if ($jour == 7) $decalage = -4;
$date = date("Y-m-d", strtotime("$date ".$decalage." days"));
return $date;
}
// retourne la date du mercredi suivant le plus proche
function wednesdayAfter($date) {
$jour = date("N", strtotime($date));
if ($jour == 1) $decalage = +2;
if ($jour == 2) $decalage = +1;
if ($jour == 3) $decalage = 0;
if ($jour == 4) $decalage = +6;
if ($jour == 5) $decalage = +5;
if ($jour == 6) $decalage = +4;
if ($jour == 7) $decalage = +3;
$date = date("Y-m-d", strtotime("$date ".$decalage." days"));
return $date;
}
// retourne une valeur au format puissance de 10
function deciPower($val, $size) {
$val = sprintf('%E', $val);
$val = explode('E',$val);
$out = "<span style='font-size:".$size."px;'>".number_format($val[0],3,'.','')."</span>";
$out .= "<span style='font-size:".($size-4)."px;'> 10<sup>".abs($val[1])."</sup></span>";
return $out;
}
function deciPower($val, $size) {
$val = sprintf('%E', $val);
$val = explode('E',$val);
$out = "<span style='font-size:".$size."px;'>".number_format($val[0],3,'.','')."</span>";
$out .= "<span style='font-size:".($size-4)."px;'> 10<sup>".abs($val[1])."</sup></span>";
return $out;
}
// génère un mot de passe aléatoire
function passwordGenerator($size) {
$chaine1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$chaine2 = ".*-+=@:!?%";
$chaine3 = "abcdefghijklmnopqrstuvwxyz";
$chaine4 = "0123456789";
srand((double)microtime()*1000000);
$password = '';
for($i=0; $i<$size; $i+=4){
$password .= $chaine1[rand()%strlen($chaine1)];
$password .= $chaine2[rand()%strlen($chaine2)];
$password .= $chaine3[rand()%strlen($chaine3)];
$password .= $chaine4[rand()%strlen($chaine4)];
}
return substr($password, 0, $size);
}
// évalue la force de 0 à 10 d'un mot de passe
function testForcePassword($password) {
$score = strlen($password)-8;
if (preg_match("/[a-z]/", $password)) $score++;
if (preg_match("/[A-Z]/", $password)) $score++;
if (preg_match("/[0-9]/", $password)) $score++;
if (preg_match("/[$@!?%_+*-=#&<>(){}|:.;,\"\'\[\]\/]/", $password)) $score++;
if ($score < 0) $score = 0;
if ($score > 10) $score = 10;
return $score;
}
function passwordGenerator($size) {
$chaine1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$chaine2 = ".*-+=@:!?%";
$chaine3 = "abcdefghijklmnopqrstuvwxyz";
$chaine4 = "0123456789";
srand((double)microtime()*1000000);
$password = '';
for($i=0; $i<$size; $i+=4){
$password .= $chaine1[rand()%strlen($chaine1)];
$password .= $chaine2[rand()%strlen($chaine2)];
$password .= $chaine3[rand()%strlen($chaine3)];
$password .= $chaine4[rand()%strlen($chaine4)];
}
return substr($password, 0, $size);
}
// évalue la force de 0 à 10 d'un mot de passe
function testForcePassword($password) {
$score = strlen($password)-8;
if (preg_match("/[a-z]/", $password)) $score++;
if (preg_match("/[A-Z]/", $password)) $score++;
if (preg_match("/[0-9]/", $password)) $score++;
if (preg_match("/[$@!?%_+*-=#&<>(){}|:.;,\"\'\[\]\/]/", $password)) $score++;
if ($score < 0) $score = 0;
if ($score > 10) $score = 10;
return $score;
}
// génère un pictogramme anti-spam
mt_srand((float) microtime()*1000000);
$number = mt_rand(10000, 99999);
$textColor = 'FFFFFF',
$backColor = '00FF00',
function getPicto($number,$textColor,$backColor) {
$back1 = hexdec(substr($backColor,0,2));
$back2 = hexdec(substr($backColor,2,2));
$back3 = hexdec(substr($backColor,4,2));
$image = imageCreate(65,29);
imageColorAllocate($image, $back1, $back2, $back3);
// imageString(image, font, posX, posY, text, textColor);
imageString($image, 5, 10, 7, $number, $textColor);
return imagePng($image);
}
mt_srand((float) microtime()*1000000);
$number = mt_rand(10000, 99999);
$textColor = 'FFFFFF',
$backColor = '00FF00',
function getPicto($number,$textColor,$backColor) {
$back1 = hexdec(substr($backColor,0,2));
$back2 = hexdec(substr($backColor,2,2));
$back3 = hexdec(substr($backColor,4,2));
$image = imageCreate(65,29);
imageColorAllocate($image, $back1, $back2, $back3);
// imageString(image, font, posX, posY, text, textColor);
imageString($image, 5, 10, 7, $number, $textColor);
return imagePng($image);
}
// versions de mysql, mariadb, apache et os
$link = mysqli_connect('HostName','UserName','Password');
mysqli_select_db($link,'DatabaseName');
$chain = explode('-',mysqli_get_server_info($link));
$mysql = 'MySQL '.$chain[0];
$maria = 'MariaDB '.$chain[1];
$chain = explode('/',apache_get_version());
$chain = explode(' ',$chain[1]);
$apache = $chain[0];
$os = str_replace('(','',$chain[1]);
$os = str_replace(')','',$os);
mysqli_close($link);
$link = mysqli_connect('HostName','UserName','Password');
mysqli_select_db($link,'DatabaseName');
$chain = explode('-',mysqli_get_server_info($link));
$mysql = 'MySQL '.$chain[0];
$maria = 'MariaDB '.$chain[1];
$chain = explode('/',apache_get_version());
$chain = explode(' ',$chain[1]);
$apache = $chain[0];
$os = str_replace('(','',$chain[1]);
$os = str_replace(')','',$os);
mysqli_close($link);
// mailing avec la classe PHPMailer (https://github.com/PHPMailer/)
// paramètres du mail
$nom_expe = 'nom_expéditeur';
$mail_expe = 'mail_expéditeur';
$objet = 'objet_mail';
$pj = 'chemin/pièce_jointe';
$message = '';
$destinataires = array();
// refus de pièce jointe > 2Mo
if (filesize($pj) >= 1048576 * 2) $pj = '';
// corps du message html
$fichier = 'fichier.html';
$fp = fopen($fichier,'r');
while (!feof($fp)) $message .= fgets($fp,4096);
fclose($fp);
// destinataires extraits d'une bdd
$link = mysqli_connect('HostName','UserName','Password');
mysqli_select_db($link,'DatabaseName');
$query = "select * from table where email <> '' order by nom asc, prenom asc";
$result = mysqli_query($link,$query) or die('Erreur SQL ! '.$query.'<br>'.mysqli_error($link,));
while ($row = mysqli_fetch_array($result)) array_push($destinataires, $row['email']);
mysqli_close($link);
// lignes à décommenter pour les tests :
// $destinataires = array();
// $destinataires[0] = 'email_test';
// chargement de PHPMailer et création d'une instance de la classe
include_once('phpmailer/PHPMailerAutoload.php');
$send_mail = new PHPMailer();
// authentification smtp
$send_mail -> IsSMTP();
$send_mail -> SMTPAuth = true;
$send_mail -> Host = "serveur_smtp";
$send_mail -> Port = 25;
$send_mail -> Username = "compte_smtp";
$send_mail -> Password = "password_smtp";
// authentification smtp avec cryptage ssl (465) ou tls (587)
// $send_mail -> SMTPSecure = "tls";
// $send_mail -> Port = 587;
// construction du mail
$send_mail -> From = $mail_expe;
$send_mail -> FromName = $nom_expe;
$send_mail -> Subject = $objet;
$send_mail -> WordWrap = 50;
$send_mail -> MsgHTML($message);
$send_mail -> AddAttachment($pj);
foreach ($destinataires as $contact) $send_mail -> AddAddress($contact,'');
// envoi du mail et message de retour
$send_mail -> IsHTML(true);
$retour = ($send_mail -> Send()) ? 'Success' : 'Failure' ;
// paramètres du mail
$nom_expe = 'nom_expéditeur';
$mail_expe = 'mail_expéditeur';
$objet = 'objet_mail';
$pj = 'chemin/pièce_jointe';
$message = '';
$destinataires = array();
// refus de pièce jointe > 2Mo
if (filesize($pj) >= 1048576 * 2) $pj = '';
// corps du message html
$fichier = 'fichier.html';
$fp = fopen($fichier,'r');
while (!feof($fp)) $message .= fgets($fp,4096);
fclose($fp);
// destinataires extraits d'une bdd
$link = mysqli_connect('HostName','UserName','Password');
mysqli_select_db($link,'DatabaseName');
$query = "select * from table where email <> '' order by nom asc, prenom asc";
$result = mysqli_query($link,$query) or die('Erreur SQL ! '.$query.'<br>'.mysqli_error($link,));
while ($row = mysqli_fetch_array($result)) array_push($destinataires, $row['email']);
mysqli_close($link);
// lignes à décommenter pour les tests :
// $destinataires = array();
// $destinataires[0] = 'email_test';
// chargement de PHPMailer et création d'une instance de la classe
include_once('phpmailer/PHPMailerAutoload.php');
$send_mail = new PHPMailer();
// authentification smtp
$send_mail -> IsSMTP();
$send_mail -> SMTPAuth = true;
$send_mail -> Host = "serveur_smtp";
$send_mail -> Port = 25;
$send_mail -> Username = "compte_smtp";
$send_mail -> Password = "password_smtp";
// authentification smtp avec cryptage ssl (465) ou tls (587)
// $send_mail -> SMTPSecure = "tls";
// $send_mail -> Port = 587;
// construction du mail
$send_mail -> From = $mail_expe;
$send_mail -> FromName = $nom_expe;
$send_mail -> Subject = $objet;
$send_mail -> WordWrap = 50;
$send_mail -> MsgHTML($message);
$send_mail -> AddAttachment($pj);
foreach ($destinataires as $contact) $send_mail -> AddAddress($contact,'');
// envoi du mail et message de retour
$send_mail -> IsHTML(true);
$retour = ($send_mail -> Send()) ? 'Success' : 'Failure' ;
// fermeture de session automatique
session_start();
$timeout = 900;
// ligne de code à placer dans <head></head> (timeout majoré de 2s)
if ($_SESSION['login'] != '') echo "<meta http-equiv='refresh' content='".($timeout+2)."'>";
// tentative de connexion
if ($_POST['connect'] != '') {
$id = $_POST['login'];
$password = $_POST['password'];
$link = mysqli_connect('HostName','UserName','Password');
mysqli_select_db($link,'DatabaseName');
$query = "select * from table where id = '$id'";
$result = mysqli_query($link,$query) or die('Erreur SQL ! '.$query.'<br>'.mysqli_error($link));
$exist = mysqli_num_rows($result);
$row = mysqli_fetch_array($result);
mysqli_close($link);
if (($exist > 0) && ($row['pw'] == $password)) {
// ouverture de session et rechargement de la page
$_SESSION['login'] = $row['id'];
echo "<script> window.location.replace('index.php') </script>";
}
} else {
// déconnexion manuelle, ou automatique si le timeout est atteint
if ((($_POST['disconnect'] != '') ||
(isset($_SESSION['start']) && (time() - $_SESSION['start'] > $timeout)))) {
// destruction de la session et rechargement de la page
$_SESSION = array();
session_destroy();
session_unset();
echo "<script> window.location.replace('index.php') </script>";
}
}
// derniere action du visiteur
$_SESSION['start'] = time();
// suite de la page ici...
session_start();
$timeout = 900;
// ligne de code à placer dans <head></head> (timeout majoré de 2s)
if ($_SESSION['login'] != '') echo "<meta http-equiv='refresh' content='".($timeout+2)."'>";
// tentative de connexion
if ($_POST['connect'] != '') {
$id = $_POST['login'];
$password = $_POST['password'];
$link = mysqli_connect('HostName','UserName','Password');
mysqli_select_db($link,'DatabaseName');
$query = "select * from table where id = '$id'";
$result = mysqli_query($link,$query) or die('Erreur SQL ! '.$query.'<br>'.mysqli_error($link));
$exist = mysqli_num_rows($result);
$row = mysqli_fetch_array($result);
mysqli_close($link);
if (($exist > 0) && ($row['pw'] == $password)) {
// ouverture de session et rechargement de la page
$_SESSION['login'] = $row['id'];
echo "<script> window.location.replace('index.php') </script>";
}
} else {
// déconnexion manuelle, ou automatique si le timeout est atteint
if ((($_POST['disconnect'] != '') ||
(isset($_SESSION['start']) && (time() - $_SESSION['start'] > $timeout)))) {
// destruction de la session et rechargement de la page
$_SESSION = array();
session_destroy();
session_unset();
echo "<script> window.location.replace('index.php') </script>";
}
}
// derniere action du visiteur
$_SESSION['start'] = time();
// suite de la page ici...
// chaines de caractères
// supprime les espaces superflus dans la chaine
$str = preg_replace('/\s\s+/', ' ', $str);
// supprime les espaces en début de chaine
$str = ltrim($str);
// supprime les espaces en fin de chaine
$str = rtrim($str);
// supprime les espaces en début et fin de chaine
$str = trim($str);
// supprime les espaces superflus dans la chaine
$str = preg_replace('/\s\s+/', ' ', $str);
// supprime les espaces en début de chaine
$str = ltrim($str);
// supprime les espaces en fin de chaine
$str = rtrim($str);
// supprime les espaces en début et fin de chaine
$str = trim($str);
Papy WinTux - Philippe DESLOGES - 2023-2026 - Powered by Debian - Apache 2.4.54 - PHP 7.4.33 - Last update 20-04-2026 19:05 - Page size 133 ko built in 12 ms
All trademarks, logos, images and documents on these pages belong exclusively to their respective owners.
All trademarks, logos, images and documents on these pages belong exclusively to their respective owners.
