In_array() expects parameter 2 to be array

Résolu
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   -  
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis entrain de developper une fonction pour upload un fichier en php, mais je rencontre le problème suivant

"in_array() expects parameter 2 to be array, string given in"

Lorsque je souhaite vérifier l'extension du fichier. Je sais qu'il faut retourner un tableau (si je dis pas de bêtises) mais je ne comprends pas top commen faire.

Voici le code en question :

function upload($destination,$extension =false,$maxsize=false,$size=false)
{
 if(empty($_FILES['img']) || $_FILES['img']['error'] >0) //s'il n'y a des erreur
 {
  echo 'Erreur : l\'upload c\'est mal passer';
 }
 $ext = strtolower(substr(strrchr($_FILES['img']['name'], "."),1)); //verification des extensions
 if($extension !=false && !in_array($ext, $extension)) //on verifie si l'extension est correct
 {
  echo 'l\'extension ne correspond pas au type autoriser (png, jpg, bmp, jpeg)';
  return false;
 }
 if($maxsize !=false && $_FILES['img']['size'] > $maxsize)
 {
  echo 'La taille de l\image est trop élevèes';
  return false;
 }
 $dimension = getimagesize($_FILES['img']['tmp_name']);
 if($size != false && $dimension[0] > $size[0] || $dimension[1] > $size[1])
 {
  echo 'Les dimensions sont trop élevèes';
  return false;
 }
 
 return move_uploaded_file($_FILES['img']['tmp_name'], $destination.mt_rand(0,1000)."-".$_FILES['img']['name']);
}

if(!empty($_POST['nv_img']))
{

	if(upload("img","../", array("png","jpg","bmp","jpeg"),10240,array(800,600)) == true)
	{
		echo 'Le fichier à été télécharger avec succès !';
	}
}


Merci de votre aide !

A voir également:

2 réponses

ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
Salut,

tu sais que tu dois passer un tableau, mais par défaut, tu mets un booléen dans ta variable, ça va pas trop.

Mieux vaut passer un tableau vide comme valeur par défaut et contrôler si ce tableau n'est pas vide un peu plus bas.

Ensuite, il te dit que tu passes un string. Bah tu lui passes quoi à ce paramètre ? Le bout de code que tu montres ne permet pas de le savoir.
0
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   102
 
Merci de ta réponse,

J'a suivie un tutoriel video pour réaliser ce code (étant donner que je débute). Je n'ai rien de plus a par le formulaire html, alors je ne comprends pas ta dernière phrase. Le code ne serait pas complet ?
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
là, tu nous décris ta fonction. D'accord, mais ta fonction, tu l'appelles où ? Et comment ? C'est ça ma question
0
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   102
 
je l'appelle a la fin dans le if non ?

if(upload("img","../", array("png","jpg","bmp","jpeg"),10240,array(800,600)) == true)
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
Autant pour moi, tu as tout à fait raison.

Et bien, tu vois que ton 2ème paramètres lors de ton appel est "../", autrement dit, une chaine. Le tableau attendu est en 3ème paramètre.
Dans ta description, tu dis que ta fonction attend 4 params, tu en passes 5 lors de l'appel.

Tu vois ?
0
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   102
 
Oui, merci de ta réponse, je vais aller regarder le problème de plus près
0
lolerki Messages postés 606 Date d'inscription   Statut Membre Dernière intervention   102
 
ça marche très bien, je te remercie. J'ai retirer le paramètre $index (cela me fonctionner pas) je ne l'ai pas retirer dans la fonction
0