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

PHP & Base de données Discussion :

Différence entre Linux et Windows avec array_walk_recursive


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 41
    Par défaut Différence entre Linux et Windows avec array_walk_recursive
    Bonjour,

    Je suis débutant sur linux, je viens d'installer ubuntu gnome.

    J'essaie depuis un moment de faire passer mes sites (essentiellement du php) depuis mon environnement windows à Linux.

    Je travaille avec eclipse pdt, j'ai installé apache2, mysql, phpmyadmin et tout le tralala sur linux mais je rencontre un problème étrange.

    Dans mon index, j'appelle une méthode statique pour traiter et normaliser les envois http en fonction de si le magic_quote_gpc est on ou non. voici ce qu'elle fait :

    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
     
    	static function normalisation()
    	{
     
     
    		//Si on est en �chappement auto, on rectifie...
    		if(get_magic_quotes_gpc())
    		{
    			$_POST = array_walk_recursive($_POST, 'stripslashes');
    			$_GET = array_walk_recursive($_GET, 'stripslashes');
    			$_COOKIE = array_walk_recursive($_COOKIE, 'stripslashes');
    			$_REQUEST = array_walk_recursive($_REQUEST, 'stripslashes');
    		}
    	}
     
     
    ?>

    Les fichiers sources sont exactement les mêmes des deux côtés dans le sens que c'est un copier collé (après si le fait de passer des fichiers source de windows à linux peut les altérer, je ne sais pas).

    Quoi qu'il en soit, sous windows, tout roule.

    Des que je passe sous linux par contre j'obtiens cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Warning: Wrong parameter count for stripslashes() in /var/www/monitools_site/classes/page.class.php on line 71
     
    Warning: Wrong parameter count for stripslashes() in /var/www/monitools_site/classes/page.class.php on line 72
    J'imagine que si cette erreur survient, c'est parce que les magic_quotes_gpc sont on sur mon linux et off sur mon windows. Soit, mais cet exemple est tiré d'un livre (PHP avancé, que je ne recommande pas d'ailleurs) et je ne comprend pas ma mauvaise utilisation de la fonction array_walk_recursive avec stripslashes, malgré un bon moment passé sur la doc


    Merci d'avance!

  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
    Par défaut
    array_walk_recursive() envoi le couple clé / valeur a la fonction, hors stripslashes ne prend qu'une seule valeur, d'ou une erreur sur le nombre de paramètres.

    Est-ce que tu es sur que ca fonctionnait sur windows ?
    Peut etre simplement que tu n'avais pas les erreurs Warning.

    Sinon tu as un exemple de traitement d'un tableau par stripslashes dans la documentation.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 41
    Par défaut
    ooop... je viens d'éditer.

    Je pense que sous windows, je dois avoir un magic_quote_gpc en off, ce qui explique que je n'ai pas les messages d'erreur. J'ai exactement la même configuration des erreurs puisque j importe un fichier de configuration qui les définit en clair.

    Je ne comprend vraiment pas bien le fonctionement de ce array_walk_recursive. J'ai checké la doc plusieurs fois et j'utilise là un exemple tiré d'un livre.

    Y a t il un autre moyen simple (si possible sans passer par une fonction récursive perso) pour passer récursivement ce genre de tableau à stripslashes (voir un équivalent de stripslashes qui accepte le couple)? J'ai un très long poil dans la main.

  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
    Par défaut
    L'exemple donné dans la documentation ne te convient pas ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2008
    Messages : 41
    Par défaut
    Celui ci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $sweet = array('a' => 'apple', 'b' => 'banana');
    $fruits = array('sweet' => $sweet, 'sour' => 'lemon');
     
    function test_print($item, $key)
    {
        echo "$key holds $item\n";
    }
     
    array_walk_recursive($fruits, 'test_print');
    ?>
    Oui ça me conviendrait, mais comment faire pour indiquer à array_walk_recursive une méthode statique de classe? Je ne crois pas que ce soit dans la doc, ça (ou alors je l'ai raté)

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_walk_recursive($fruits, 'nom_de_classe::nom_de_methode');

Discussions similaires

  1. Problème avec le caractère de fin de ligne entre linux et windows
    Par Dosseh dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 28/07/2009, 14h04
  2. Différence de rafraîchissement entre Linux et Windows
    Par lapogne dans le forum wxWidgets
    Réponses: 0
    Dernier message: 10/11/2008, 23h48
  3. Choix écran entre linux et windows
    Par Alain15 dans le forum Windows XP
    Réponses: 2
    Dernier message: 13/08/2006, 22h42
  4. Choix écran entre linux et windows
    Par Alain15 dans le forum Administration système
    Réponses: 6
    Dernier message: 08/08/2006, 11h49
  5. Partage d'application entre Linux et windows
    Par slc dans le forum Administration système
    Réponses: 2
    Dernier message: 30/11/2005, 11h00

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