mkdir et apostrophe

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 : mkdir et apostrophe

Re: mkdir et apostrophe

par moogli » 03 mai 2013, 16:21

oubli ce type de chose c'est une source d'emmerde.

un nom de dossier c'est sans espace, apostrophe, caractère accentué ou caractère spécial (en gros [A-Za-a0-9\-_]) sinon tu va au devant d'ennuie pour l'utilisation des répertoires, tu devras tout échapper, tu aura des problèmes si tu doit naviguer dans les répertoires etc etc.

si le nom de répertoire n'est pas une donnée vitale (et ne devrait pas l'être) tu peux très bien choix le nom arbitrairement et le stocker en base vu que c'est ainsi que tu semble faire la liaison.


@+

Re: mkdir et apostrophe

par Mazarini » 03 mai 2013, 16:16

je viens de faire un test avec mkdir en ligne de commande. Il faut remplacer ' par \'.

mkdir et apostrophe

par Sioux » 03 mai 2013, 16:02

Bonjour à tous,
J'ai un léger soucis de création de dossier avec la fonction mkdir().
J'ai un petit formulaire qui récupère une variable $nom. Celui ci indique le titre d'une catégorie et créé en même temps un dossier avec comme nom cette variable.Jusque là tout va bien...
Jusqu'au moment ou j'ai un titre avec une apostrophe.La variable est bien créé et s'inscrit bien tel quel dans ma base de donnée mais le dossier refuse de se créer.
Donc est-ce qu'il est possible de créé un dossier avec caractère spécial avec mkdir()?
Mon code
if(!empty($_POST["nom"])){
	$erreurs = array(); //initialise un tableau d'erreurs au cas ou :)
	$nom = mysql_escape_string(trim($_POST["nom"])); //enleve les espaces de chaque côté de la variable
	$date = mysql_escape_string(trim($_POST["date"])); 
	$categorie="galerie_3d";
	$desc = mysql_escape_string(trim($_POST["description"]));
	$lienimage = "";
	$typesacceptes = array("image/jpeg","image/jpg","image/png","image/gif");
	//vérifie si les images existent et qu'elles sont au bon format
	if(!empty($_FILES["image"]["name"]) && in_array($_FILES["image"]["type"],$typesacceptes))
	  {
		
		if(!is_dir("galerie/3d/".$nom))
		     {  
		         mkdir("galerie/3d/".$nom."", 0777);//création d'un dossier si il n'existe pas
			  mkdir("galerie/3d/".$nom."/min", 0777);//création d'un dossier pour les miniature
			  mkdir("galerie/3d/".$nom."/vid", 0777);//création d'un dossier pour les vidéos
		      }
			
			$lienimage = mysql_escape_string($_FILES["image"]["name"]);
			copy($_FILES["image"]["tmp_name"],"projet/3d/".$lienimage);
			
			//connexion à la BDD
			$connect=mysql_connect(DB_HOST,DB_LOGIN,DB_PASS) or die ('erreur de connexion'); 
			mysql_select_db(DB_BDD) or die ('erreur de connexion à la base'); 
	
			$requeteinsert = "INSERT INTO projet_3d(nom,lienimage,categorie,description,date) VALUES(\"".$nom."\",\"".$lienimage."\",\"".$categorie."\",\"".$desc."\",\"".$date."\")";
			$result = mysql_query($requeteinsert,$connect);
			echo "<p class='styletexte'>Votre image a bien été enregistrée!</p>";
			mysql_close($connect);	
	   }
	else{
		$erreurs[] = "Veuillez uploader une image valide (format jpg, png ou gif)!";
	}
}

Merci d'avance