Function pour upload

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Function pour upload

Re: Function pour upload

par guigui69 » 12 nov. 2009, 09:27

D'accord mais c'est bizarre avec cette fonction (ci-dessus) je suis a réalisé l'upload juste en changeant le $_FILES dans la déclaration de la fonction.

Et j'ai refait un essai après j'ai eu des erreurs, la je suis un peu perdu.

tu me conseilles de faire comment?Doit-je enlever complètement $_FILES de la déclaration, le renommer?


Merci d'avance

guigui69

Re: Function pour upload

par fab » 12 nov. 2009, 03:14

Car tu l'as pas renommé dans tout le reste de la fonction peut être :)

Re: Function pour upload

par guigui69 » 11 nov. 2009, 23:50

Merci pour votre aide,


sur ma page ou j'appel cette fonction j'ai noté ceci:
upload_image($dossier,$_FILES['url_mini_image']);
et voici ma fonction:
<?php
function upload_image($dossier,$image)
{
if ( $dossier == null || $_FILES['image_fichier'] == null) 
{
echo "erruer";
}
else
{
$fichier = basename($_FILES['image_fichier']['name']);
$taille_maxi = 10000000000000;
$taille = filesize($_FILES['image_fichier']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_fichier']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['image_fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
	 
			//$'image_fichier'= $dossier.$fichier;
			$image_fichier=$fichier;
			chmod("../img/galerie/$image_fichier", 0644);
			//echo $image_fichier;
          echo 'Upload effectué avec succès !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
}
}
?>
et je comprend pas pourquoi ca marche (oui oui ca marche), dans ma fonction je n'ai modifier que

$_FILES['image_fichier'] en $image, mais rien après et pourtant ca marche pourquoi ?

guigui69

Re: Function pour upload

par fab » 11 nov. 2009, 21:44

Oui mais tu peux utiliser les noms de variable réservés en tant que paramètre de ta fonction :)

Re: Function pour upload

par Aureusms » 11 nov. 2009, 21:42

Hmmm les Supervariables ($_GET, $_POST, $_SESSION, $_FILES) passe les barrières des fonction normalement...

Re: Function pour upload

par fab » 11 nov. 2009, 21:40

Effectivement tu ne peux pas! Les noms de variables ainsi placées dans la déclaration de la fonction auront une portée interne à la fonction rien de plus et là tu essayes de passer une variable qui correspond à une variable globale donc réservé par php! Il faut donc que dans ta déclaration tu changes le nom mais lors de l'utilisation de ta fonction tu es libre de transmettre ce que tu veux :)

Function pour upload

par guigui69 » 11 nov. 2009, 21:25

bonsoir à tous,

je voudrait mettre dans une fonction une fonction upload:
function upload_image($dossier,$_FILES['image_fichier'])
{
if ( $dossier == null || $_FILES['image_fichier'] == null) 
{
echo "erruer";
}
else
{
$fichier = basename($_FILES['image_fichier']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['image_fichier']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_fichier']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['image_fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
	 
			//$'image_fichier'= $dossier.$fichier;
			$'image_fichier'=$fichier;
			chmod("../img/galerie/$'image_fichier'", 0644);
			//echo $'image_fichier';
          echo 'Upload effectué avec succès !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
}
}
mais cela bloque:
Parse error: syntax error, unexpected '[', expecting ')' in D:\Program Files\UwAmp\www\4dm1n\fonction\fonction_admin.php on line 8

On ne peut pas mettre dans une fonction ceci: $_FILES['image_fichier'] ???

Merci d'avance

guigui69