[RESOLU] Supprimer une image si elle est pas enregistrée dans la BDD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Supprimer une image si elle est pas enregistrée dans la BDD

Re: Supprimer une image si elle est pas enregistrée dans la

par moogli » 11 janv. 2014, 14:56

salut,

j'ai avancé une réponse pour le système dans le précédent message ;)

@+

Supprimer une image si elle est pas enregistrée dans la BDD

par nico44530 » 11 janv. 2014, 01:20

Bonjour,

J'aimerais créer le script d'une tâche CRON (utilisable avec mon hébergeur).
Elle vérifierai si dans un dossier du serveur, les images sont utilisées dans la base de données.
Si elle n'est pas utilisée, elle est supprimée.

J'utilise un formulaire d'upload avec un textarea et le champ de l'image est facultative (NULL)
Le problème c'est que je fais un preview avant de publier le texte et l'image, sauf que l'image se trouve déjà sur le serveur.

Donc si le membre actualise sans publier, elle encombrera mon espace disque.
C'est pour ça qu'une tâche CRON qui s’exécute à chaque 3h du matin par exemple, pourrait supprimer les images inutiles.

Le problème c'est que je sais supprimer une image du serveur avec unlink();
Mais pour vérifier que l'image est inutilisée, je bloque :(

Voici le script d'upload, appelé en ajax :
<?php
session_start();
require('../../include/config.inc.php');

$valid_exts = array('jpeg', 'jpg', 'png');
$max_size = 2000 * 2000;
$path = 'upload/';

if(!empty($_FILES['filename'])){
	$ext = strtolower(pathinfo($_FILES['filename']['name'], PATHINFO_EXTENSION));
	if(in_array($ext, $valid_exts) AND $_FILES['filename']['size'] < $max_size){
		$path = $path . uniqid(). '.' .$ext;
		if(move_uploaded_file($_FILES['filename']['tmp_name'], $path)){

?> 
<img src="img/loaderImg.gif" height="48" width="48" id="loaderStatutImg" alt="" />
<img src="users/ajax/<?php echo $path; ?>" height="150" width="200" class="loadImg" style="display:none;" alt="" />
<input type="hidden" name="statut_img" class="inputStatutImg" value="<?php echo $path; ?>" />
<script type="text/javascript">$('#loaderStatutImg').show();$('.loadImg').on('load',function(){$('#loaderStatutImg').hide();$(this).fadeIn('fast');});</script>
<?php
		}
	} else {
		echo '<span class="errorUpload">Invalid file!</span>';
	}
} else { ?><script type="text/javascript">$('#preview').hide();</script><?php } ?>


PS : ce post rejoins le problème de celui-ci : php-debutant/message-confirmation-formu ... 70033.html

Merci d'avance