Aller au contenu

Vincent

  • billets
    15
  • commentaires
    4
  • visualisations
    62 031

A propos de ce blog

comment faire?

Billets de ce blog

 

Creer dynamiquement les options d'un select en javascript

Aujourd'hui, voici une petite portion de code javascript qui vous aidera à creer dynamiquement, à partir d'un premier select, la liste des valeurs éligible sur le 2e select qui lui dépend. Ici, par exemple, nous allons créer dynamiquement la liste des départements correspondant à une région. (Je vous ai mis les valeurs des 2 premières régions seulement)
<html>
<head>
<title>test</title>
<script language="JavaScript">
function defRegion()
{
var frmRegion = document.getElementById("inscription");
var selRegion = document.getElementById("bc_reg");
var selDpt = document.getElementById("bc_dpt");
var indiceRegion = bc_reg.value;

// Temps que selDpt contient des noeuds...
while (selDpt.hasChildNodes())
{
// Supprime le premier noeud.
selDpt.removeChild(selDpt.firstChild);
}

//choix vide
var opt = document.createElement("option");
opt.setAttribute("value", "");
var itmText = document.createTextNode("Faites votre choix");
opt.appendChild(itmText);
selDpt.appendChild(opt);


// Suivant la région sélectionnée...
switch (indiceRegion)
{
case "1_s":

// Créé un noeud pour la liste.
var opt = document.createElement("option");
opt.setAttribute("value", 167);
var itmText = document.createTextNode("Bas-Rhin");
opt.appendChild(itmText);
selDpt.appendChild(opt);

var opt = document.createElement("option");
opt.setAttribute("value", 168);
var itmText = document.createTextNode("Haut-Rhin");
opt.appendChild(itmText);
selDpt.appendChild(opt);

break;

case "2_s":

// Créé un noeud pour la liste.
var opt = document.createElement("option");
opt.setAttribute("value", 124);
var itmText = document.createTextNode("Dordogne");
opt.appendChild(itmText);
selDpt.appendChild(opt);
var opt = document.createElement("option");
opt.setAttribute("value", 133);
var itmText = document.createTextNode("Gironde");
opt.appendChild(itmText);
selDpt.appendChild(opt);
var opt = document.createElement("option");
opt.setAttribute("value", 140);
var itmText = document.createTextNode("Landes");
opt.appendChild(itmText);
selDpt.appendChild(opt);
var opt = document.createElement("option");
opt.setAttribute("value", 147);
var itmText = document.createTextNode("Lot-et-Garonne");
opt.appendChild(itmText);
selDpt.appendChild(opt);
var opt = document.createElement("option");
opt.setAttribute("value", 164);
var itmText = document.createTextNode("Pyrénées-atlantiques");
opt.appendChild(itmText);
selDpt.appendChild(opt);

break;

}
}
</script>
</head>
<body onLoad="java script:defRegion();">
<FORM id="inscription" name="inscription">
<SELECT id="bc_reg" name="bc_reg" onChange="java script:defRegion();">
<optgroup label="Région">
<option value="1_s" selected="Selected">Alsace</option>
<option value="2_s">Aquitaine</option>
</SELECT>
<SELECT id="bc_dpt" name="bc_dpt">
</SELECT>
</FORM>
</body>
</html>

Vincent

Vincent

 

Sécurité de vos fichiers

Quelques règles sympathiques pour sécuriser les fichiers de votre serveur :
#Interdire l'acces au fichier config.php
<FilesMatch config.php>
deny from all
</FilesMatch>

#Blocage d'extension (Sécurité)
<FilesMatch "\.(inc|tpl|h|ihtml|sql|ini|conf|bin|spd|theme|module|exe)$">
deny from all
</FilesMatch>

#Caché la liste des dossiers
Options -Indexes

Vincent

Vincent

 

Php, MySQL & UTF-8 sont dans un bateau

Parmi les messages les plus postés sur le forum php ou xml, on s'aperçoit souvent qu'il est question de problème d'encodage. Il est vrai que les hieroglyphe é, ce n'est pas plaisant à voir sur nos jolies pages Ensuite, viens la réponse... qui est souvent du genre : "la solution est simple : on decode toutes les données qu'on reçoit en utf8 grâce à utf8_decode() et on encode tout ce qui doit sortir en utf8 grâce à utf8_encode().". Oui mais en fait, ce n'est pas si simple, car la fonction utf8_decode() est destructrice, cest à dire que les caractères dans la chaîne qui nont pas déquivalent en latin1 seront remplacés par un point dinterrogation. Mais que faire contre ces points d'interrogations? Lire l'excellent tutoriel utf-8 disponible chez fassnet.net. Je résume les principales actions a mener : Dans l'éditeur rajoutez la ligne suivante : <meta http-equiv="Content-type" content="text/html; charset=UTF-8"/> et verifiez bien que vous les enregistrez dans le codage utf-8 Sur votre Base de Donnée créez vos tables avec utf8_general_ci au lieu de latin_swedish... Dans vos scripts PHP rajoutez a la connexion de la base de donnée la derniere ligne:
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter");
@mysql_select_db("$bdd")
or die("Impossible de se selectionner la base");
mysql_query("SET NAMES 'utf8'");
En conclusion, il faut retenir que le moteur de PHP ne sait pas gérer l'UTF-8 (en fait, PHP ne supporte pas nativement l'Unicode, mais cela fera parti des nouveautés de PHP6). et que systèmatiquement il faut prévenir que l'on utilise l'UTF-8 à toutes les sources de données alimentant nos programmes (base de données, fichier externe, libellé dans le code du script etc...) Finalement, c'est pas si compliqué que cela !

Vincent

Vincent

 

Les variables serveur

Comme je cherche toujours comment elles s'appellent ces variables... je vais me les noter ici une bonne fois pour toute Chemin du script courant $_SERVER['PHP_SELF'] Nom du serveur $_SERVER['SERVER_NAME'] Variables passées au script $_SERVER['QUERY_STRING'] Document root $_SERVER['DOCUMENT_ROOT'] Référant $_SERVER['HTTP_REFERER'] Adresse ip de l'utilisateur $_SERVER['REMOTE_ADDR'] et la suite, sur le site officiel de php : variables prédéfinies

Vincent

Vincent

 

International Bank Account Number

IBAN est l'abréviation pour Internatinal Bank Account Number. Il s'agit d'un numéro de compte répondant au normes internationales ISA, désignant sans aucune ambiguïté une relation de compte dans les opérations de paiement transfrontalière entre pays européens. l'IBAN doit être considéré comme une "enveloppe" internationalement reconnue à laquelle les numéros de compte existantes peuvent être intégrés. l'IBAN a une longueur maximale de 34 caractères alphanumériques : les deux premières lettres identifient le pays de tenue du compte.
les deux chiffres suivants contiennent le chiffre de contrôle qui permet de vérifier l'exactitude formelle du numéro IBAN.
La dernière partie comporte des informations locales, telles que lidentification de létablissement ou le numéro de compte.
Afin daméliorer la lisibilité en cas de présentation sur papier, lIBAN est divisé en groupes de quatre. Exemple dun IBAN suisse représenté sur papier: CH35 0023 0230 5042 2318 T Voilà pour le coté théorique, en pratique, voici l'algorithme du calcul de la clé de controle : Créer un code IBAN articiel, composé du code du pays (ISO 3166), suivi de "00" et du compte bancaire.
Déplacer les 4 premiers caractères de l'IBAN vers la droite du numéro.
Convertir les lettres en chiffres, conformément à la table de conversion (A=10, Z=35)
Appliquer le modulo 97 et retrancher le reste de 98.
Si le résultat comporte 1 seul chiffre, inserer un 0 devant.
Insérer le résultat ainsi obtenu à la position 3 de l'IBAN articiel créé auparavant (ce qui reviens a remplacer les 2 zéros)
Maintenant que vous savez tout sur l'IBAN, a vous de bosser Voici la procédure Uniface que j'utilise pour le controle de l'Iban Je vous laisse le soin de la transcrire en dans votre langage préféré
;--------------------------------------------------------------
; LP_IBAN
;--------------------------------------------------------------
ENTRY LP_IBAN
variables
numeric lv_mod, lv_cle
string lv_iban
string lv_cbanq, lv_cgui, lv_cptban, lv_rib
endvariables

; Dans le principe de l'IBAN, d'abord on met a la suite les champ du compte bancaire precede du pays et de 00
; avant de calculer ce qui va supplanter le "00" (qui sera la clé de controle)

lv_cbanq = cbanq
call LP_COMPLETER(lv_cbanq,5)
lv_cgui = cgui
call LP_COMPLETER(lv_cgui,5)
lv_cptban = cptban
call LP_COMPLETER(lv_cptban,11)
lv_rib = rib
call LP_COMPLETER(lv_rib,2)

; on pourrait faire plus simple mais cette manipulation a le mérite de rendre plus clair le découpage IBAN

iban1 = "FR00"
iban2 = lv_cbanq[1:4]
iban3 = "%%lv_cbanq[5:1]%%%%%lv_cgui[1:3]%%%"
iban4 = "%%lv_cgui[4:2]%%%%%lv_cptban[1:2]%%%"
iban5 = lv_cptban[3:4]
iban6 = lv_cptban[7:4]
iban7 = "%%lv_cptban[11:1]%%%%%lv_rib%%%"

; calcul de la clé : Phase 2 (déplacement du iban1 vers la fin)
lv_iban = "%%iban2%%%%%iban3%%%%%iban4%%%%%iban5%%%%%iban6%%%%%iban7%%%%%iban1%%%"

; calcul de la clé : Phase 3 (Remplacement des lettres par des chiffres)
lv_iban = $replace(lv_iban, 1, "A", "10", -1)
lv_iban = $replace(lv_iban, 1, "B", "11", -1)
lv_iban = $replace(lv_iban, 1, "C", "12", -1)
lv_iban = $replace(lv_iban, 1, "D", "13", -1)
lv_iban = $replace(lv_iban, 1, "E", "14", -1)
lv_iban = $replace(lv_iban, 1, "F", "15", -1)
lv_iban = $replace(lv_iban, 1, "G", "16", -1)
lv_iban = $replace(lv_iban, 1, "H", "17", -1)
lv_iban = $replace(lv_iban, 1, "I", "18", -1)
lv_iban = $replace(lv_iban, 1, "J", "19", -1)
lv_iban = $replace(lv_iban, 1, "K", "20", -1)
lv_iban = $replace(lv_iban, 1, "L", "21", -1)
lv_iban = $replace(lv_iban, 1, "M", "22", -1)
lv_iban = $replace(lv_iban, 1, "N", "23", -1)
lv_iban = $replace(lv_iban, 1, "O", "24", -1)
lv_iban = $replace(lv_iban, 1, "P", "25", -1)
lv_iban = $replace(lv_iban, 1, "Q", "26", -1)
lv_iban = $replace(lv_iban, 1, "R", "27", -1)
lv_iban = $replace(lv_iban, 1, "S", "28", -1)
lv_iban = $replace(lv_iban, 1, "T", "29", -1)
lv_iban = $replace(lv_iban, 1, "U", "30", -1)
lv_iban = $replace(lv_iban, 1, "V", "31", -1)
lv_iban = $replace(lv_iban, 1, "W", "32", -1)
lv_iban = $replace(lv_iban, 1, "X", "33", -1)
lv_iban = $replace(lv_iban, 1, "Y", "34", -1)
lv_iban = $replace(lv_iban, 1, "Z", "35", -1)

; calcul de la clé : Phase 4 (modulo 97)
lv_mod = frac(lv_iban / 97) * 97
lv_cle = 98 - lv_mod[round]
iban1 = "FR%%lv_cle%%%"
END

Entry LP_COMPLETER
params
string p_num : inout
string p_max : inout
endparams
length p_num
while ($result < p_max)
p_num = "0%%p_num%%%"
length p_num
endwhile
return 0
End

Vincent

Vincent

 

controler la longueur d'un champs

Pour éviter de permettre à vos visiteurs de lancer une recherche dans vos tables avec 1 seul caractère comme critère, vous pouvez les obliger a saisir un minimum de caracteres en faisant un rapide contrôle en javascript :
<html>
<head>
<script>
function valider(monchamps){
var mini = 3
var maxi = 20
if ( mini != 0 ) {
// Si la longueur de la saisie est inférieure au minimum demandé
if ( monchamps.value.length < mini ) {
// Envoi d'une alerte
alert('Vous devez saisir au moins ' + mini + ' caracteres.');
return false
}
}
// Si la longueur de la saisie est supérieure au maximum demandé
if ( maxi != 0 ) {
if ( monchamps.value.length > maxi ) {
alert('Vous ne devez pas saisir plus de ' + maxi + ' caracteres.');
return false
}
}
}
</script>
</head>
<body>
<form name="form1" method="post" action="moteur.html">
<input type="text" name="motsclef" id="search" onBlur="valider(this)">
<input type="submit" value="Rechercher">
</form>
</body>
</html>
(et vous pouvez faire le meme controle en php du coté serveur pour les petits malins qui ont désactivé le javascript)

Vincent

Vincent

 

Référencez votre site !

Parmi les bonnes résolutions de la rentrée, n'oubliez pas d'ajouter votre site dans l'annuaire généraliste kiwoui. Vous y trouverez surement une rubrique qui vous intéressera parmi les nombreuses existantes (ex: agences immobilières ou télé-réalité) Si une rubrique n'existe pas, n'hesitez pas a la demander (même les concours seo sont acceptés et ont leur rubrique dédiée comme pour le loupanthère) Les derniers sites listés sont affichés sur la home, qui sera enrichie dès que possible (En fait, dès que j'aurais le temps de bosser sur quelques idées sympas... Cependant la rentrée scolaire n'est pas évidente mais c'est une autre histoire!) Sinon est-ce que vous êtes au courant qu'un nouveau blog sympa sur le référencement s'est ouvert il y a peu? Référencement, SEO, SEM, web marketing... Best Viewed With Googlebot (BVWG) vous dévoile les secrets de la visibilité dans Google et les autres outils de recherche.

Vincent

Vincent

 

Les annuaires

Petite note pour expliquer comment trouver des annuaires où référencer son site : Listes d'annuaires
Pour commencer efficace, voici 3 sites qui recensent les annuaires intéressants pour référencer votre site listes des annuaires sans liens de retour
annuaire info (attention méfiez vous, ne mettez pas de critère trop restrictif dans la selection, car les infos peuvent ne pas être justes.)
le repertoire
[*]critères d'un bon annuaire Pour rappel, on considère qu'un annuaire est bon pour votre référencement si: il fait des liens en dur
le lien de retour est facultatif
la gestion est attentive et sérieuse (visitez quelques pages de l'annuaire pour vous faire une idée, ex: Kiwoui, les pages du Hub sont sérieux)
pas trop du publicité, pas trop de sites par page
[*]Trouver un annuaire a thème là, le plus rapide est de visiter un portail sur le thème et de chercher des liens vers un éventuel annuaire ou directement taper la requete qui vous intéresse sur google avec le mot 'annuaire' dedans. exemple : des annuaires pour la piscine (coucou Lafleur), ou encore pour la littérature ou enfin annuaire gironde Une autre méthode est d'espionner le référencement d'un de vos concurrents (exemple tapez linkdomain:siteconcurrent.com dans msn) et de vous y inscrire sur toutes les pages des annuaires comportant votre concurrent )

Vincent

Vincent

 

problème de validation avec Php Link Directory

Petit mot sur un problème dont la solution me parait insatisfaisante... Concernant le script Phplinkdirectory pour les annuaires, certaines soumissions échouent sur le problème de la vérification draconnienne de la validité de l'url proposée : Nous avons essayé d'etudier un peu le problème avec les spécialistes du sujet validation formulaire V2 - PHP Link Directory Forum mais sans succès. le seul palliatif trouvé a été de désactiver ce fichu test comme il suit : Donc dans tous les cas, maintenant, vous n'avez plus d'excuses pour ne pas avoir ajouté votre site dans l'annuaire généraliste Kiwoui ! Plus aucun site ne tombera en erreur a la soumission

Vincent

Vincent

 

La parabole des langages de Shelley Powers

Dans le Pré des Rumeurs, aux heures troubles du crépuscule, quand on n'entend que le bruissement des oiseaux et le léger vrombissement des moucherons, les langages de programmation se rencontraient. Et parlaient. La conversation commençait comme elle a toujours commencé, sur des sujets profonds et sérieux, sur le coeur existentiel qui fonde tous les langages. Est-ce que j'existe ou non ? Dans cette boucle infinie de vie, quel est le but ? Où dois-je aller, et qu'y faire une fois que j'y suis ? Qu'arrive-t-il après la fin ? (Ce n'est pas simple d'être un langage de programmation, condamné à se contempler soi-même, jour après jour) Cependant, au bout d'un moment, les langages se détendaient. Le Pré aux Rumeurs possédait ce je-ne-sais-quoi qui pénètre les coeurs et les âmes, qui assouplit leurs tâches et ouvrent leurs paramètres. Le Pré aux Rumeurs était magique, pas de doute. Mais ce jour-là, le groupe était singulièrement silencieux, parce qu'un de leurs membres, PHP, n'avait pas l'air dans son assiette. Qu'est-ce ne va pas, PHP ? demandèrent les autres langages. Enfin, tous les langages sauf le C, parce que C ne disait jamais rien d'autre que « Dégage ! ». C était un langage rude et difficile à vivre, mais respecté à cause de sa grande forcede travail. Et PHP répondit : Et après cette lugubre constatation, PHP sombra dans un silence contemplatif et une tristesse lourde. Tu crois que ça va mal, dit C++. Essaie de te mettre à ma place. Tous les langages hochèrent la tête, parce qu'ils connaissaient la sensibilité du C++. De fait, Perl fut si ému par l'éloquence de C++ qu'il se sentit contraint de parler, alors qu'en général il s'asseyait tranquillement dans un coin, consommant avidement les expressions. Comme Perl finissait, Python et Ruby se regardèrent en roulant des yeux. Avec toutes ces histoires d'association, Perl aurait au moins pu faire des rimes ! Fortran tapota l'épaule de Perl de sa main flétrie. Comme le râle de Fortran touchait à sa fin, Cobol acquiesça avec emphase, mais il ne pouvait pas parler, à cause du tube à oxygène. (Les autres langages en étaient secrètement soulagés, COBOL radotait un peu trop souvent sur le bon vieux temps). C'est alors que la marée des plaintes monta, et le bruit des voix s'accrut sans cesse, au point que les écureuils sortirent de leurs trous et que les oiseaux les dévisagèrent depuis le bord de leur nid. Le calme vallon n'était plus calme du tout. Et moi alors, s'exclama Pascal ! Je ne suis plus utilisé qu'en cours ! À quoi sert un langage d'apprentissage ? Et moi alors, dit SNOBOL. Personne n'a même jamais entendu parler de moi ! Et moi alors, dit C#. Je ressemble à Prince ! Dégagez, dit le C. Lisp aurait parlé, mais il avait aperçu un reflet de lui-même dans la mare et y était tombé en essayant de se rencontrer soi-même. Et Java était trop occupé à ramasser des ordures dans la Crique des Rumeurs. La vague de bruit s'enfla sans cesse, et le babillage se propagea à travers le Pré, quand tout à coup une voix rugit depuis les arbres. Les langages s'arrêtent de parler. Qui était-ce donc ? Ils se comptèrent et se trièrent par ordre alphabétique (C++ dut placer Basic, qui n'avait jamais appris l'alphabet), ils se recomptèrent et parvinrent tous à la même conclusion. Tous les langages étaient présents. L'énigme restait entière, quand soudain les buissons s'écartèrent et XML surgit dans la lumière. XML soupira, et tous les langages, ému par son désespoir, se regroupèrent autour de lui ; Puis se jetèrent sur ce petit XML, le jetèrent dans la poussière, le piétinèrent sans relâche. Oui, ils l'écrasèrent dans la poussière. Basic frappa XML, C++ le bourra de coups, et Java nettoya et piétina et nettoya et piétina. COBOL voulut donner un coup de pied dans la tête de XML, mais tomba sur sa canne. Même LISP s'extirpa de la mare et jeta ses mains de détraqué autour de la gorge de XML, mais ne réussit qu'à s'étrangler lui-même. Chaque langage marmonnait en rouant XML de coups, et dans leurs yeux se lisait une jubilation extrème. Trouvé sur linuxfr.org Historique des langages informatiques

Vincent

Vincent

 

conseils de bon sens 2006

Le référencement évolue au fil du temps qui passe. Mais voilà quelques nouvelles fraiches pour ce milieu d'année 2006 avec les vidéos de Matt Cuts. Comme j'ai trouvé le billet de Jean-Luc très bien fait: clair, précis, je vous invite a lire son résumé des vidéos et d'appliquer ces quelques lignes qui sont en fait un condensé de bon sens. Important, et a ne pas oublier dans la checklist!

Vincent

Vincent

 

Liste des forums

Voici une liste de forums écrits en Php, installable sur votre site dynamique pour créer votre communauté : Invision Power Board
Vbulletin
PhpBB
XMB Forums
Simple Machines Forum
Fire Soft Board
Unclassified News Board
PunBB
Lussumo Vanilla
Voilà, maintenant, plus d'excuses pour dire que vous ne trouvez pas de forums pour votre site parce que IPB est trop cher, phpbb fait trop peur, punbb trop léger etc...

Vincent

Vincent

 

creer une galerie d'images avec XnView

Voici un mini guide avec le logiciel XnView pour que nos petits webmestres débutants puissent mettre en ligne facilement leur photos. Tout d'abord, il est préférable de creer un dossier de travail avec une copie de vos photos originales. Une fois le dossier créé sur votre ordinateur, ouvrez XnView. Vous êtes normalement en mode "explorateur", allez sur votre dossier avec vos photos. Sélectionnez vos photos à inclure dans votre future galerie et cliquez dans le menu : Outils > Page Internet (Ctrl + G) Vous arrivez sur la boite de dialogue du logiciel XnView pour parametrer votre galerie d'image HTML. Tout en haut, il vous est indiqué le chemin du dossier où se trouvent les templates XnView, qui serviront de base pour creer les pages. Vous pouvez modifier ces templates, ou en créer de nouveaux. Ensuite, chaque cadre vous permet d'affiner le contenu de votre galerie: Dans le cadre 'divers', on renseigne les paramètres de la page.
Dans le cadre 'informations affichées', vous avez une liste déroulante d'informations disponibles concernant vos photos. Vous pouvez les selectionner pour mettre ces informations en légendes de vos photos.
Dans le cadre 'vignette', vous pouvez parametrer la génération automatique des vignettes.
Dans le cadre 'image', quelques paramètres pour définir la taille des photos et si vous voulez des pages spécifiques pour celles-ci.
Dans le cadre 'destination', vous spécifiez là ou Xnview doit generer les pages de votre galerie.
voilà, il vous reste plus qu'à mettre en ligne votre galerie avec un logiciel FTP. Voici quelques exemples avec : quelques photos de travaux manuels du mercredi après midi
dessert au barbecue
départ du paquebot de Bordeaux

Vincent

Vincent

 

decoupage automatique d'un fichier de données

Parfois, pour ceux qui n'ont pas la chance ou les moyens (ou même l'envie) d'avoir un bon serveur dédié. Un problème récurrent est de manquer de puissance pour traiter de gros fichiers sans dépasser les temps de traitements, les quotas de mémoire etc... Voici donc un petit script qui découpe vos fichiers en plusieurs petits fichiers. (ici je m'en sers pour traiter des données sur nos 36000 communes)
<?php

$source="insee";
$extsrc=".csv";
$destination = "insee";
$extdest=".csv";
$nblignes = 2500;

if($f=fopen($source.$extsrc,'r')){
$i = 0;
$j = 1;
$d=fopen($destination.$j.$extdest,'w');
echo "on ecrit dans le fichier : ".$destination.$j.$extdest."</br>\n";
while (!feof($f)) {
$i = $i+1;

if($i<$nblignes){
fputs($d,fgets($f, 4096));
}
else
{
fputs($d,fgets($f, 4096));
fclose($d);
$j = $j + 1;
$d=fopen($destination.$j.$extdest,'w');
echo "on ecrit dans le fichier : ".$destination.$j.$extdest."</br>\n";
$i=0;

}
}
fclose($f);
fclose($d);
}

?>

Vincent

Vincent

 

Comment envoyer un fichier sur un serveur?

Voici un petit exemple basique en Php de ce que l'on peut savoir sur un fichier envoyé par formulaire :
<?php /* Date de création: 09/07/2006 */
$fichier = $_FILES['fichier']['name'];
$size = $_FILES['fichier']['size'];
$tmp = $_FILES['fichier']['tmp_name'];
$type = $_FILES['fichier']['type'];
$error = $_FILES['fichier']['error'];
$max = 1000000;

if(isset($fichier)) {
if($size <= $max) {
echo 'Nom d\'origine =>'.$fichier.'<br />';
echo 'Taille =>'.$size.'<br />';
echo 'Nom sur le serveur =>'.$tmp.'<br />';
echo 'Type de fichier =>'.$type.'<br />';
echo 'Code erreur =>'.$error.'<br />';
} else {
echo 'Le fichier est trop volumineux';
}
}
else {
echo 'aucun fichier envoyé';
}

?>
<form enctype="multipart/form-data" action="upload.php" method="post">
<input name="fichier" type="file">
<input type="submit" value="send" name="bouton">
</form>

Vincent

Vincent

×