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 :

Incompatibilité entre 2 header content


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut Incompatibilité entre 2 header content
    Bonsoir, a tous,

    est il possible d'appliquer des header content différents dans le meme code PHP s'il vous plait, car je me demande si mon probleme d'execution quand j'appelle cette page via un script JS/AJAX ne vient pas de la, alors que si je mets l'url qui appelle ce script dans la barre d'adresse cela fonctionne ?

    Voici mon code JS
    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
     
    function relance_sms(id_class,sms) {
      var elts = document.querySelectorAll(id_class);
      var i = 0;
      var array_val = []; // array
      elts.forEach(function(id) {
        if (id.checked) {
          array_val[i] = id.value; // on récupère les value des cases cochées
          i++;
        }
      });
      var liste_val = encodeURIComponent((array_val.length > 0) ? JSON.stringify(array_val) : "");
       // liste au format JSON
      var xhr_object = new XMLHttpRequest();
      xhr_object.open("GET", "relance_sms.php?sms="+sms+"&liste="+liste_val, true);
      xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {console.log ("relance_sms.php?sms="+sms+"&liste="+liste_val);}} 
      var data = "sms="+sms+"&liste="+liste_val;
      xhr_object.send(data);
    }
    Voici mon code PHP :
    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
     
    <?php
    session_start();
    require ('conx.php');
    require ('session.php');
     
     
    function enleveaccents_2($str, $charset='utf-8')
    	{
    	$url = $str;
        $url = preg_replace('#Ç#', 'C', $url);
        $url = preg_replace('#ç#', 'c', $url);
        $url = preg_replace('#è|é|ê|ë#', 'e', $url);
        $url = preg_replace('#È|É|Ê|Ë#', 'E', $url);
        $url = preg_replace('#à|á|â|ã|ä|å#', 'a', $url);
        $url = preg_replace('#@|À|Á|Â|Ã|Ä|Å#', 'A', $url);
        $url = preg_replace('#ì|í|î|ï#', 'i', $url);
        $url = preg_replace('#Ì|Í|Î|Ï#', 'I', $url);
        $url = preg_replace('#ð|ò|ó|ô|õ|ö#', 'o', $url);
        $url = preg_replace('#Ò|Ó|Ô|Õ|Ö#', 'O', $url);
        $url = preg_replace('#ù|ú|û|ü#', 'u', $url);
        $url = preg_replace('#Ù|Ú|Û|Ü#', 'U', $url);
        $url = preg_replace('#ý|ÿ#', 'y', $url);
        $url = preg_replace('#Ý#', 'Y', $url);
    	return ($url);
    	}
     
     
    header('Content-Type: application/json');
     
    $email="";
    $mestest="";
    $txt_ok="1";
     
    $sms = @$_GET["sms"];  
    $liste=json_decode(@$_GET['liste']);
     
    foreach ($liste as $key => $value) 
    {
    	$client=$liste[$key];
     
    // 	$civ_e="1";
    //      $nom_e="Dupont";
    //      $prenom_e="Durand";
    //      $port_e="0601020304";
    //      $urlindex="www.toto.com"; $ent_site="www.toto.com";
    //      $smspass="tata";
    //      $MB_idUT="1";
     
    	if ($civ_e=="1"){$civ="Monsieur";}
    	if ($civ_e=="0"){$civ="Madame, Mademoiselle";}
    	if ($txt_ok>0)
    	{ 
                    $url = enleveaccents_2('http://'.$urlindex.'/'.$rep_extranet.'/sms/add/'.$smspass.'/'.$port_e.'/'.$MB_idUT.'/'.$client.'/'.$sms.' M. '.$MB_prenom.' '.$MB_nom.' ('.$MB_port.') - '.$ent_site);
     
    		$mestest .="url : $url";
     
    		header('Content-Type: text/html; charset=UTF-8');
    		echo '<iframe src="'.$url.'" width="1" height="1" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe>'; 
    	}
    }
     
    // ceci est un mail de test qui me permet de savoir si ce script est appelé uniquement.
     
    	  $boundary = '-----=' . md5( uniqid ( rand() ) );
    	  $file_id  = md5( uniqid ( rand() ) ) . $_SERVER['SERVER_NAME'];
    	  $content_encode = chunk_split(base64_encode($content));
    	  $headers  = "From: \"toto\"<direction@iobnet.com>\n";
    	  $headers .= "Return-Path: \"toto\"<$email>\n";
    	  $headers .= "MIME-Version: 1.0\n";
    	  $headers .= "Content-Type: multipart/related; boundary=\"$boundary\"";
    	  $message  = "Ceci est un message au format MIME 1.0 multipart/mixed.\n\n";
    	  $message .= "--" . $boundary . "\n";
    	  $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    	  $message .= "Content-Transfer-Encoding: 8bit\n\n";
    	  $message .= "$liste";
    	  $message .= "\n\n";
    	  $message .= "$sms";
    	  $message .= "\n\n";
    	  $message .= $mestest;
    	  $message .= "\n\n";
    	  $message .= "--" . $boundary . "\n";
    	  $message .= "Content-Type: image/jpg; name=\"\"\n";
    	  $message .= "Content-Transfer-Encoding: base64\n";
    	  $message .= "Content-ID: <$file_id>\n\n";
    	  $message .= $content_encode . "\n";
    	  $message .= "\n\n";
    	  $message .= "--" . $boundary . "--\n";
    	  mail($email, "test relance SMS", stripslashes($message), $headers);
    Merci pour toute votre aide

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce n'est pas au niveau du PHP que c'est génant.
    Ton document HTTP par contre ne peut pas être plusieurs choses à la fois.
    Donc quand tu mets plusieurs content-type successivement ou que tu les répètes dans une boucle ça n'a pas de sens.

    De plus une fois qu'un echo a été envoyé, tu ne peux plus modifier les en-tête HTTP.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Je comprends mais dans ce cas, comment puis je appeler afficher iframe en html avec un header en json.

    Exemple si je clique sur mon bouton qui lance la fonction javascript relance_sms , l'url est bien appelée, et le scrip php present dans relance_sms.php n'accepte pas d'afficher dans le html le iframe, alors que si je mets directement l'url qu'aurait du appeler la fonction javascript relance_sms dans la barre d'adresse de mon navigateur, soit relance_sms.php?sms=toto&liste=["1","2"], alors le iframe s'execute bien.

    Mon but in fine est de pouvoir lancer cette url finale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url = enleveaccents_2('http://'.$urlindex.'/'.$rep_extranet.'/sms/add/'.$smspass.'/'.$port_e.'/'.$MB_idUT.'/'.$client.'/'.$sms.' M. '.$MB_prenom.' '.$MB_nom.' ('.$MB_port.') - '.$ent_site);
    mais j'ai besoin d'un traitement PHP avant de l'envoyer car il me faut le contenu de certaines variables dans ma base qui vont dependre du contenu de la variable json (liste)

    Merci pour toute l'aide possible

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    afficher iframe en html avec un header en json
    Pourquoi mettre un header json sur du html ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Sans le header json la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste=json_decode(@$_GET['liste']);
    ne fonctionne pas

    Ensuite il me faut le header content en html pour faire fonctionner le <iframe....
    Mais il semblerait que les deux ne fonctionne pas ensemble quand on passe par du JS/AJAX pour appeler l'url relance_sms.php

  6. #6
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Evidement que ça ne fonctionne pas json_decode() puisque tu mets du HTML.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    donc comment fait on s'il vous plait pour faire fonctionner a la fois

    $liste=json_decode(@$_GET['liste']);


    et ensuite une syntaxe html du type <iframe...></iframe>

    Merci

  8. #8
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu enlèves ton json_decode() et header()

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    heuuu mais si j'enleve mon json_decode, comment je fais pour traiter ma chaine de caractere issue de mon code JS ci-dessous

    ///// var liste_val = encodeURIComponent((array_val.length > 0) ? JSON.stringify(array_val) : "");

    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
     
    function relance_sms(id_class,sms) {
      var elts = document.querySelectorAll(id_class);
      var i = 0;
      var array_val = []; // array
      elts.forEach(function(id) {
        if (id.checked) {
          array_val[i] = id.value; // on récupère les value des cases cochées
          i++;
        }
      });
      var liste_val = encodeURIComponent((array_val.length > 0) ? JSON.stringify(array_val) : "");
       // liste au format JSON
      var xhr_object = new XMLHttpRequest();
      xhr_object.open("GET", "relance_sms.php?sms="+sms+"&liste="+liste_val, true);
      xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {console.log ("relance_sms.php?sms="+sms+"&liste="+liste_val);}} 
      var data = "sms="+sms+"&liste="+liste_val;
      xhr_object.send(data);
    }

  10. #10
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Ah pardon j'ai cru que le json_decode() était dans le script de reception.

    Tu peux nous donner le code entier en précisant le nom des fichiers sinon c'est difficile de suivre.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Je vous remercie pour toute l'aide que vous m'avez apporté, je constate que ma demande est trop complexe donc j'ai procédé autrement.

    J'ai tout simplement placé dans le script PHP appelé, c'est a dire dans relance_sms.php la suite du script qui se trouvait dans la page que j'appelais via le IFRAME

    Comme ça je vire le IFRAME, je n'ai donc plus de pb avec le html et je supprime une étape dans le code, je ne sais pas pourquoi je n'y ai pas pensé plutôt , mais cela fonctionne.

    Merci a tous et bonne soirée

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

Discussions similaires

  1. Incompatibilitée entre SDL et SDL_net ?
    Par lichman dans le forum SDL
    Réponses: 2
    Dernier message: 09/12/2006, 19h27
  2. objet incompatibilité entre Flash8 et Flash9
    Par Heptaeon dans le forum Flash
    Réponses: 1
    Dernier message: 21/10/2006, 00h56
  3. [HTTP Header] Content-Size et téléchargement
    Par Hibou57 dans le forum Apache
    Réponses: 1
    Dernier message: 26/07/2006, 03h24
  4. Incompatibilité entre doctype et javascript
    Par Orionmel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/11/2005, 16h03
  5. Réponses: 2
    Dernier message: 25/05/2004, 12h40

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