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 :

Redirection après exécution d'un script


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut Redirection après exécution d'un script
    Bonjour

    Je possède une page avec un script php. L'idée est que ce script appelle un fichier .bat, puis recharge la page avec une variable en url (donc méthode GET).
    La page est donc rechargée, et le script vérifie si la fameuse variable est définie dans l'url (donc afin de savoir s'il peut exécuter l'étape 2).

    L'étape 2 justement consiste à exécuter un autre .bat .
    Voilà du code pour vous aider à comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    if(isset($_GET['etat'])){
        if($_GET['etat']=='etape2'){
            // execution fichier .bat n°2
        }
     
    }else{
    // execution fichier.bat n°1.
     
    // redirection (mais comment !?!)
    }
    ?>
    Le problème c'est que les redirection avec header et tout ceci redirigent la page dès l'ouverture de la page (normal me direz-vous...). Comment je pourrait réussir ce que je voudrai faire ??

    Merci à tous

    EDIT : J'ai déjà essayé header(refresh:$time;url=$url), ainsi que la technique avec <meta ... />. Mais ce que je voudrais c'est éventuellement rafraîchir mais sans renvoyer les données (car sinon mon .bat n°1 se ré-exécute...). Si jamais vous avez une technique pour faire ce que je souhaiterai faire...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    if(isset($_GET['etat'])){
        if($_GET['etat']=='etape2'){
            // execution fichier .bat n°2
        }
    }else{
    // execution fichier.bat n°1.
    header('tapage.php?etat=true');
    }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Merci de ton aide, mais je crois que ça ne fonctionnera pas J'ai déjà testé ça tout à l'heure, et le problème est que header me recharge la page instantannément.. Le soucis est donc que l'exécution de mon .bat n°2 ne se fait pas, et s'il se faisait il le ferait en même temps que le n°1 (j'aimerai qu'ils se déclenchent bien séparément l'un après l'autre)

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Par défaut
    Tu l'execute avec quelle fonction ton script ?
    Parce que normalement si tu utilise la fonction exec() il devrait attendre la fin de l'execution de ton script avant de continuer.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Citation Envoyé par Billy14 Voir le message
    Tu l'execute avec quelle fonction ton script ?
    Parce que normalement si tu utilise la fonction exec() il devrait attendre la fin de l'execution de ton script avant de continuer.
    J'utilise bien exec()... en fait quand je met un header(), le .bat n°1 s'exécute bien, la page se recharge bien avec la variable "etat" dans l'url, mais rien! Le .bat n°2 ne s'exécute pas, et même en mettant un echo dans la boucle ça ne m'affiche rien...

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if(isset($_GET['etat'])){
        if($_GET['etat']=='etape2'){
            echo "c'est bon";
            // execution fichier .bat n°2
        }else{
            echo "variable etape 2 mal défini";
        }
    }else{
    // execution fichier.bat n°1.
    header('mapage.php&amp;etat=etape2');
    }
    ?>
    Merci à vous deux

    edit: j'avais fait une faute dans le code que je viens de vous montré! j'ai édité

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Par défaut
    Et tu l'utilise bien comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec ( string command, array &$output);

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Citation Envoyé par Billy14 Voir le message
    Et tu l'utilise bien comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec ( string command, array &$output);
    Ben je l'utilise comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec('chemin/fichier.bat');
    Ca fonctionne très bien ça pas de soucis. Ce que je ne comprend pas c'est pourquoi ma variable "etape" de l'url n'est pas évaluée.. Et même si je rentre carrément l'adresse de ma page manuellement dans le navigateur (avec la variable "etat=etape2" dans l'url), ma page s'ouvre mais il ne se passe rien!

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Par défaut
    Ah je croyais que ton problème était de ne recharger la page qu'après la fin de ton script n°1.

    Bon ben si le code que tu nous as donné est correct :

    Citation Envoyé par ganguill Voir le message
    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if(isset($_GET['etat'])){
        if($_GET['etat']=='etape2'){
            echo "c'est bon";
            // execution fichier .bat n°2
        }else{
            echo "variable etape 2 mal défini";
        }
    }else{
    // execution fichier.bat n°1.
    header('mapage.php&amp;etat=etape2');
    }
    ?>
    Le problème vient du fait que dans ton header tu n'as pas mis de ? pour préciser la liste de tes variables à envoyer.
    (Mais je pense que tu as du te tromper en nous écrivant ton code. Ce serait trop simple sinon )

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Oh mon dieu... en fait je me trompais de page dans mon header justement
    En fait j'ai une page(appelons-là n°1) qui, une fois le premier .bat exécuté, me redirigeai sur une autre page (n°2)!

    Et le soucis c'est que j'appelais la page n°1 dans mon header, alors que c'était la 2 qu'il falait indiquer

    Bref erreur carrément stupide, mais bon c'est aussi ça les joies du PHP

    Merci beaucoup pour ton aide en tout cas

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Par défaut
    Effectivement, une erreur stupide sur laquelle on peut se prendre la tête pendant des heures. C'est tellement gros qu'on ne la voit pas.
    Je connais cela que très bien ^^
    Bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fermer automatiquement une popup après exécution de son script sous IE
    Par abir_rzg dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/03/2010, 11h56
  2. probleme redirection apres lancement de script
    Par Isalyn dans le forum Langage
    Réponses: 1
    Dernier message: 12/12/2009, 21h34
  3. [RTW] Exécution d'un script après compilation automatique
    Par LordPeterPan2 dans le forum Simulink
    Réponses: 1
    Dernier message: 16/01/2008, 09h20
  4. Arrêt de script après exécution
    Par mathieugamin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/08/2007, 14h56
  5. Réponses: 2
    Dernier message: 21/04/2006, 15h40

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