Renommé a la volé a l'upload

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 : Renommé a la volé a l'upload

Re: Renommé a la volé a l'upload

par moogli » 03 juil. 2012, 16:33

salut,

case 2: // UPLOAD_ERR_FORM_SIZE
echo "Il y'a trop de texte dans le formulaire.";

heu non, regarde bien dans la doc :)

Il existe d'autre cas d'erreur à prendre en compte.

tu devrais aussi tester l'extension et le type mime du fichier (l'extension pour être sur d'avoir quelque chose d'uniforme et le type mime pour être certain qu'il s'agisse bien d'un fichier excel).

pourquoi renommer le fichier ?
qu'elle est la corrélation entre le nom et ce que tu veux la fin ? (parce ce que ton exemple la c'est du numérique pas de l'hexa ;) ).
si le numérique te suffit tu peux utiliser la fonction time() tu sera sur de l'unicité du nom.
le "renommage" s'effectue avec le move_uloaded_file()


Pour le "code" c'est le même principe qu'avec l'id, tu génères une chaîne aléatoire unique qui servira à l'accès. (algorithme a définir).
Pourquoi ne pas utiliser la clef primaire ?

coté requête sql htmlentities et addslashes ne servent à rien.
utilise mysqli_real_escape_stringpour la "protection" des requêtes et htmlentites c'est pour l'affichage, tu garde les données brutes en base :)

@+

Renommé a la volé a l'upload

par Sato » 03 juil. 2012, 15:58

Bonjour je crée un script d'upload pour un projet personnel pour mon nas dans ma maison.

J'aurai aimer savoir deux choses:

J'aimerai que quand j'upload le fichier celui-ci sois renommer a la volé en hexa.
Exemple: fichieblabla.xls --> 8609753.xls

Chaque fichier est présenter comme cela:

chaque fichier affiche une page pour consulter le fichier comme ceci:
Je veut consulter le fichier fichierblabla.xls je clique sur le lien qui se présente comme ceci: consult.php?id=1.
Moi j'aimerai que ce soit un lien a la volé aussi comme youtube.
watch?v=-pn38YNJYoE

Est ce possible ?

Pourriez vous me donner la base de ce que je doit mettre en place.

J'ai déjà commencer a crée le principe de base du script:

Le formulaire:
<body>
<form action="insertion_contenu.php" method="POST" enctype="multipart/form-data">
<p>Titre: <input type="text" name="titre" /></p>
<p>Artiste: <input type="text" name="artiste" /></p>
<p>Album: <input type="text" name="album" /></p>
<p>Commentaire: <br /><textarea name="commentaire" rows="10" cols="50"></textarea></p>
<input type="hidden" name="MAX_FILE_SIZE" value="209715234">
<input type="file" name="photo">
<br /><br />
<input type="submit" name="ok" value="Uploader">
</form><br />
</body>
</html>
Le fichier d'insertion:
<body>
<?php
$connect = mysqli_connect("", "", "", "");
/* Verification de la connexion*/
if (!$connect) {
	echo "Echec de la connexion : ".mysqli_connect_error();
	exit;
}

if ($_FILES['photo']['error']) {
	switch ($_FILES['photo']['error']){
		case 1: // UPLOAD_ERR_INI_SIZE
			echo "La taille du fichier est plus grande que la limite autorisée par le serveur.";
			break;
		case 2: // UPLOAD_ERR_FORM_SIZE
			echo "Il y'a trop de texte dans le formulaire.";
			break;
		case 3: // UPLOAD_ERR_PARTIAL
			echo "L'envoie du fichier a été interrompu pendant le transfert.";
			break;
		case 4: // UPLOAD_ERR_NO_FILE
	}
}
else {
	echo "Aucune erreur dans le transfert de fichier.<br />";
	if ((isset($_FILES['photo']['name'])&&($_FILES['photo']['error'] == UPLOAD_ERR_OK))) {
		$chemin_destination = 'musiques/';
		move_uploaded_file($_FILES['photo']['tmp_name'], $chemin_destination.$_FILES['photo']['name']);
			echo "Le fichier ".$_FILES['photo']['name']." a été copié avec classe sur le serveur bravo !";
		}
		else {
			echo "Erreur, le fichier n'a pas pus être copié.";
		}
	}
	
$requete = "INSERT INTO contenu (Titre, Artiste, Album, Date, Commentaire, Photo)
VALUES ('".htmlentities(addslashes($_POST['titre']),ENT_QUOTES)."','".htmlentities(addslashes($_POST['artiste']),ENT_QUOTES)."','".htmlentities(addslashes($_POST['album']),ENT_QUOTES)."','".date("Y-m-d H:i:s")."','".htmlentities(addslashes($_POST['commentaire']), ENT_QUOTES)."','".$_FILES['photo']['name']."')";
$resultat = mysqli_query($connect,$requete);
$identifiant = mysqli_insert_id($connect);
mysqli_close($connect);

if ($identifiant != 0) {
	echo "<br />Ajout du commentaire réussis.<br /><br />";
}

else {
	echo "<br />Le commentaire nas pas pus être ajouté.<br /><br />";
}

?>
Merci d'avance.