Page 1 sur 1

PHP 7.2.x et @lex Guestbook

Publié : Jeu 30 Nov 2017, 13:20
par Otomatic
Bonjour,

PHP 7.2.0 apporte son lot de fonctions devenant obsolètes, c'est-à-dire qui ne seront plus supportées avec les évolutions futures.
Donc, pour ne pas être pris au dépourvu avec une prochaine version de PHP, autant modifier le code incriminé, d'autant plus que c'est relativement simple à faire.
-- Cas de l'instruction each() qui retourne chaque paire clé/valeur d'un tableau.
Avertissement : Cette fonction est dépréciée depuis PHP 7.2.0. Utiliser cette fonction est fortement déconseillé.
Dans la quasi totalité des cas, même si votre hébergeur passe en PHP 7.2.x, vous ne verrez pas cette erreur ; pour le moment ce n'est qu'un avertissement (Warning) et les hébergeurs utilisent le mode « Production » pour l'affichage des erreurs, c'est-à-dire que dans le php.ini
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
Voir toutes les erreurs sauf les codes obsolètes qui ne fonctionneront plus dans des futures versions ainsi que les avertissements de code en dehors des standards.

C'est pourquoi, en developpement, il faut toujours utiliser :
error_reporting = E_ALL
Afficher toutes les erreurs, les avertissements et les avis, y compris les normes de codage.

Revenons à nos moutons, ou plutôt au remplacement de each() par foreach().
Seuls deux fichiers sont à modifier :
---- agb\include\funct_utiles.php
Remplacer lignes 63 à 75 :

Code : Tout sélectionner

function nettoyer_var_post(){
   global $_POST;

   if (!get_magic_quotes_gpc()){
      while (list ($key, $val) = each ($_POST))
         if (!is_array($val))
            $_POST[$key] = addslashes($val);

      while (list ($key, $val) = each ($_GET))
         if (!is_array($val))
            $_GET[$key] = addslashes($val);
   }
}

par

Code : Tout sélectionner

function nettoyer_var_post(){
   global $_POST ;
   if (!get_magic_quotes_gpc()){
   // Remplacement de each par foreach pour support PHP 7.2.x
      foreach($_POST as $key => $val) {
         if(!is_array($val))
            $_POST[$key] = addslashes($val);
      }
      foreach($_GET as $key => $val) {
         if(!is_array($val))
            $_GET[$key] = addslashes($val);
      }
   }
}

Remarque en passant :
Depuis PHP 5.4.0, la fonction get_magic_quotes_gpc() retourne toujours false car la fonctionalité des « guillemets magiques » a été supprimée de PHP. On pourrait donc supprimer la condition if (!get_magic_quotes_gpc()) vu qu'elle sera toujours exécutée.

---- agb\templates\modelixe\ModeliXe.php
Dans ce fichier, il y a onze remplacements à effectuer et, pour ce fichier, je ne vais pas indiquer : Remplacer .... par .... mais la ligne d'origine commentée suivie par la cause de la modification et la ligne de remplacement :
Attention à bien respecter la « casse » Majuscules et minuscules dans les noms des variables

Code : Tout sélectionner

            //while (list($cle, $Avalue) = each($arrayArg)){
            // Remplacement each par foreach pour PHP 7.2.x
            foreach($arrayArg as $cle => $Avalue){

Code : Tout sélectionner

                    //while (list($Vcle, $Vvalue) = each($value)){
                    // Remplacement each par foreach pour PHP 7.2.x
                              foreach($value as $Vcle => $Vvalue) {

Code : Tout sélectionner

                //while (list($cle, $valeur) = each($param)) {
                // Remplacement each par foreach pour PHP 7.2.x
                foreach($param as $cle => $valeur){

Code : Tout sélectionner

                //while (list($cle, $valeur) = each($param)) {
                // Remplacement each par foreach pour PHP 7.2.x
                foreach($param as $cle => $valeur){

Code : Tout sélectionner

            //while (list($Akey, $value) = each($keyString)){
            // Remplacement each par foreach pour PHP 7.2.x
            foreach($keyString as $Akey => $value){

Code : Tout sélectionner

                    //while (list($k, $v) = each($value)) {
                    // Remplacement each par foreach pour PHP 7.2.x
                    foreach($value as $k => $v){

Code : Tout sélectionner

        //while (list($Akey, $value) = each($this -> flagArray))
        // Remplacement each par foreach pour PHP 7.2.x
            foreach(($this -> flagArray) as $key => $value){

Code : Tout sélectionner

        //while (list($cle, $Fkey) = each($this -> attributArray)){
        // Remplacement each par foreach pour PHP 7.2.x
            foreach(($this -> attributArray) as $cle => $Fkey){

Code : Tout sélectionner

                //while (list($Pkey, $value) = each($Farray)){
                // Remplacement each par foreach pour PHP 7.2.x
                foreach($Farray as $Pkey => $value){

Code : Tout sélectionner

        //while (list($cle, $Fkey) = each($this -> flagArray)){
        // Remplacement each par foreach pour PHP 7.2.x
        foreach(($this -> flagArray) as $cle => $Fkey){

Code : Tout sélectionner

                //while (list($Pkey, $value) = each($Farray)){
                // Remplacement each par foreach pour PHP 7.2.x
                foreach($Farray as $Pkey => $value){

Et voilou !
C'est tout pour aujourd'hui.

Re: PHP 7.2.x et @lex Guestbook

Publié : Mer 30 Mai 2018, 17:07
par piotr
Dear Mr. Otomatic,

Just wanted to let you know that your modifications on @lexguestbook,
to get the script working with PHP 7.2, are running perfectly.
Thanks for all your efforts. Great job !!!

Kind regards, Piotr Linski

Re: PHP 7.2.x et @lex Guestbook

Publié : Mer 30 Mai 2018, 22:19
par Malabar
:)

Re: PHP 7.2.x et @lex Guestbook

Publié : Jeu 31 Mai 2018, 16:59
par Otomatic
Thanks :merci: