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

Bibliothèques et frameworks PHP Discussion :

[Smarty] Double exécution script PHP si trop de "echo"


Sujet :

Bibliothèques et frameworks PHP

  1. #21
    Futur Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Par défaut sample code
    eu ok ... ben la c'est le code d'une administration de bdd

    l'index.php qui appelle tous les controlleurs et renvoie un echo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <?php
     
      session_start( ) ;
     
      ini_set( 'memory_limit', '64M' ) ; 
     
      define( 'BASEDIR', '/var/www/c...........e.fr' ) ;
      define( 'OFFICE', 'admin' ) ;
     
      define( 'DEBUG' , false ) ; # tout à false en production
      define( 'DEVMODE', true ) ;
      define( 'SWITCHSECURITY', false ) ;
     
      include BASEDIR.'/config/db.inc.php' ; # database
      include BASEDIR.'/config/init.inc.php' ; # class et models
      include BASEDIR.'/config/init.administration.php' ; # constantes et controlleurs
     
      # déclaration des variables globales
      global $route, $titre ;
      # init sécurité par page
      Session::securite( 'admin' ) ;
     
      $route = new Route( ) ; 
      $menu = new Menu( 'adminMenu' ) ;
      $menu->setTpl( 'adminMenu.tpl' ) ;
     
      $tpl = new template( TPL_DIR ) ;
      $tpl->set_filenames( array( 'index' => 'structure.tpl' ) ) ; 
     
      $structureVars = array( ) ;
      $structureVars['TITRE'] = SITENAME.' '.$titre ;
      $structureVars['SCRIPTS'] = Scripts::html( ) ;
      $structureVars['CSS'] = Css::html( ) ;
     
      # pour le menu de l'administration
      $menu->setItemSelected( $route->getParam( 0 ) ) ;
      $structureVars['MENU'] = $menu->html( false, 'adminMenu' ) ;
     
      $structureVars['CONTENT'] = $route->getContent( ) ;
      $tpl->assign_vars( $structureVars ) ;
     
      echo $tpl->parse( 'index' ) ;
     
    ?>
    ce qui peut générer un formulaire qui pose problème tel que


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
      <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
        <!-- balises métas -->
        <title>... / Administration Editer le Page 3</title>
     
        <!-- CSS -->
        <link type="text/css" href="http://admin.c...........e.com/css/admin.css" rel="stylesheet"/>
        <link type="text/css" href="http://admin.c...........e.com/css/admin_page.css" rel="stylesheet"/>
    <link type="text/css" href="http://admin.c...........e.com/css/adminMenu.css" rel="stylesheet"/>
     
     
     
        <!-- SCRIPTS -->
        <script type="text/javascript" src="http://admin.c...........e.com/js/jquery.js"></script>
        <!-- je sais pas me servir de ça pour l'instant
        <script type="text/javascript" src="http://admin.c...........e.com/js/history.jquery.js"></script>
        -->
        <script type="text/javascript" src="http://admin.c...........e.com/js/j_gen.js"></script>
        <script type="text/javascript" src="http://admin.c...........e.com/js/j_my_over_menu.js"></script>
        <script type="text/javascript" src="http://admin.c...........e.com/js/j_my_click_menu.js"></script>
        <!-- pas besoin pour l'instant
        <script type="text/javascript" src="http://admin.c...........e.com/js/j_my_tab_system.js"></script>
        -->
        <script type="text/javascript" src="http://admin.c...........e.com/js/j_arbored_tab.js"></script>
        <script type="text/javascript" src="http://admin.c...........e.com/js/j_selectable.js"></script>
        <script type="text/javascript" src="http://admin.c...........e.com/js/j_highlight_checkboxs.js"></script>
        <script type="text/javascript" src="http://admin.c...........e.com/js/j_highlight_radios.js"></script>
        <script type="text/javascript" src="http://admin.c...........e.com/js/cle_de_securite.js"></script>
     
        <script type="text/javascript" src="http://admin.c...........e.com/js/tiny_mce/jquery.tinymce.js"></script>
    <script type="text/javascript">
    //<!--
    var Cle ; $( function( ){ Cle = new cleDeSecurite( "46d2b15525c8d5d65215aee719ce7231623d4de1" ) ; Cle.addCle( ) ; } ) ;
    //-->
    </script>
    <script type="text/javascript">
    //<!--
    var ABSOLUTE = "http://admin.c...........e.com" ; var HERE = "http://admin.c...........e.com/pages/3/edit" ; 
    //-->
    </script>
    <script type="text/javascript">
    //<!--
     
        $( function( ){
          $("textarea.tinyPage").tinymce({
            script_url : "http://admin.c...........e.com/js/tiny_mce/tiny_mce.js",
            etc....... je raccourcis un peu pour le post
          });
        } ) ;
     
     
     
    //-->
    </script>
    <script type="text/javascript">
    //<!--
    $( function( ){ myOverMenu( "adminMenu" ) ; } ) ;
    //-->
    </script>
     
     
     
        <script type="text/javascript" src="http://admin.c...........e.com/js/control.js"></script>
     
      </head>
     
      <body>
      <!-- bodyadminbodyadminbodyadminbodyadminbodyadminbodyadmin -->
        <div id="tank">
     
    <!-- je vous ai skippé le menu à rallonge pour le post -->
     
     
     
     
          <div id="content">
     
     
    <!-- file:administration/vue/pages/edit.tpl -->
    <div id="pages">
      <h1>
        Edition du page id:3 - Contact
      </h1>
     
     
    <!-- file:administration/vue/pages/form.tpl -->
    <form method="post" action="http://admin.c...........e.com/pages/3/update"><!-- enctype="multipart/form-data"> -->
      <input type="hidden" name="page[id]" value="3" />
      <p>
        Les champs marqués d'une astérisque ( * ) sont obligatoires.
      </p>
     
     
     
      <fieldset>
        <legend>
          Informations Page
        </legend>
     
        <p>
          <label>Titre : </label>
          Contact
          <input type="text" name="page[titre]" value="Contact" />
        </p>
     
     
        <p>
          <label>
            Menu :
          </label>
          <select name="page[menu]" size="1">
            <option value="none">Aucun</option>
            <option value="footermenu" selected="selected">footerMenu</option>
          </select>
        </p>
     
        <p>
          <label>Content : *</label>
          <span class="descShow">
            <textarea name="page[content]" class="tinyPage">&lt;p&gt;Constituendi autem sunt qui sint in amicitia fines et quasi termini diligendi. De quibus tres video sententias ferri, quarum nullam probo, unam, ut eodem modo erga amicum adfecti simus, quo erga nosmet ipsos, alteram, ut nostra in amicos benevolentia illorum erga nos benevolentiae pariter aequaliterque respondeat, tertiam, ut, quanti quisque se ipse facit, tanti fiat ab amicis.&lt;/p&gt;
     
    &lt;p&gt;Oportunum est, ut arbitror, explanare nunc causam, quae ad exitium praecipitem Aginatium inpulit iam inde a priscis maioribus nobilem, ut locuta est pertinacior fama. nec enim super hoc ulla documentorum rata est fides.&lt;/p&gt;</textarea>
          </span>
        </p>
     
     
      </fieldset>
     
      <p class="p_submit_form">
        <input type="submit" value="enregistrer" />
        |
        <a href="http://admin.c...........e.com/pages" title="annuler">
          annuler
        </a>
      </p>
     
    </form>
     
    <!-- /file:administration/vue/pages/form.tpl -->
     
     
     
     
    </div>
    <!-- /file:administration/vue/pages/edit.tpl -->
     
     
     
     
          </div><!-- /content -->
        </div><!-- tank -->
      </body>
    </html>

    mais la double requete est indifférentes des actions appelées, elle part de tous les liens et formulaires non ajax, je la vois apparaitre dans le debuggeur de chrome avant que celui-ci affiche la deuxieme requete,(dans Network) j'ai cherché s'il y avait moyen et comment de bloquer le nav pour accèder au données du debuggeur sur cette requete mais j'ai encore rien trouvé.

  2. #22
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    avant d'aller plus loin, as-tu regardé côté serveur si la double requête était bien présente ?

  3. #23
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    peux-tu aussi préciser où se trouve le double traitement dans ta page ? A partir de quelle action il commence (envoi du formulaire, chargement de la page ...?).

    Si tu envoies le formulaire via ajax, as-tu désactivé le traitement navigateur sur le bouton submit ? http://api.jquery.com/event.preventDefault/

  4. #24
    Futur Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Par défaut oui ca arrive au serveur
    oui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [17-May-2012 09:40:16] PHP Notice:  Use of undefined constant BASEDIR - assumed 'BASEDIR' in /var/www/c...............e.fr/admin/index.php on line 5
    [17-May-2012 09:40:16] PHP Notice:  Use of undefined constant BASEDIR - assumed 'BASEDIR' in /var/www/c...............e.fr/admin/index.php on line 5
    puis en fait il n'y avait qu'une requete qui arrivait au serveur ça ne générerait pas mon bug :-)

  5. #25
    Futur Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Par défaut sans ajax ni aucun jQuery le bug persiste,
    sans ajax ni aucun jQuery le bug persiste, j'ai retirer tout les scripts afin de tester avec du html uniquement mais idem.... je pense pas chercher du coté du javascript surtout que le javascript aussi est le meme en local et fonctionne très bien... pas de probleme avec les preventDefault donc

    et justement si la requete est appelée en ajax j'ai pas de double requetes....

    le double traitement c'est que la page est appelée 2 fois : la première fois du début à .... je sais pas où mais le traitement ne va pas jusqu'à la fin .... comment déterminer où il s'arrete ? ah je vais essayer de remplir un fichier de log au fur et à mesure de l'execution du script ..

  6. #26
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    si ton index.php est exécuté deux fois tu dois pouvoir voir deux affichages simultanés non ? en mettant par ex un "echo 'ok';" dans ton index.php ?

    sinon as-tu essayé de placer des exit(); à différents endroits de ton code ? pour terminer le traitement et peut-être identifier l'endroit d'où le double appel s'effectue ?

  7. #27
    Futur Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 5
    Par défaut rien en echo de la première requete
    les echos n'affichent rien dans le nav enfins seuls ceux de la seconde requete apparaissent....
    un fichier de log me montre que les le script appelé deux fois s'éxécutent deux fois du début à la fin mais byzaremment la première requete n'écrit rien en base de données....

    pfffff ... j'ai l'impression d'être maudit .... c'est quoi ce délire ?

    .....

    ...... yyyyyyyyaaaaaaaaaaaaaaaaaaaaa !!!!!!!!!!!! j'ai trouvé !!!!

    c'était bien un comportement navigateur : certains d'entre eux semble ignorer l'absence de balise pour favicon et se dise "attends il est pas déclaré je vais le chercher tout seul " ... enfoiré .... en plus il ne te le dit pas, il affiche rien .... alors qu'il génére une erreur que mon code est censé afficher proprement ....
    j'ai fini par mettre dans un fichier de log tout le contenu de la page générée a chaque appel pour m'en rendre compte ....

    Big merci à toi speedev pour ton aide et ton soutien, tu m'as bien aiguillé et rien que la sensation de pas être tout seul, ça force la motivation ;-)

  8. #28
    Membre éprouvé Avatar de speedev
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 051
    Par défaut
    Yeah good job ! de rien...
    Bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Exécuter script php en précisant paramètres dans la console
    Par Pouchou_for_ever dans le forum Langage
    Réponses: 5
    Dernier message: 29/10/2010, 18h12
  2. Exécuter script php avec crontab
    Par Sh4dow49 dans le forum Administration système
    Réponses: 1
    Dernier message: 29/07/2008, 15h49
  3. [SHELL] exécuter script php distant
    Par tuxout dans le forum Linux
    Réponses: 1
    Dernier message: 17/01/2008, 17h12
  4. Exécution Script PHP
    Par xace91 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 13
    Dernier message: 19/12/2006, 00h31
  5. Réponses: 7
    Dernier message: 20/10/2005, 20h51

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