Formulaire d'envoi fichiers et texte

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 : Formulaire d'envoi fichiers et texte

par Jackisback » 07 juil. 2008, 16:33

Je me suis mal exprimé,

Le formulaire à remplir pour l'envoi de la news / du fichier fonctionne.

Le formulaire de réception / vérification à l'air de fonctionné.

Ce qui ne va pas c'est l'insertion du résultat dans ma BDD.

Explication:

Une personne se log, rempli le formulaire et envoi une news ou un fichier.
Une autre personne arrive et vois sur la page d'accueil la toute nouvelle news (ce script est bon je l'ai fait il fonctionne)

Donc j'aimerais modifié le script de la page reception.php de telle façon que lorsque la personne clique sur envoyer cette page vérifie tout ce qui doit l'etre et ensuite l'insert dans Mysql avec par ex. une adresse pour le fichier envoyé, le titre de la news, la description ...

Voilà, j'espère avoir été un peu plus clair ...

Désolé.

Re: Formulaire d'envoi fichiers et texte

par Ryle » 07 juil. 2008, 15:47

Si vous avez une idée, elle serait la bienvenue ...
Euh.... tu veux une idée sur quoi éxactement ? :)

Tu sais comment te connecter à une base mysql ? comment faire une requête insert ? tu cherches des tutos ? des explications sur un point particulier ? tu as une requête qui ne fonctionne pas ? ...

Formulaire d'envoi fichiers et texte

par Jackisback » 07 juil. 2008, 15:25

Bonjour,

J'ai fais plusieurs script (enfin j'ai repris des bouts à gauche à droite), d'inscription, de login, de gestion de fichiers ....

Mais j'ai un petit problème un peu sur tous ....

Je vais commencer par le premier:

Mon formulaire d'envoi de "news" si je peux dire ... c'est un formulaire dans lequel on doit renseigner le champ PSEUDO et PASS pour que l'ajout en BDD soit accepté.
Dans ce form on peut joindre un fichier, on doit préciser le titre, un petit descriptif, etc ...

Voici le script du formulaire d'envoi:
<link rel="stylesheet" media="screen" type="text/css" title="Envoi" href="envoi.css" />

<form method="POST" action="reception.php" enctype="multipart/form-data">

<fieldset>
       <legend>LOGIN</legend> <!-- Titre du fieldset -->		
	<p> <label for="pseudo">Votre pseudo :</label><br />
	<input type="text" name="pseudo" value="" id="pseudo"/> </p>
	<!-- 	Essayez de cliquer sur le texte "Votre pseudo" : vous allez voir que le curseur se place automatiquement dans la zone de texte correspondante.
		On a "lié" le label avec sa zone de texte pour qu'on sache à quoi il correspond. -->
		
	<p> <label for="pass">Votre mot de passe :</label><br />
	<input type="password" name="pass" id="pass" /> </p>
</fieldset>
<p>
<fieldset>
       <legend>POSTEZ VOTRE ARTICLE</legend> <!-- Titre du fieldset -->
	<p> <label for="titre">Le titre de votre article :</label><br />
	<input type="text" name="titre" id="titre"/> </p>
	
	<p> <label for="rub_article">Dans quelle rubrique se situe votre article :</label><br />
       <select name="rubrique" id="rub_article">
           <option value="aluminium">Aluminium</option>
		   <option value="appel_temoin">Appel à témoins</option>
		   <option value="association">Association</option>
           <option value="demarches">Démarches</option>
		   <option value="fibro">Fibromyalgie</option>
		   <option value="metaux">Métaux</option>
           <option value="methodes_bienf">Méthodes bienfaisantes</option>
		   <option value="reconnaissance">Reconnaissance de la Fibro</option>
           <option value="temoignage">Témoignages</option>
           <option value="vaccination">Vaccination</option>		    	   
       </select>
   </p>
	
	<label for="commentaire">Commentaire relatif à l\'article :</label> <br />
	<textarea name="message" rows="8" cols="45" id="commentaire">ICI</textarea>

<p>
<!--   	<form method="POST" action="reception.php" enctype="multipart/form-data">        -->
		<!-- On limite le fichier à 10 000Ko -->
		<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
		<label for="fichier">Sélectionnez votre fichier :</label><br />
		<input type="file" name="fichier" id="fichier">
	
	<p><input type="submit" name="envoyer" value="Poster le message / fichier"></p>
	<p><input type="reset" value="Effacer les champs" /></p>
	</form>
</p>
</fieldset></p>
Voici le script du formulaire de reception et vérification:
<link rel="stylesheet" media="screen" type="text/css" title="Envoi" href="envoi.css" />

	<?php
	mysql_connect("localhost", "root", ""); //Connexion à MySQL
	mysql_select_db("abcfibromyalgie"); // Sélection de la base

$dossier = 'fichiers_upload/';
$fichier = basename($_FILES['fichier']['name']);
$taille_maxi = 10000000;
$taille = filesize($_FILES['fichier']['tmp_name']);
$extensions = array('.png', '.bmp', '.gif', '.jpg', '.jpeg', '.pdf', '.doc', '.xls', '.txt');
$extension = strrchr($_FILES['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 envoyer un fichier de type png, bmp, gif, jpg, jpeg, pdf, doc xls ou txt...';
}
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['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Transfert effectu&eacute avec succ&egraves !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec du transfert !';
}
}
else
{
echo $erreur;
}
?>

<p>Je sais comment tu t appelles. Tu t appelles <?php echo $_POST['pseudo']; ?> !</p>
<p>Je connais le titre de ton article, c'est <?php echo $_POST['titre']; ?> !</p>
<p>Je sais ce qu'il contient. Voici ton commentaire <?php echo $_POST['message']; ?> !</p>
<p>Je connais la rubrique dans laquelle tu l'as mis, c'est <?php echo $_POST['rubrique']; ?> !</p>
Bon les lignes que j'ai ajouté en bas, c'était juste pour moi pour vérifier que l'envoi des variables fonctionnait, et c'est le cas ... ouf ...

Maintenant le soucis c'est pour l'injection en BDD Mysql ...

Voici le script pour ma BDD:
-- 
-- Structure de la table `fichier`
-- 

CREATE TABLE `fichier` (
  `up_id` int(10) unsigned NOT NULL auto_increment,
  `up_filename` varchar(20) character set utf8 collate utf8_bin default NULL,
  `up_filesize` int(10) unsigned default '0',
  `up_title` varchar(50) character set utf8 collate utf8_bin default NULL,
  `up_description` varchar(255) character set utf8 collate utf8_bin default NULL,
  `up_finalname` varchar(50) character set utf8 collate utf8_bin default NULL,
  `up_filedate` datetime default NULL,
  `up_mid` int(5) default '0',
  `login` varchar(64) character set utf8 collate utf8_bin NOT NULL,
  PRIMARY KEY  (`up_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Si vous avez une idée, elle serait la bienvenue ...

Après je sais que le script peut etre ameliorer mais si deja l'injection fonctionne ... ce serait super ...

Merci d'avance ...