CHMOD avec le mode passé en POST ...

CHMOD avec le mode passé en POST ... - PHP - Programmation

Marsh Posté le 02-04-2004 à 17:34:20    

J'essaie de me faire un petit util php pour faire des chmod ponctuels, et j'ai remarqué que :
 


$mode = $HTTP_POST_VARS["mode"];
chmod('fichier', $mode);


=> ne fonctionne pas
 


$mode = '0666';
chmod('fichier', $mode);


=> ne fonctionne pas
 


$mode = 0666;
chmod('fichier', $mode);


=> fonctionne
 
Autrement dit, la variable récupérée du formulaire est une chaîne et ça ne lui plaît pas. J'ai donc essayé ça, mais ça ne marche toujours pas :
 


$mode = $HTTP_POST_VARS["mode"];
chmod('fichier', (int)$mode);


 
Comment faire :??:


---------------
Créez des alertes automatiques sur les annonces du CDA qui vous intéressent: http://www.cdalertes.fr - Twitter: @CDAlertes | Revue de ma Glycine Airman Base 22
Reply

Marsh Posté le 02-04-2004 à 17:34:20   

Reply

Marsh Posté le 02-04-2004 à 17:47:34    

Je pense que ceci doit marcher :
 

Code :
  1. eval("chmod('fichier',".$mode." );" );

Reply

Marsh Posté le 02-04-2004 à 17:48:07    

[:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-04-2004 à 17:53:20    

Ou alors pour avoir le $mode qui va bien tu fais ça :
 

Code :
  1. eval("\$mode=$mode;" );


 
En fait le truc c'est que le second paramètres de la fonction chmod doit être de type entier mais octal.
Or ce que tu reçoit dans le $_POST est une chaîne, qui convertie en entier décimal et non octal.
 
Je sais pas si je suis clair :D


Message édité par ratibus le 02-04-2004 à 17:53:32
Reply

Marsh Posté le 02-04-2004 à 17:54:09    

d'apres la doc, chmod prend un entier. quoi qu'il en soit, c'est pas avec un eval pourri qu'on fait des conversions, y'a des fonctions expres pour ça.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 02-04-2004 à 18:01:41    

the real moins moins a écrit :

d'apres la doc, chmod prend un entier. quoi qu'il en soit, c'est pas avec un eval pourri qu'on fait des conversions, y'a des fonctions expres pour ça.
 


Si tu lis la doc :

Il est à noter que le mode mode est considéré comme un nombre en notation octale.


 
Tu dis que mes eval sont "pourri", j'attends ta proposition :D

Reply

Marsh Posté le 02-04-2004 à 18:03:08    

Le problème vient du fait que PHP quand il transtype une chaine en entier il le fait en base 10 et pas en base 8 [:spamafote]

Reply

Marsh Posté le 02-04-2004 à 18:03:16    

ratibus a écrit :

Ou alors pour avoir le $mode qui va bien tu fais ça :
 

Code :
  1. eval("\$mode=$mode;" );




Cool ça marche :sol:  
 

ratibus a aussi écrit un peu après :


En fait le truc c'est que le second paramètres de la fonction chmod doit être de type entier mais octal.
Or ce que tu reçoit dans le $_POST est une chaîne, qui convertie en entier décimal et non octal.
 
Je sais pas si je suis clair :D


Si si.


---------------
Créez des alertes automatiques sur les annonces du CDA qui vous intéressent: http://www.cdalertes.fr - Twitter: @CDAlertes | Revue de ma Glycine Airman Base 22
Reply

Marsh Posté le 02-04-2004 à 18:08:28    

Sinon ces 2 solutions marchent aussi (sans utiliser de eval pour faire plaisir à the real):
 

Code :
  1. $mode = octdec($mode);


 
ou
 

Code :
  1. $mode = intval($mode,8);


Ma méthode avec le eval ne fonctionnant pas si il n'y a pas de 0 au début de la chaine donc je te conseille la fonction octdec() :D


Message édité par ratibus le 02-04-2004 à 18:11:15
Reply

Marsh Posté le 02-04-2004 à 18:13:11    

:jap:


---------------
Créez des alertes automatiques sur les annonces du CDA qui vous intéressent: http://www.cdalertes.fr - Twitter: @CDAlertes | Revue de ma Glycine Airman Base 22
Reply

Marsh Posté le 02-04-2004 à 18:13:11   

Reply

Marsh Posté le 02-04-2004 à 18:17:54    

En fait c'était dans le manuel php de chmod, fallait bien lire jusqu'en bas :D


---------------
Créez des alertes automatiques sur les annonces du CDA qui vous intéressent: http://www.cdalertes.fr - Twitter: @CDAlertes | Revue de ma Glycine Airman Base 22
Reply

Marsh Posté le 02-04-2004 à 18:25:16    

ratibus a écrit :

Sinon ces 2 solutions marchent aussi (sans utiliser de eval pour faire plaisir à the real):
 

Code :
  1. $mode = octdec($mode);


 
ou
 

Code :
  1. $mode = intval($mode,8);


Ma méthode avec le eval ne fonctionnant pas si il n'y a pas de 0 au début de la chaine donc je te conseille la fonction octdec() :D

ben voilà, c'est vachement plus propre ça :o
(j'étais en train de chercher :whistle:)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed