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 :

Plusieurs exécutions à la fois ?


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Plusieurs exécutions à la fois ?
    Bonjour à tous,

    Je suis confronté à un problème qui ne m'avait jamais choqué jusqu'à maintenant mais qui est terriblement gênant pour ce que j'ai besoin de faire.

    La structure de mon site est simple, une page index ou dessus je dis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $ok = array('accueil' => 'accueil.php',
    		'contact' => 'contact.php',
    		'recherche' => 'recherche.php');
     
      if ( (isset($_GET['page'])) && (isset($ok[$_GET['page']])) ) {
        include($ok[$_GET['page']]);
      } else {
        include('accueil.php');
      }
     
    ?>
    Donc vous comprenez que j'inclue la page qui correspond à ce qui passe par l'url, et si il n'y a rien, l'accueil.

    Hors si je place un script sur la page accueil.php et que je vais directement sur monsite.com?page=contact : Le script sur la page d'accueil sera exécute, et deux fois en plus !

    Pour m'en assurer j'ai mis une ligne qui m'envoi un mail de test lors de son exécution sur la page "accueil.php" et le verdict est sans appel : Peu importe la page appelée, le mail arrive dans ma boite !


    Savez-vous ce que j'ai raté dans l'histoire ?

    Merci par avance

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    T'as dû rater le visiteur qui a visité l'autre page au même moment que toi.
    Une condition if ne pose aucun problème, c'est du solide.
    C'est soit l'un soit l'autre mais les deux ne s'exécutent pas.

    Tu veux t'en convaincre ? Remplaces ta ligne d'envoi d'email par un echo bien flashi.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par transgohan Voir le message
    T'as dû rater le visiteur qui a visité l'autre page au même moment que toi.
    Une condition if ne pose aucun problème, c'est du solide.
    C'est soit l'un soit l'autre mais les deux ne s'exécutent pas.

    Tu veux t'en convaincre ? Remplaces ta ligne d'envoi d'email par un echo bien flashi.
    Le site est protégé par un htaccess/htpasswd donc impossible :/ Le truc c'est que si j'execute n'importe quelle page du serveur, même hors de cet "if", le problème survient et le mail me parvient.

    A ne rien y comprendre :/

  4. #4
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Dans ce cas c'est que ton bout de code d'envoi de mail est mal placé ou bien que la page accueil.php est inclue ailleurs une seconde fois.
    Car ce n'est pas le script que tu nous montres qui occasionne ce problème ça c'est certain.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Dans ce cas c'est que ton bout de code d'envoi de mail est mal placé ou bien que la page accueil.php est inclue ailleurs une seconde fois.
    Car ce n'est pas le script que tu nous montres qui occasionne ce problème ça c'est certain.
    Alors je ne sais pas trop quoi montré alors vu que je n'ai aucune piste^^
    Le script accueil est inclus nul part ailleurs et le fait qu'il s'envoi deux fois me semble louche ?
    Si je vais sur site.com?page=accueil pour moi le script présent sur cette fameuse page d'accueil ne devrait être exécuté qu'une seule fois :/

    C'est un mutualisé chez Hiwit, j'utilise l'url rewriting, pas de rapport j'imagine ?

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Cela parait assez tordu c'est vrai.
    Le truc c'est que si j'execute n'importe quelle page du serveur, même hors de cet "if", le problème survient et le mail me parvient.
    Attention, si le code se trouve en-dehors du "if", c'est qu'il est dans ce fichier index.php, et comme tout passe passe par celui-ci, c'est totalement normal.
    Le index.php est un point d'entrée.
    Il faut que le code soit dans le fichier accueil.php et pas ailleurs (code d’envoi de mail).

    J'ai déjà eu un truc peut être pas totalement identique, faut voir, mais pas loin.
    C'était dû à des URLs mal faites, et cela provoquait des doubles appels au index.php

    As tu de la Réécriture d'URL ou quelque chose de particulier dans le .htaccess (à part l'authentification) ?

    Essai avec du code le plus basique possible, c'est à dire en supprimant (au minimum) tous les Css, JS, et autre, aussi bien dans le <head> (link, script, etc ...) que dans index.php que accueil.php, et les autres s'il y en a (footer, etc ...).
    En somme, ne conserver que le HTML minimum et des affichages juste pour voir.


    Aussi, théoriquement tu devrais avoir ton site chez toi en local afin de le développer avant de le mettre en ligne.
    Si c'est le cas, as tu le même problème ?
    Si c'est le cas toujours (en local), au lieu d'envoyer un mail, tu pourrait créer un fichier de test et faire une écriture dedans pour connaitre le nombre d'appel qu'il a, avec file_put_contents() par exemple.

    As tu Firebug d'installé (dans FF) où un outil dans le même genre ?
    Si c'est le cas, cela peu fournir une piste en regardant le nombre de requêtes HTTP effectuées lors de l'affichage d'une page.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    il faut utiliser array_key_exists en lieu et place de isset($ok[$_GET['page']]), de plus il serait judicieux de vérifier que le fichier existe, et d'inclure toutes ses fonctionnalités dans un système de routage MVC


    cela dit si tu utilise dans ton htaccess

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule !\.(js|ico|gif|jpg|png|pdf|css|mp3|swf|htm|html)$ index.php  [QSA,L]
    ce qui est très bien, c'est normal que toutes les pages execute index.php
    Conception / Dev

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci d'avoir pris le temps de me lire et de me répondre, c'est sympa de votre part

    Pour le fichier htaccess, il y a en effet une réécriture d'url, je ne pense pas qu'elle pose de soucis à ce niveau puisque même si j'accède à la page via l'ancienne url le problème survient, je colle tout de même le contenu de cleui-ci dans le doute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.site\.com [NC]
    RewriteRule (.*) http://www.site.com/$1 [QSA,R=301,L]
     
    RewriteRule ^video-([-0-9a-zA-Z]+)-([0-9]+)\.html$  /index.php?page=video&titre=$1&id=$2 [L]
    RewriteRule ^videos-liste-([0-9]+)\.html$  /index.php?page=videos&num_page=$1  [L]
    RewriteRule ^([0-9a-zA-Z]+)\.html$  /index.php?page=$1  [L]
     
    ErrorDocument 404 /404.php
    Le code est exécuté deux fois seulement s'il est sur l'index même, ou bien sur la page accueil.php qui est inclue sur l'index en home. Si je place le même code sur la page recherche.php par exemple, là tout fonctionne correctement.


    Le truc c'est que parfois j'accède à site.com/admin et même dans ce dossier qui est totalement isolé du reste, la simple ouverture d'une page exécute le script qui est à la racine du site dans la page accueil.php


    Pour que vous puissiez comprendre le pourquoi, je voudrais intégré un script qui compte le nombre d'affichages de mes publicités : Il y en a une dans le header sur l'index.php qui est commune à toutes les pages puis chaque page possède ensuite sa propre pub distincte. Toutes les pubs de index et accueil font +2 sur une simple execution de page alors que les autres font bien +1 !

    Merci encore pour votre aide.

Discussions similaires

  1. makefile ... comment faire plusieurs exécutables !
    Par fregate dans le forum Systèmes de compilation
    Réponses: 9
    Dernier message: 18/12/2005, 16h14
  2. Script qui s'exécute 2 fois!
    Par franculo_caoulene dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/12/2005, 09h48
  3. Réponses: 9
    Dernier message: 29/09/2005, 09h38
  4. creation de plusieur table à la fois .
    Par donny dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 19/05/2005, 11h31
  5. [Composant] Drag & Drop de plusieurs valeurs à la fois
    Par slowpoke dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/12/2003, 10h26

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