Page 1 sur 2
créer un répertoire.
Posté : 26 mars 2012, 13:50
par piotrowski-s
Bonjour, je souhaites créer un répertoire qui contiendra le nom de la variable, néanmoins il me renvoit une erreur et je ne sais pas pourquoi. voici le code
<?php
mkdir("../$_POST['code_client']", 0700);
?>
d'avnce merci pour l'iade.
Re: créer un répertoire.
Posté : 26 mars 2012, 14:19
par xTG
J'espère sincèrement que tu testes cette variable avant de l'utiliser.
mkdir("../" . $_POST['code_client'], 0700);
Re: créer un répertoire.
Posté : 26 mars 2012, 14:20
par piotrowski-s
je la récupère en POSt et cela fait partie d'une fonction avec un isset

merci pour l'aide
Re: créer un répertoire.
Posté : 26 mars 2012, 14:26
par xTG
J'espère que ta fonction fait autre chose que isSet(), notamment vérifier le répertoire à créer.
Car sinon on peut créer un répertoire où l'on veut sur le système.

Re: créer un répertoire.
Posté : 26 mars 2012, 14:33
par piotrowski-s
je ne sais pas. dites je voulais savoir si vous savez comment créer un repertoire si et seulement si il est inexistant? par avance merci.
Re: créer un répertoire.
Posté : 26 mars 2012, 15:50
par xTG
C'est pas le problème ça, la fonction mkdir() ne peut pas créer un répertoire déjà existant.
Le souci c'est de pouvoir créer le répertoire n'importe où sur le système (et je parle du système, pas de l'espace web justement !).
Re: créer un répertoire.
Posté : 26 mars 2012, 16:48
par piotrowski-s
mais comment evieter le message d'erreur si le rep est deja existant? car je sais comment verifier une variable mais pas un repertoire. D'avance merci.
Re: créer un répertoire.
Posté : 26 mars 2012, 20:19
par xTG
Il faut placer un @ devant la fonction.
Et pour savoir si la fonction a créé le répertoire tu récupères son retour, si c'est false c'est qu'il y a eu une erreur.
Re: créer un répertoire.
Posté : 26 mars 2012, 21:32
par sirakawa
C'est pas le problème ça, la fonction mkdir() ne peut pas créer un répertoire déjà existant.
Le souci c'est de pouvoir créer le répertoire n'importe où sur le système (et je parle du système, pas de l'espace web justement !).
C'est pourquoi il faut savoir si le script créateur est destiné à servir sous un système gérant les droits (Unix, réseau correctement conçu) où Apache exécutant PHP ne peut pas écrire partout, ou s'il doit pouvoir servir aussi sur des systèmes dont la gestion des droits est minime, voire nulle.
De toute façon, pourquoi créer un répertoire à la requête d'un utilisateur, à moins qu'il veuille créer un sous-répertoire de son "home directory"? Est-on contraint d'exécuter cette création illico subito?
Si on veut créer un utilisateur et son home directory, il y a moyen sous Unix de le faire sans grand risque (adduser...)
Re: créer un répertoire.
Posté : 27 mars 2012, 14:09
par piotrowski-s
oui cela est bien pour créer un repertoire dans le dossier "home directory" du server. Pour l'heure je suis en local chez WAMP mais apres je passerais chez OVH.
Re: créer un répertoire.
Posté : 27 mars 2012, 15:06
par sirakawa
home directory de qui?
OVH c'est sous un Unix like?
Re: créer un répertoire.
Posté : 27 mars 2012, 15:48
par piotrowski-s
oui du server que je prendrais. Mais la je suis sous wamp c'est le dossier www/ monsite
Re: créer un répertoire.
Posté : 27 mars 2012, 22:02
par sirakawa
Ce qui compte, ce n'est pas que ça marche en local, mais que ça marche partout:
si tu es en local sous PetiteFenêtre, ce sera facile, mais ça risque de ne pas fonctionner chez OVH qui doit être sous un des 315727,32 avatars d'unix, soit dieu sait quel Linux, mais, par chance, ce genre de problèmes se gère de la même façon quelle que soit la "distro" comme ils disent à quelques différences près faciles à corriger qui peuvent se résoudre à distance, même si on ne dispose pas de la même distro...
Re: créer un répertoire.
Posté : 27 mars 2012, 22:29
par Mazarini
Il faut vérifier que le la variable ne comporte pas de "..". Le mieux est de vérifier que la variable ne contient que des lettres minuscules de a à z.
Re: créer un répertoire.
Posté : 27 mars 2012, 23:49
par albat
et des chiffres, et des underscores, et des tirets, et des points.
Rien d'autre mais avec une lettre en premier.
Ça sent la regex...
