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 :

header('Location') en fonction d'une date


Sujet :

Langage PHP

  1. #1
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut header('Location') en fonction d'une date
    Bonjour,
    J'ai un petit problème avec un bout de code de ma page PHP, ce bout de code sert à calculer le temps entre deux dates et s'il dépasse x minutes alors l'utilisateur doit être redirigé vers une autre page.
    Sur le serveur de production cela ne fonctionne pas mais sur le serveur de développement là ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $today = date('H:i');
    $url = "ping.php?group=".$group."&typ=one";
    $delai = 3;
     
    $t = round(abs(strtotime($today)-strtotime($data['date'])) / 60);
    if ($t >= ping_auto) header("Location: $url");
    #if ($t >= ping_auto) header("Refresh: $delai;url=$url");
    $data['date'] vient d'une base de donnée, la ligne "$t", le calcul de minute entre les deux dates et le "if ($t >= ping_auto)" fonctionnent aussi.
    ping_auto est une constance créée dans une autre page, mais si je la remplace par "if ($t >= 3)" cela ne change rien. Et oui, j'obtiens bien la valeur de "ping_auto"

    Le "header('Location')", j'ai l'habitude de l'utiliser mais souvent en dernière ligne d'une page web mais ici il se trouve au milieu d'un code php, j'ai essayé de remplacer le "header" par une variable que j'incrémente et de tester tout à la fin de ma page PHP la valeur de cette variable si elle est plus grande que 0 alors j'exécute mon "header", mais ça ne fonctionne pas non plus.

    Je pense qu'il s'agit d'un problème de configuration sur le serveur PHP.
    En vous remerciant d'avance de l'aide que vous pourrez m'apporter.
    Pensez à mettre comme si c'est le cas !

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    A tout hasard, essaies de mettre un exit derrière le header
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($t >= ping_auto) {header("Location: $url");exit();}

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Qu'est ce que ping_auto ? Une constante ? Car elle n'a pas de "$"
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  4. #4
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    "ping_auto" est une constance et si je mets "exit();" est-ce que le reste du côté sera exécuté ou alors je mets mon "header" ainsi que "exit();" à la fin de ma page PHP
    Pensez à mettre comme si c'est le cas !

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Par conventions, les constantes devraient toujours être écrites en majuscules (c'est pas moi qui le dit, c'est la doc).

    Ton script situé sur l'autre page sera exécuté.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  6. #6
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    Oups, je voulais dire est-ce que le reste de mon code qui est en-dessous de ma ligne "header" sera exécuté si je mets "exit();" juste après le "header" ?
    Pensez à mettre comme si c'est le cas !

  7. #7
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Non, le header est et doit être la dernière ligne de code de ton fichier (le exit est justement là pour s'en assurer) car une nouvelle requête http est envoyée, mettant fin à celle-ci.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  8. #8
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    Donc je devrai mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Du code PHP
    $nbre = 0;
    if ($t > ping_auto) $nbre++;
     
    //Du code PHP
     
    //A la fin du fichier
    if ($nbre > 0) {
           header('Location: $url');
           exit();
    }
    Pensez à mettre comme si c'est le cas !

  9. #9
    Expert confirmé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Points : 4 805
    Points
    4 805
    Billets dans le blog
    6
    Par défaut
    oui c'est tout à fait cela
    personnellement je mettrait un die('text') histoire d'envoyer du texte en cas d’échec redirection mais les 2 solutions se valent
    Rien, je n'ai plus rien de pertinent à ajouter

  10. #10
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    J'ai mis ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            if ($nbre > 0) {
                    header("Location: $url");
                    exit();
            }
    ?>
    </div>
    Dans le code HTML généré par le navigateur il n'affiche pas le </div> et ne fait toujours pas la redirection, je suppose qu'il ne mets pas le </div> à cause du exit();
    Pensez à mettre comme si c'est le cas !

  11. #11
    Expert confirmé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Points : 4 805
    Points
    4 805
    Billets dans le blog
    6
    Par défaut
    ho attend tu envois déjà du texte sur ta page avant d'envoyer du header ? si oui alors ça ne marcheras pas essaye plutôt ce code en remplaçant le <ton_url>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    die('<meta http-equiv="refresh" content="0; URL=<ton_url>">');
    Rien, je n'ai plus rien de pertinent à ajouter

  12. #12
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    C'est bon, ça à l'air de fonctionner, j'ai mis ceci (comme tu m'a dis, TiranusKBX):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    die("<meta http-equiv='refresh' content='3; URL=".$url."'>");
    Je vais surveiller pendant quelques jours pour être sûr et vous dirai quoi ;-)
    Encore merci !
    Pensez à mettre comme si c'est le cas !

  13. #13
    Expert confirmé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Points : 4 805
    Points
    4 805
    Billets dans le blog
    6
    Par défaut
    oui c'est une ruse pas très propre mais qui marche quand le code envois déjà du texte au navigateur
    à part les navigateurs en mode texte (genre links) tous le prennent en compte
    Rien, je n'ai plus rien de pertinent à ajouter

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

Discussions similaires

  1. url en fonction d'une date
    Par silwebdesign dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 18/09/2006, 19h41
  2. Déterminer le jour en fonction d'une date
    Par Flagny dans le forum Access
    Réponses: 3
    Dernier message: 19/07/2006, 10h36
  3. afficher le jour en fonction d'une date
    Par oceane751 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 05/03/2006, 22h20
  4. [Dates] message en fonction d'une date
    Par chouchouboy dans le forum Langage
    Réponses: 14
    Dernier message: 24/02/2006, 17h31
  5. Réponses: 2
    Dernier message: 03/10/2005, 12h00

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