Vous n'êtes pas identifié.

Annonces

Les pages de ce Forum sont exploitables par les Navigateurs FireFox, Google Chrome, Opera, Safari, Konqueror, Netscape & MSIE.

#1 [↑] [↓]02/01/2009 15:21:38

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

La fonction PHP "in_array()" - PB possible.

excl Attention à la fonction in_array() en PHP5.
En effet dans le cas d'une array() vide, cela provoque une erreur qui ne me semblait pas exister en PHP4.

L'astuce pour éviter le (ou les) warning(s) générés (heureusement ce ne sont que des warning [wrong type argument])
Dans l'exemple suivant :

Code :

		while ($cur_forum = $db->fetch_assoc($result))
		{
			$cur_moderators = ($cur_forum['moderators'] != '') ? Unserialize($cur_forum['moderators']) : array();

			if (in_array($id, $cur_moderators))
			{
				$username = array_search($id, $cur_moderators);
				unset($cur_moderators[$username]);
				$cur_moderators = (!empty($cur_moderators)) ? '\''.$db->escape(serialize($cur_moderators)).'\'' : 'NULL';

				$db->query('UPDATE '.$db->prefix.'forums SET moderators='.$cur_moderators.' WHERE id='.$cur_forum['id']) or error('Unable to update forum', __FILE__, __LINE__, $db->error());
			}
		}

Remplacer :

Code :

			if (in_array($id, $cur_moderators))

Par :

Code :

			if ($cur_moderators && in_array($id, $cur_moderators))

Ou par :

Code :

			if (!empty($cur_moderators) && in_array($id, $cur_moderators))

Extrait du code de l'Admin de ce Forum --> profile.php
(BUG assez ancien dont je ne me suis préoccupé qu'aujourd'hui)
wink
Alain AKA Arma


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#2 [↑] [↓]02/01/2009 19:02:42

rikaix
Trolleur de 1ère Catégorie
rikaix
Lieu: Aix en Provence
Date d'inscription: 11/04/2006
Messages: 377

Re: La fonction PHP "in_array()" - PB possible.

Mais non mais non... Pfff
C'est pas : attention avec in_array en PHP 5, il n'y est pour rien le pauvre happy
Il faut refaire le titre et le changer pour : Attention si vous codez comme des gorets avec n'importe quel langage de programmation.
Que ce soit en procédural ou en objet d'ailleurs.

Bref, pour éviter ce genre de désagrément lorsque l'on utilise une/des variables, il faut
1) la déclarer
2) vérifier son intégrité
3) avant traitement : vérifier qu'elle existe bien et/ou qu'elle n'est pas vide, condition primordiale au traitement sinon on ne traite pas...

Bref c'est assez loin du code de goret et je sais que cette gymnastique de l'esprit va vous être un peu difficile, il vous reste sinon les @ de gorets ou le super Goret qui est assez simple a mettre en place : Rendre PHP muet, comme cela il ne vous embêtera plus avec ses Warning, autres erreurs et fanfreluches.

big_smile

Dernière modification par rikaix (02/01/2009 19:07:17)



C'est en faisant n'importe quoi, qu'on devient n'importe qui.
(source : R. Gaillard)

Hors ligne

 

#3 [↑] [↓]02/01/2009 23:10:09

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: La fonction PHP "in_array()" - PB possible.

Tu as raison !
Ah ah ah ah ah...

Mais ceux qui ont écrit le Script PunBB (Rickard Andersson, en particulier)...
Codent comme des Gorets (euh, pire que cela encore - un peu comme chez Utilisable) !
Heureusement qu'il y a des T@rlouzes pour corriger et faire fonctionner le bazar sans Warning
(cela dit, les Warnings ne tuent pas et cela fonctionne quand même bleh)
bleh
Alain AKA Arma

PS : Je préfère coder comme une T@rlouze, c'est beaucoup plus propre ! tongue
[Vous devez être identifié pour voir le texte caché.]


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#4 [↑] [↓]02/01/2009 23:15:56

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: La fonction PHP "in_array()" - PB possible.

Pour rendre PHP muet, c'est simple !
En début de code, mettre :

Code :

// Désactiver le rapport d'erreur
error_reporting(FALSE);

Sinon, voir la documentation suivante :
--> http://fr.php.net/error_reporting
wink
Alain AKA Arma


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#5 [↑] [↓]03/01/2009 13:35:03

LOKI
Privilégié
LOKI
Date d'inscription: 30/11/2006
Messages: 139
Site web

Re: La fonction PHP "in_array()" - PB possible.

LOL, c'est comme ça que j'ai planté seo.feuxi.com il y a quelques jours...

En PHP4, un index invalide donnait un simple warning, invisible dans mon cas.
Passage en PHP5 ==> Cela devient une ERREUR et plus un warning.


Hors ligne

 

Pied de page des forums

Powered by PunBB modified
© Copyright 2002–2005, Rickard Andersson
© Interface & Functional Add-ons Copyright 2006-2007, by Crazy


RSS Forum CIGIEMA

© 2006-2012 / A. G.
CiGi€M@®, 1997-2012
IDDN Reproduction totale ou partielle strictement interdite
Contact :
/