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 :

Probleme avec header(Location: url)


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Par défaut Probleme avec header(Location: url)
    Bonjour à tous !

    Je suis completement débutant en php donc je pense etre dans la bonne section ^^

    J'aimerais comprendre un peu le mécanisme des headers et plus particulierement sur ce 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
    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
    <?php
     
    /*
    This demo shows how to handle requests from SMS Gateway with full UTF-8 support and send reply SMS back
    */
     
    //setup PHP UTF-8 stuff
    setlocale(LC_CTYPE, 'en_US.UTF-8');
    mb_internal_encoding("UTF-8");
    mb_http_output('UTF-8');
     
     
    //read parameters from HTTP Get URL
    $phone = $_GET["phone"];
    $smscenter = $_GET["smscenter"];
    $text_utf8 = rawurldecode($_GET["text"]);
     
    //if parameters are not present in HTTP url, they can be also present in HTTP header
    $headers = getallheaders();
    if (empty($phone)) {
            $phone = $headers["phone"];
    }
    if (empty($smscenter)) {
            $smscenter = $headers["smscenter"];
    }
    if (empty($text_utf8)) {
            $text_utf8 = rawurldecode($headers["text"]);
    }
     
     
     
    //create reply SMS
    $reply_utf8 = mb_strtoupper($text_utf8); // mare reply message uppercased input message
     
    //write reply to HTTP header
    $reply_header = rawurlencode($reply_utf8);
    header('Content-Type: text/html; charset=utf-8');
    header("text: $reply_header"); //if you don't want reply sms, comment out this this line
     
     
    // Debug outputs:
    //echo "phone = $phone\n";
    //echo "smscenter = $smscenter\n";
    //echo "text_utf8 = $text_utf8\n";
    //echo "reply_utf8 = $reply_utf8\n";
    ?>
    C'est un bout de code d'exemple fournit par ApkSoft à utiliser avec leur application android "SMS Gateway"... En autres, cette app permet de rediriger les sms envoyés sur un tel où est installée l'app vers une page en php...

    Ce code fonctionne très bien, j'ai le sms de retour, mais j'aimerais comprendre le fonctionnement pour ensuite rajouter des fonctionnalités...
    Par exemple, j'aimerais que lorsqu'on recoit un certain SMS avec un mot clé, on ait le retour SMS (pour savoir si l'ordre a bien été recu) et ensuite rediriger la page vers une autre page PHP.

    En utilisant Ca ne fonctionne pas, je n'ai pas de redirection... Ca fonctionne uniquement si je retire la partie de réponse SMS... Mais pourquoi ??

    Merci à tous ceux qui pourront m'éclairer !

  2. #2
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Par défaut
    Le header doit être la première chose de renvoyé.
    Si tu traite autre chose avant ton header ne fonctionnera pas.

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    par contre ne confond pas avec la variable php $headers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $headers = getallheaders();
    qui elle recoit un tableau d'une fonction obscure pour nous qui n'avons pas tout le code ^^
    EDIT: ah bah j'connaissais pas, je pensais que c'était une fonction de la lib sms désolé

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Obscure ?
    getallheaders.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Par défaut
    Merci pour vos réponses

    Le header doit être la première chose de renvoyé.
    Si tu traite autre chose avant ton header ne fonctionnera pas.
    Pourtant, dans le code rien n'est envoyé avant...
    C'est juste que si je remplace la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("text: $reply_header"); //if you don't want reply sms, comment out this this line
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Location: http://monurl/");
    J'ai bien la redirection mais du coup le sms de réponse n'est pas envoyé... Si je ne retire pas cette ligne et que j'ajoute le header(location...) à la suite, le sms de réponse est envoyé mais la redirection n'est pas faite...

    Mais que fait exactement cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("text: $reply_header");
    ?? Une idée ?

  6. #6
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Par défaut
    sinon une redirection en JS?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<script>document.location.href=\"index.php?page=accueil\"</script>";

Discussions similaires

  1. probleme avec le locate (les dates)
    Par tchimou dans le forum Bases de données
    Réponses: 7
    Dernier message: 02/05/2007, 10h35
  2. probleme avec le locate
    Par tchimou dans le forum Bases de données
    Réponses: 10
    Dernier message: 25/04/2007, 14h45
  3. probleme avec header
    Par camus :) dans le forum Langage
    Réponses: 2
    Dernier message: 14/10/2006, 16h27
  4. [Cookies] Setcookie et header("Location: url")
    Par Cyoul dans le forum Langage
    Réponses: 6
    Dernier message: 10/10/2006, 05h06
  5. header('Location:$url') VS session_start()
    Par Paniez dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 22h30

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