créer un répertoire.

Mammouth du PHP | 702 Messages

26 mars 2012, 13:50

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.

ViPHP
xTG
ViPHP | 7331 Messages

26 mars 2012, 14:19

J'espère sincèrement que tu testes cette variable avant de l'utiliser. :roll:
mkdir("../" . $_POST['code_client'], 0700);
Modifié en dernier par xTG le 26 mars 2012, 14:25, modifié 1 fois.

Mammouth du PHP | 702 Messages

26 mars 2012, 14:20

je la récupère en POSt et cela fait partie d'une fonction avec un isset :) merci pour l'aide

ViPHP
xTG
ViPHP | 7331 Messages

26 mars 2012, 14:26

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. ;)

Mammouth du PHP | 702 Messages

26 mars 2012, 14:33

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.

ViPHP
xTG
ViPHP | 7331 Messages

26 mars 2012, 15:50

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 !).

Mammouth du PHP | 702 Messages

26 mars 2012, 16:48

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.

ViPHP
xTG
ViPHP | 7331 Messages

26 mars 2012, 20:19

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.

Mammouth du PHP | 2278 Messages

26 mars 2012, 21:32

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...)
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 702 Messages

27 mars 2012, 14:09

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.

Mammouth du PHP | 2278 Messages

27 mars 2012, 15:06

home directory de qui?
OVH c'est sous un Unix like?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 702 Messages

27 mars 2012, 15:48

oui du server que je prendrais. Mais la je suis sous wamp c'est le dossier www/ monsite

Mammouth du PHP | 2278 Messages

27 mars 2012, 22:02

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...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
ViPHP | 2577 Messages

27 mars 2012, 22:29

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.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

27 mars 2012, 23:49

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... ;)