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

  1. #1
    Membre actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    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 : 404
    Points : 241
    Points
    241
    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 actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    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 : 404
    Points : 241
    Points
    241
    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
    Points : 44 155
    Points
    44 155
    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 actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    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 : 404
    Points : 241
    Points
    241
    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
    Points : 44 155
    Points
    44 155
    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 actif

    Homme Profil pro
    Webmaster, Réalisateur Vidéo, Chef de projet Web documentaire
    Inscrit en
    Juillet 2006
    Messages
    404
    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 : 404
    Points : 241
    Points
    241
    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