secure_file_put_contents stocke les données brutes

This commit is contained in:
Fred Tempez 2024-04-10 11:56:31 +02:00
parent 5ede9b71c2
commit 6d7c2f725d
1 changed files with 12 additions and 18 deletions

View File

@ -622,41 +622,35 @@ class common
*/ */
function secure_file_put_contents($filename, $data, $flags = 0) function secure_file_put_contents($filename, $data, $flags = 0)
{ {
// Convertit les données en chaîne de caractères
$serialized_data = serialize($data);
// Vérifie si le fichier existe
if (!file_exists($filename)) {
// Crée le fichier s'il n'existe pas
$handle = fopen($filename, 'w');
fclose($handle);
}
// Initialise le compteur de tentatives // Initialise le compteur de tentatives
$attempts = 0; $attempts = 0;
// Convertit les données en chaîne de caractères
$serialized_data = serialize($data);
// Vérifie la longueur des données // Vérifie la longueur des données
$data_length = strlen($serialized_data); $data_length = strlen($serialized_data);
// Effectue jusqu'à 5 tentatives d'écriture // Effectue jusqu'à 5 tentatives d'écriture
while ($attempts < 5) { while ($attempts < 5) {
// Essaye d'écrire les données dans le fichier avec verrouillage exclusif // Essaye d'écrire les données dans le fichier avec verrouillage exclusif
$write_result = file_put_contents($filename, $serialized_data, LOCK_EX | $flags); $write_result = file_put_contents($filename, $data, LOCK_EX | $flags);
// Vérifie si l'écriture a réussi // Vérifie si l'écriture a réussi
if ($write_result !== false && $write_result === $data_length) { if ($write_result !== false && $write_result === $data_length) {
// Sort de la boucle si l'écriture a réussi // Sort de la boucle si l'écriture a réussi
return true; return true;
} }
// Incrémente le compteur de tentatives // Incrémente le compteur de tentatives
$attempts++; $attempts++;
} }
// Échec de l'écriture après plusieurs tentatives // Échec de l'écriture après plusieurs tentatives
return false; return false;
} }
public function initDB($module, $path = '') public function initDB($module, $path = '')
@ -665,7 +659,7 @@ class common
// Constructeur JsonDB; // Constructeur JsonDB;
$this->dataFiles[$module] = new \Prowebcraft\JsonDb([ $this->dataFiles[$module] = new \Prowebcraft\JsonDb([
'name' => $module . '.json', 'name' => $module . '.json',
'dir' => empty($path) ? self::DATA_DIR : self::DATA_DIR . $path . '/', 'dir' => empty($path) ? self::DATA_DIR : self::DATA_DIR . $path . '/',
'backup' => file_exists('site/data/.backup') 'backup' => file_exists('site/data/.backup')
]); ]);