11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous !
Toute nouvelle en PHP, je suis face à une erreur qui est :

Fatal error: Cannot redeclare do_magic_quotes_gpc() (previously declared in /Applications/XAMPP/xamppfiles/htdocs/includes/functions/compatibility.php:18) in /Applications/XAMPP/xamppfiles/htdocs/includes/functions/compatibility.php on line 30

Alors, j'ai bien compris ( en cherchant sur mon ami google ) que j'avais un "do_magic_quotes_gpc" en trop, mais quand je l'enlève, cela m'affiche d'autres erreurs, notamment des problèmes de '{' qui manquent ...

Voici ma portion de code, ou cela bloque :
function do_magic_quotes_gpc(&$ar) {
    if (!is_array($ar)) return false;

    reset($ar);
    while (list($key, $value) = each($ar)) {
      if (is_array($ar[$key])) {
        do_magic_quotes_gpc($ar[$key]);
      } else {
        $ar[$key] = addslashes($value);
      }
    }
    reset($ar);
  }

  if (PHP_VERSION >= 4.1) {
    $HTTP_GET_VARS =& $_GET;
    $HTTP_POST_VARS =& $_POST;
    $HTTP_COOKIE_VARS =& $_COOKIE;
    $HTTP_SESSION_VARS =& $_SESSION;
    $HTTP_POST_FILES =& $_FILES;
    $HTTP_SERVER_VARS =& $_SERVER;
  } else {
    if (!is_array($HTTP_GET_VARS)) $HTTP_GET_VARS = array();
    if (!is_array($HTTP_POST_VARS)) $HTTP_POST_VARS = array();
    if (!is_array($HTTP_COOKIE_VARS)) $HTTP_COOKIE_VARS = array();
  }


Merci d'avance pour votre aide, bonne fin de journée à vous =)
Salut,

hou ma..
houla la la ..gic

...

quote erg

bon je souffre encore mais je me reprends Smiley langue Smiley cligne

function do_magic_quotes_gpc(&$ar) { 
    if (!is_array($ar)) return false; 
 
    reset($ar); 
    while (list($key, $value) = each($ar)) { 
      if (is_array($ar[$key])) { 
        do_magic_quotes_gpc($ar[$key]); 
      } else { 
        $ar[$key] = addslashes($value); 
      } 
    } 
    reset($ar); 
 } 


çà c'est ta fonction. si tu l'enlèves en n'enlevant ni plus ni moins, vu que les blocs me semblent complets, ça ne doit pas provoquer de coupure de blocs pb en }.

et si ça arrives c'est qu'il y a un problème ailleurs.

en php on ne peut pas re-déclarer 2 fois une fonction.

connais tu la différence entre
(include_once et require_once ) et (include et require)?

normalement tu déclares ta fonction dans un seul fichier que tu appelles uniquement à coup de include_once et require_once et là tu ne devrais pas avoir ce type de problème

tu pourrais bien sur tricher , ça n'augurerais rien de bon pour ton code.
la manip tournerait autour de l'utilisation de l'instruction function_exists .

bon ensuite je te previens utiliser les magic quotes ça n'est pas bon. mettre des / partout
c'est pas forcement la meilleure façon de faire.

bien verifier le contenus de ses variables, les caster au besoin ( (int) par exemple pour une variable supposer être entiere ) et utiliser des fonctions comme
mysql_real_escape_string c'est bien bien mieux.

Bon courage.

Pascal
Modifié par CPascal (12 Apr 2010 - 18:50)
Bonjour Pascal et merci pour ta réponse si rapide Smiley smile
Ah, le magic quote machin c'est pas bien ? Je ne savais pas du tout, ce code vient en fait du pack oscommerce, je pensais que ceux qui avait programmé ces codes avaient pensé à tout =p
Alors en effet, en enlevant juste notre vilain magic quote, et bien j'ai toujours le même message d'erreur. Alors peut être que je n'ai pas enlever ce qu'il fallait, voici mon nouveau code :

function do_magic_quotes_gpc(&$ar) {
    if (!is_array($ar)) return false;

    reset($ar);
    while (list($key, $value) = each($ar)) {
      if (is_array($ar[$key])) {
        ($ar[$key]);
      } else {
        $ar[$key] = addslashes($value);
      }
    }
    reset($ar);
  }


Le problème vient de la ligne 30, qui est la dernière ligne de la portion de code que je viens de donner Smiley smile

Merci d'avance !!!
Re,

tu fais du OsCommerce, il fallait commencer par là. un CMS c'est un énorme truc. a modifier avec des pincettes.

si ce n'est pas toi qui a rajouté cette fonction. je te conseille de ne pas la retirer finalement.

eh oui OsCommerce c'est relativement robuste, mais ancien aussi et c'est parti au départ dans des directions qui ne sont pas forcément celles conseillés aujourd'hui avec les dernieres versions de PHP.

On peut néanmoins penser qu'ils ont travaillé suffisamment leur trucs pour tenir le coup dans ces conditions. mais ça a dut demander de l'huile de coude Smiley cligne

Je te conseille de te tourner vers la communauté oscommerce
http://www.oscommerce-fr.info/forum/ . ils ont un forum je crois relativement actif.

c'est probablement un problème de configuration logiciel. mais je ne peux pas t'en dire plus.

le code de la fonction est juste en tout cas.

mais au-dessus il doit y a un bloc ouvert et celui-ci n'est pas fermé plus bas.
du coup l'erreur se déplace à la dernière accolade fermante juste avant.

c'est du classique.

je te conseille d'utiliser un éditeur avec coloration, complétion et tout le tralala.

même notepad++ te permettrais de voir clairement le problème. quand tu passe le curseur sur une accolade { ça correspondante passe en rouge. tu détectes ainsi très vite ce genre de problème
Modifié par CPascal (12 Apr 2010 - 19:59)