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 :

PHP 5.3 et json decode


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut PHP 5.3 et json decode
    Bonjour

    une fonction qui me permet de récupérer des éléments d'un POST dans un JSON se déroule correctement sous PHP 5.5 /7 le serveur sur lequel je dois mettre le site est en PHP 5.3 et je ne récupère rien.
    Le code d'origine qui fonctionne sous PHP >5.3
    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
    <?php
    include 'function.php';
    // include 'template/header.php';
    print_r($_POST['media']);
     
    $diaporama = $_GET['diaporama'];
    echo $diaporama;
    deleteAllImg('photos', $diaporama);
    $array = json_decode($_POST['media'], true);
    foreach ($array as $key => $value) {
    $data = array(
      'diaporama' => $value['diaporama'],
      'titre' => $value['titre'],
      'numero' => $value['numero'],
      'chemin' => $value['chemin']
      );
    ajoutBase("photos", $data);
    }
     ?>
    Je rajoute un test du JSON
    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
     
    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - Aucune erreur';
        break;
        case JSON_ERROR_DEPTH:
            echo ' - Profondeur maximale atteinte';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Inadéquation des modes ou underflow';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Erreur lors du contrôle des caractères';
        break;
        case JSON_ERROR_SYNTAX:
            echo ' - Erreur de syntaxe ; JSON malformé';
        break;
        case JSON_ERROR_UTF8:
            echo ' - Caractères UTF-8 malformés, probablement une erreur d\'encodage';
        break;
        default:
            echo ' - Erreur inconnue';
        break;
    }
    et j'enlève des caractères invisible fonction trouvé sur stack overflow
    Cette fonction me permet de ne plus avoir d'erreur de syntaxe dans le decode JSON
    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
    $checkLogin = file_get_contents($_POST['media']);
     
    // This will remove unwanted characters.
    // Check http://www.php.net/chr for details
    for ($i = 0; $i <= 31; ++$i) { 
        $checkLogin = str_replace(chr($i), "", $checkLogin); 
    }
    $checkLogin = str_replace(chr(127), "", $checkLogin);
     
    // This is the most common part
    // Some file begins with 'efbbbf' to mark the beginning of the file. (binary level)
    // here we detect it and we remove it, basically it's the first 3 characters 
    if (0 === strpos(bin2hex($checkLogin), 'efbbbf')) {
       $checkLogin = substr($checkLogin, 3);
    }
    le code final est donc ça
    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
    <?php
    include 'function.php';
     
     
    // include 'template/header.php';
    print_r($_POST['media']);
     
    $diaporama = $_GET['diaporama'];
    echo $diaporama;
    deleteAllImg('photos', $diaporama);
     
     
     
    $checkLogin = file_get_contents($_POST['media']);
     
    // This will remove unwanted characters.
    // Check http://www.php.net/chr for details
    for ($i = 0; $i <= 31; ++$i) { 
        $checkLogin = str_replace(chr($i), "", $checkLogin); 
    }
    $checkLogin = str_replace(chr(127), "", $checkLogin);
     
    // This is the most common part
    // Some file begins with 'efbbbf' to mark the beginning of the file. (binary level)
    // here we detect it and we remove it, basically it's the first 3 characters 
    if (0 === strpos(bin2hex($checkLogin), 'efbbbf')) {
       $checkLogin = substr($checkLogin, 3);
    }
     
    $array= json_decode($_POST['media'], true);
     
     
     
     
    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - Aucune erreur';
        break;
        case JSON_ERROR_DEPTH:
            echo ' - Profondeur maximale atteinte';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Inadéquation des modes ou underflow';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Erreur lors du contrôle des caractères';
        break;
        case JSON_ERROR_SYNTAX:
            echo ' - Erreur de syntaxe ; JSON malformé';
        break;
        case JSON_ERROR_UTF8:
            echo ' - Caractères UTF-8 malformés, probablement une erreur d\'encodage';
        break;
        default:
            echo ' - Erreur inconnue';
        break;
    }
    echo "afficher le ".$array;
    print_r($array);
    foreach ($array as $key => $value) {
    $data = array(
      'diaporama' => $value['diaporama'],
      'titre' => $value['titre'],
      'numero' => $value['numero'],
      'chemin' => $value['chemin']
      );
     
    ajoutBase("photos", $data);
    }
     ?>
    Le test du Decode Json renvoie aucune erreur
    mais les test de la variable $Array ligne 58 et 59 ne renvoie rien sous PHP 5.3 et sont correctes à partir d'une version 5.5

  2. #2
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut
    Bon apparement la communauté de developpez.net sèche sur mon problème.
    c'est rare

  3. #3
    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
    Par défaut
    Tu as une exemple d'un contenu json qui ne donne rien avec ce code ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut
    J'ai récupéré ça dans la console.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"titre":"Handiscience","chemin":"media/2c0fd129f4bb250f4aba6224e8a8267c.jpg","numero":0,"diaporama":"diaporama2","id":"2083"},{"titre":"Handiscience","chemin":"media/43fe2984e8150820d6af79fa5d386bc8.jpg","numero":1,"diaporama":"diaporama2","id":"2085"},{"titre":"Handiscience","chemin":"media/e4dfe51e35179a2c5581f33733c4f4d2.jpg","numero":2,"diaporama":"diaporama2","id":"2086"},{"titre":"Handiscience","chemin":"media/d15e10dc184bb58a8c59b6b506b2b31b.jpg","numero":3,"diaporama":"diaporama2","id":"2087"},{"titre":"Handiscience","chemin":"media/8e7f80cac8bdf231fe10e7537e068069.jpg","numero":4,"diaporama":"diaporama2","id":"2088"},{"titre":"Handiscience","chemin":"media/eb3ed4f81717b4680e93329581ec4c72.jpg","numero":5,"diaporama":"diaporama2","id":"2089"},{"titre":"Handiscience","chemin":"media/6659d263580101827672be154a564eb7.jpg","numero":6,"diaporama":"diaporama2","id":"2090"},{"titre":"Handiscience","chemin":"media/f4f631f405c72f1ccf9121b90fce63d1.jpg","numero":7,"diaporama":"diaporama2","id":"2091"},{"titre":"Handiscience","chemin":"media/f10baf878009d5a4351081a0538318a3.jpg","numero":8,"diaporama":"diaporama2","id":"2092"},{"titre":"Handiscience","chemin":"media/bfe076953fd6927d9ea5df3e09b84579.jpg","numero":9,"diaporama":"diaporama2","id":"2093"},{"titre":"Handiscience","chemin":"media/347f848de97f83de20cff426c6732e6e.jpg","numero":10,"diaporama":"diaporama2","id":"2094"},{"titre":"Handiscience","chemin":"media/fb39ffdcb86abf0be35ad6c885fb219e.jpg","numero":11,"diaporama":"diaporama2","id":"2095"},{"titre":"Handiscience","chemin":"media/e94236a603240b97bbf800875c678206.jpg","numero":12,"diaporama":"diaporama2","id":"2096"},{"titre":"Handiscience","chemin":"media/0a201ac6376848c3271e53398549b5f1.jpg","numero":13,"diaporama":"diaporama2","id":"2097"},{"titre":"Handiscience","chemin":"media/e8a4aa6e4fa90a80859b2d119b9572e0.jpg","numero":14,"diaporama":"diaporama2","id":"2098"},{"titre":"Handiscience","chemin":"media/77644523886648a26a167fda753f183d.jpg","numero":15,"diaporama":"diaporama2","id":"2099"},{"titre":"Handiscience","chemin":"media/3e81886c3e7b3677a79f3b6a74e3b218.jpg","numero":16,"diaporama":"diaporama2","id":"2100"},{"titre":"Handiscience","chemin":"media/3e6f98a5e7c3a325bdc0f2ce3cc1f7f8.jpg","numero":17,"diaporama":"diaporama2","id":"2101"},{"titre":"Handiscience","chemin":"media/df9dec8caf55da983f8e028d89427923.jpg","numero":18,"diaporama":"diaporama2","id":"2102"},{"titre":"Handiscience","chemin":"media/5e1132541924cabb1a39d810964a3a8f.jpg","numero":19,"diaporama":"diaporama2","id":"2103"},{"titre":"Let's go","chemin":"media/dd64bb50cbc87c63f7f1ecfdcc83be63.jpg","numero":20,"diaporama":"diaporama2","id":"2104"},{"titre":"Let's go","chemin":"media/7c7ad84f5a3d35377951ccf6744307e6.jpg","numero":21,"diaporama":"diaporama2","id":"2105"},{"titre":"Handiscience","chemin":"media/d817c372a95b0f740386a8e3713116fe.jpg","numero":22,"diaporama":"diaporama2","id":"2106"},{"titre":"Handiscience","chemin":"media/739a99d99c44823530f182d8ee877ed0.jpg","numero":23,"diaporama":"diaporama2","id":"2107"},{"titre":"Handiscience","chemin":"media/395f1108e0e2742f056f7736ace1e5d7.jpg","numero":24,"diaporama":"diaporama2","id":"2084"}][{"titre":"Handiscience","chemin":"media/2c0fd129f4bb250f4aba6224e8a8267c.jpg","numero":0,"diaporama":"diaporama2","id":"2083"},{"titre":"Handiscience","chemin":"media/43fe2984e8150820d6af79fa5d386bc8.jpg","numero":1,"diaporama":"diaporama2","id":"2085"},{"titre":"Handiscience","chemin":"media/e4dfe51e35179a2c5581f33733c4f4d2.jpg","numero":2,"diaporama":"diaporama2","id":"2086"},{"titre":"Handiscience","chemin":"media/d15e10dc184bb58a8c59b6b506b2b31b.jpg","numero":3,"diaporama":"diaporama2","id":"2087"},{"titre":"Handiscience","chemin":"media/8e7f80cac8bdf231fe10e7537e068069.jpg","numero":4,"diaporama":"diaporama2","id":"2088"},{"titre":"Handiscience","chemin":"media/eb3ed4f81717b4680e93329581ec4c72.jpg","numero":5,"diaporama":"diaporama2","id":"2089"},{"titre":"Handiscience","chemin":"media/6659d263580101827672be154a564eb7.jpg","numero":6,"diaporama":"diaporama2","id":"2090"},{"titre":"Handiscience","chemin":"media/f4f631f405c72f1ccf9121b90fce63d1.jpg","numero":7,"diaporama":"diaporama2","id":"2091"},{"titre":"Handiscience","chemin":"media/f10baf878009d5a4351081a0538318a3.jpg","numero":8,"diaporama":"diaporama2","id":"2092"},{"titre":"Handiscience","chemin":"media/bfe076953fd6927d9ea5df3e09b84579.jpg","numero":9,"diaporama":"diaporama2","id":"2093"},{"titre":"Handiscience","chemin":"media/347f848de97f83de20cff426c6732e6e.jpg","numero":10,"diaporama":"diaporama2","id":"2094"},{"titre":"Handiscience","chemin":"media/fb39ffdcb86abf0be35ad6c885fb219e.jpg","numero":11,"diaporama":"diaporama2","id":"2095"},{"titre":"Handiscience","chemin":"media/e94236a603240b97bbf800875c678206.jpg","numero":12,"diaporama":"diaporama2","id":"2096"},{"titre":"Handiscience","chemin":"media/0a201ac6376848c3271e53398549b5f1.jpg","numero":13,"diaporama":"diaporama2","id":"2097"},{"titre":"Handiscience","chemin":"media/e8a4aa6e4fa90a80859b2d119b9572e0.jpg","numero":14,"diaporama":"diaporama2","id":"2098"},{"titre":"Handiscience","chemin":"media/77644523886648a26a167fda753f183d.jpg","numero":15,"diaporama":"diaporama2","id":"2099"},{"titre":"Handiscience","chemin":"media/3e81886c3e7b3677a79f3b6a74e3b218.jpg","numero":16,"diaporama":"diaporama2","id":"2100"},{"titre":"Handiscience","chemin":"media/3e6f98a5e7c3a325bdc0f2ce3cc1f7f8.jpg","numero":17,"diaporama":"diaporama2","id":"2101"},{"titre":"Handiscience","chemin":"media/df9dec8caf55da983f8e028d89427923.jpg","numero":18,"diaporama":"diaporama2","id":"2102"},{"titre":"Handiscience","chemin":"media/5e1132541924cabb1a39d810964a3a8f.jpg","numero":19,"diaporama":"diaporama2","id":"2103"},{"titre":"Let's go","chemin":"media/dd64bb50cbc87c63f7f1ecfdcc83be63.jpg","numero":20,"diaporama":"diaporama2","id":"2104"},{"titre":"Let's go","chemin":"media/7c7ad84f5a3d35377951ccf6744307e6.jpg","numero":21,"diaporama":"diaporama2","id":"2105"},{"titre":"Handiscience","chemin":"media/d817c372a95b0f740386a8e3713116fe.jpg","numero":22,"diaporama":"diaporama2","id":"2106"},{"titre":"Handiscience","chemin":"media/739a99d99c44823530f182d8ee877ed0.jpg","numero":23,"diaporama":"diaporama2","id":"2107"},{"titre":"Handiscience","chemin":"media/395f1108e0e2742f056f7736ace1e5d7.jpg","numero":24,"diaporama":"diaporama2","id":"2084"}]

  5. #5
    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
    Par défaut
    Comment est construit ce json ?
    Tous les valideurs de json disent qu'il est faux.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 407
    Par défaut
    en bref tout ça sert à modifier des images à l'écran à les déplacer en drag and drop.
    les modifs à l'écran sont envoyés par POST le $_POST['media'] par un script JS ci dessous
    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
     
    var beforDropList = document.querySelectorAll('.media');
     
    // Simple list
    var list = document.getElementById("sortable");
    Sortable.create(list);
     
     
    for (var i = 0; i < beforDropList.length; i++) {
      beforDropList[i].addEventListener('drop', function(){
        console.log('drop');
        var media = [];
        var list = document.querySelectorAll('.media');
        for (var i = 0; i < list.length; i++) {
          var img = list[i].querySelector('img');
          var title = list[i].getAttribute('data-title');
          var diaporama = list[i].getAttribute('data-diaporama');
          var id = list[i].getAttribute('data-id');
          var src = img.getAttribute('src');
            media.push({
              titre: title,
              chemin: src,
              numero: i,
              diaporama: diaporama,
              id: id
            });
          if (i === list.length-1) {
            for (var i = 0; i < media.length; i++) {
            }
            var diaporama = document.querySelector('h2').getAttribute('data-diaporama');
            var mediaJson = JSON.stringify(media);
            console.log(mediaJson.length);
            var url = 'saveAll.php?media='+mediaJson+'&diaporama='+diaporama;
            var url2 = 'saveAll.php?diaporama='+diaporama;
            // sendAjax(url);
            console.log(url2);
            // sendAjaxPost(url2, mediaJson);
            var json2=mediaJson.length;
            if(json2>10){
            	$.post(url2, {"media": mediaJson}, function(result){
               console.log(result);
            });
          }
      }
        }
      }, false);
     
    }
    je t'envoie en MP le lien du site et les identifiants de connexion pour voir.

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/09/2015, 17h25
  2. Array php à deux dimension et JSON
    Par Faror dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/01/2013, 19h54
  3. [PHP-JS] encode javascript et decode php
    Par jeepibmx dans le forum Langage
    Réponses: 4
    Dernier message: 27/05/2009, 18h16

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