IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] P'tit soucis avec la fonction EXEC


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2006
    Messages : 35
    Points : 24
    Points
    24
    Par défaut [Système] P'tit soucis avec la fonction EXEC
    Bonjour à ts,

    Je vous explique mon pb:

    J'aimerais permettre aux utilisateurs de mon site de pouvoir modifier leur mot de passe (ce dernier étant stocké dans le fichier .htpasswd), et donc, pour le modifier, je dois passer par une commande DOS.
    Mais bon, ce que j'ai fait ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    exec($HTTP_SERVER_VARS['DOCUMENT_ROOT'] . "/Acces Extranet>htpasswd -b .htpasswd ".$_SESSION['userCode']." ".$_POST['w_newPswd']."", $w_array, $w_ret);
     
    if($w_ret != 0)
       echo "Erreur"; 
    else
       echo "Modif OK";
    Si quelqu'un pouvait m'aider ce serait super
    Merci bcp d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Salut,

    je ne comprends pas pourquoi tu as un ">" avant htpasswd (enfin si, je crois comprendre en fait). Ne serait-ce pas mieux avec un "/" ?
    Si c'est pas ça, peux-tu nous en dire plus sur l'éventuelle erreur que tu obtiens? (message d'erreur par ex)

    Sinon, fais très attention avec l'utilisation de variables venant de l'utilisateur dans les lignes de commandes système.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2006
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    J'ai essayé comme tu me l'as dis Shini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exec($HTTP_SERVER_VARS['DOCUMENT_ROOT'] . "/Acces Extranet/htpasswd -b .htpasswd ".
        $_SESSION['userCode']." ".$_POST['w_newPswd']."", $w_array, $w_ret);
    Mais ça ne met pas à jour le mot de passe de l'utilisateur dans le fichier .htpasswd...
    Voici l'erreur que j'ai dans le fichier log :
    'C:/Program' n'est pas reconnu en tant que commande interne
    ou externe, un programme executable ou un fichier de commandes.
    Et quand je fais un echo de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $HTTP_SERVER_VARS['DOCUMENT_ROOT'] . "/Acces Extranet/htpasswd -b .htpasswd ".$_SESSION['userCode']." ".$_POST['w_newPswd']
    j'obtiens une syntaxe correcte (enfin il me semble) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:/Program Files/Apache Group/Apache2/htdocs/Acces Extranet/htpasswd -b .htpasswd 14 hello
    Donc il ne prend pas en compte les espaces dans les noms des dossiers Il faut que j'ajoute des antislahes ?? (Bah j'vais essayé on verra bien !)

    Sinon, fais très attention avec l'utilisation de variables venant de l'utilisateur dans les lignes de commandes système.
    Tu sous-entends quoi en disant ça ?

    Dans tous les cas, merci pr ton aide

  4. #4
    Membre régulier
    Avatar de titoon
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 86
    Points
    86
    Par défaut
    Je sais pas bien comment sont gérés les noms de fichiers sous Windows avec PHP, mais moi j'essaierais d'encadrer par des guillements le chemin et le nom du fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    exec('"' . $HTTP_SERVER_VARS['DOCUMENT_ROOT'] . '/Acces Extranet/htpasswd" -b .htpasswd '. 
    	$_SESSION['userCode'].' '.$_POST['w_newPswd'], $w_array, $w_ret);

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2006
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Salut Titoon,

    Merci pour ton aide ça fonctionne presque...
    Dans mon rapport d'erreur j'ai ça :
    Automatically using MD5 format.
    C:/Program Files/Apache Group/Apache2/htdocs/Acces Extranet/htpasswd: cannot modify file .htpasswd; use '-c' to create it
    Alors que le fichier existe bien ^^ Et quand je fais la manip à la main, en DOS, ça modifie correctement le mot de passe d'un login donné...
    A quel endroit ai-je fais une erreur ?

  6. #6
    Membre régulier
    Avatar de titoon
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 86
    Points
    86
    Par défaut
    Apache ne peut effectivement pas savoir où ce trouve ton fichier .htpasswd
    Tu aurais le même problème si tu tapais cette ligne de commande à partir de c:\

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    exec('"' . $HTTP_SERVER_VARS['DOCUMENT_ROOT'] . '/Acces Extranet/htpasswd" -b "c:\le\chemin\vers\ton\fichier\.htpasswd" '. 
    	$_SESSION['userCode'].' '.$_POST['w_newPswd'], $w_array, $w_ret);

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2006
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    exec('"' . $HTTP_SERVER_VARS['DOCUMENT_ROOT'] . '/Acces Extranet/htpasswd" -b
    "' . $HTTP_SERVER_VARS['DOCUMENT_ROOT'] . '/Acces Extranet/.htpasswd" '.$_SESSION['userCode'].' '.$_POST['w_newPswd'], $w_array, $w_ret);
    Quand je fais un echo ça me donne ceci:
    "C:/Program Files/Apache Group/Apache2/htdocs/Acces Extranet/htpasswd" -b "C:/Program Files/Apache Group/Apache2/htdocs/Acces Extranet/.htpasswd" 14 hello
    Et le rapport d'erreurs me note ça :
    'C:/Program' n'est pas reconnu en tant que commande interne
    ou externe, un programme ex‚cutable ou un fichier de commandes.
    'C:/Program' n'est pas reconnu en tant que commande interne
    ou externe, un programme ex‚cutable ou un fichier de commandes.
    Je pense que ce sont mes guillemets et quotes qui sont mal placés mais j'arrive pas à les placer de la bonne façon pour que cela fonctionne

  8. #8
    Membre régulier
    Avatar de titoon
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 86
    Points
    86
    Par défaut
    Désolé, j'ai pas la conf pour tester plus...

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2006
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Hello Titoon

    Désolé, j'ai pas la conf pour tester plus...
    Bah c'est pas grave, tu m'as déjà aidé un peu donc MERCI
    Si jamais je trouve la solution à mon problème je la posterai ici.

    Au plaisir,
    Hasta otra

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Août 2006
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    J'espère que quelqu'un va me lire ^^

    J'ai suivi les conseils de Titoon mais j'dois avoir un problème de guillements et de quote dans ma syntaxe ms je vois pas où :'(

    exec('"' . $HTTP_SERVER_VARS['DOCUMENT_ROOT'] . '/Acces Extranet/htpasswd" -b "' . $HTTP_SERVER_VARS['DOCUMENT_ROOT'] . '/Acces Extranet/.htpasswd" '.$_SESSION['userCode'].' '.$_POST['w_newPswd'], $w_array, $w_ret);
    Mon rapport de log me met ça comme erreur:
    'C:/Program' n'est pas reconnu en tant que commande interne
    ou externe, un programme ex‚cutable ou un fichier de commandes.
    Et c'est sur la deuxième définition de chemin qu'il bloque parce qu'avt que je ne la définisse je n'avais pas cette erreur :/
    Alors si quelqu'un pouvait m'aider ce serait super !
    Merci d'avance

Discussions similaires

  1. [Système] Problème avec la fonction "exec()"
    Par jb084 dans le forum Langage
    Réponses: 2
    Dernier message: 07/08/2007, 11h21
  2. [Système] Pb avec la fonction exec
    Par MayOL69bg dans le forum Langage
    Réponses: 9
    Dernier message: 24/05/2007, 19h12
  3. [Système] Probleme de PATH avec la fonction exec
    Par Sylvain71 dans le forum Langage
    Réponses: 11
    Dernier message: 16/07/2006, 17h04
  4. [Système] problème avec la fonction exec
    Par SegmentationFault dans le forum Langage
    Réponses: 1
    Dernier message: 30/06/2006, 17h59
  5. [Système] Problème avec la fonction exec()
    Par ben_harper dans le forum Langage
    Réponses: 13
    Dernier message: 28/06/2006, 11h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo