Upload de fichier relié à user connecté

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 : Upload de fichier relié à user connecté

Re: Upload de fichier relié à user connecté

par AB » 03 juin 2012, 18:28

Bonjour,

Eh, crois pas t'en tirer à si bon compte :twisted:

Si ça fonctionne ce n'est pas le genre de code qu'on met en phase d'exploitation.

1/ Déjà il faut protéger les variables utilisées dans tes requêtes avec mysql_real_escape_string.
$titre = mysql_real_escape_string($_POST['t']);
Et comme pour utiliser cette fonction il faut une connexion ouverte cela va te faire modifier un peu l'ordre de ton code (sinon php te renverra une erreur)

2/ Les cookies ne sont pas le meilleur moyen pour sécuriser une session, on utilise normalement des variables de session. Surtout qu'en plus, d'après ce que j'ai compris de ton code, $_COOKIE['NumEtu'] est toujours identique... Est-tu certaine de la sécurité de ton code ?

3/ Ton script d'upload ne gère aucune erreur et il peut y en avoir, notamment si la taille du mémoire téléchargé dépasse les valeurs d'upload autorisées par le serveur. Pour peu qu'un mémoire contienne plusieurs photos non optimisées pour le web, ça arrivera assez facilement et dans ce cas tu auras en retour une page blanche sans explication utile pour l'utilisateur.
Pour mieux comprendre les types d'erreurs et comment les gérer un tuto ici.

Re: Upload de fichier relié à user connecté

par DansTesReves » 02 juin 2012, 21:51

Merci, j'ai enfin réussi grâce à vous !
Pardon pour mes (nombreuses) maladresses, vous avez de la patience pour gérer les cas comme moi, merci :oops:
Bonne soirée à vous :D

Re: Upload de fichier relié à user connecté

par xTG » 02 juin 2012, 20:42

$liaison est une chaîne de caractère. Faudrait peut être l'envoyer au SGBD maintenant...
mysql_query() ! ;)
Je te recommande une bonne nuit de sommeil afin d'éviter de nouvelles erreurs bêtes comme celles là.

Re: Upload de fichier relié à user connecté

par DansTesReves » 02 juin 2012, 20:36

<?php
session_start();
if(!isset($_COOKIE['NumEtu'])) {header("Location: connexion.php");}
?> 
<form action="verser_memoire.php" method="post" enctype="multipart/form-data">
  <p>Titre du mémoire : <input type="text" size=50 name="t"/></p>
 <p> Résumé du mémoire : <textarea name="r" cols="50" rows="5"></textarea>  </p>
  <p> Mot-clef : <select name="m"> </p>
  <option value="IDE">IDE</option>
  <option value="ARI">ARI</option>
  <option value="EIE">EIE</option>
  </select> <p>
  <p> Document à charger : <input type="file" name="d"/> </p>
  <input type="submit" value="Valider"/>
  <input type="reset" value="Annuler"/>
  </form>
<?php
   
if(!empty($_POST['t']) || !empty($_POST['r']) || !empty($_POST['m']) || !empty($_POST['d'])) {

	$titre = $_POST['t'];
	$resume = $_POST['r'];
	$motclef = $_POST['m'];
	$document = $_FILES['d'];

$fic=$_FILES['d'];	
$n_fic=basename($fic['name']);
$ref_fic=$n_fic;
 
$fic_destination = "../memoires/". $ref_fic ;
if (!move_uploaded_file($fic['tmp_name'],$fic_destination)) {
echo "Erreur de téléchargement !!";
exit();
}

$req="Insert into memoire values ('', \"$titre\", \"$resume\", \"$motclef\", \"$ref_fic\")";

$connexion=mysql_connect("localhost","root","");
if (!$connexion)
{echo "Il y a eu un problème de connexion. Merci de  vérifier vos paramètres de connexion puis de réessayer. <br>";
exit();} 

if (!mysql_select_db("baseasso2",$connexion))
{echo "Problème de sélection de base. Merci de vérifier le nom de votre base <br>"   ;
exit();}

$resultat=mysql_query($req,$connexion);
if (!$resultat)
{echo "Il y a un problème avec la requête '$req'. <br>";
exit();}

$liaison='INSERT INTO  ecrit
VALUES ("'.mysql_insert_id().'", "'.$_COOKIE['NumEtu'].'", "")';
}
?> 
Merci !!!

Re: Upload de fichier relié à user connecté

par AB » 02 juin 2012, 20:33

Ben oui mais il faudrait nous montrer ton nouveau code...

Re: Upload de fichier relié à user connecté

par DansTesReves » 02 juin 2012, 20:32

$liaison='INSERT INTO  ecrit
VALUES ("'.mysql_insert_id().'", "'.$_COOKIE['NumEtu'].'", "")';
}
Mais euh !!!
Alors maintenant ça re-fonctionne (plus de message d'erreur) mais j'ai tjs pas de lien entre mon mémoire et mon compte user :cry:
Donc soit j'ai merdouillé avant, soit je suis trop ... fatiguée :wink:

Re: Upload de fichier relié à user connecté

par xTG » 02 juin 2012, 20:24

Les points ! Les points ! :P
Le point est l'opérateur de concaténation en PHP.

Re: Upload de fichier relié à user connecté

par DansTesReves » 02 juin 2012, 20:22

$liaison='INSERT INTO  ecrit
VALUES ("'mysql_insert_id()'", "'.$_COOKIE['NumEtu'].'", "")';
}
Non, ça ne fonctionne toujours pas ...

Re: Upload de fichier relié à user connecté

par AB » 02 juin 2012, 20:15

Ecris (concatène) mysql_insert_id() de la même manière que $_COOKIE['NumEtu']

Re: Upload de fichier relié à user connecté

par DansTesReves » 02 juin 2012, 20:12

J'ai un message d'erreur : syntax error, unexpected T_STRING ...
$liaison='INSERT INTO  ecrit
VALUES ('mysql_insert_id()', "'.$_COOKIE['NumEtu'].'", '')';
}
Je ne sais pas où c'est, si c'est un problème de quotes ou de virgules et points virgules ... j'arrête pas de modifier ces "petits trucs" sans grand succès !

Re: Upload de fichier relié à user connecté

par DansTesReves » 02 juin 2012, 19:45

Tu peux récupérer l'id du dernier mémoire inséré avec mysql_last_insert_id().
Utilisé avec la valeur du cookie identifiant le visiteur tu auras de quoi faire une requête pour remplir ta table "ecrit" servant de jointure. :)
Hum ok j'ai jamais utilisé mysql_last_insert_id() mais je vais essayer de trouver (sinon je reviens crier à l'aide).

J'ai essayé avec ça :
$liaison='INSERT INTO  ecrit.NumMemoire, ecrit.NumEtu
VALUES (\"$ref_fic\", "'.$_COOKIE['NumEtu'].'")';
J'ai aucune erreur, mon mémoire s'enregistre tjs mais y'a tjs pas la liaison 8-|

Re: Upload de fichier relié à user connecté

par xTG » 02 juin 2012, 19:28

Tu peux récupérer l'id du dernier mémoire inséré avec mysql_last_insert_id().
Utilisé avec la valeur du cookie identifiant le visiteur tu auras de quoi faire une requête pour remplir ta table "ecrit" servant de jointure. :)

Re: Upload de fichier relié à user connecté

par DansTesReves » 02 juin 2012, 19:05

En fait, j'arrive maintenant à télécharger mon fichier dans le répertoire de destination, il apparait parfaitement dans ma base de données, mais il n'est relié à personne, c'est un mémoire sans auteur.
Mon problème c'est de faire en sorte que la personne connectée soit immédiatement associée au document qu'elle dépose.

Re: Upload de fichier relié à user connecté

par AB » 02 juin 2012, 17:44

Et elle est sensée représenter quoi cette variable $fic ?
Comment s'appelle l'input de type "file" définie dans ton formulaire et qu'en fais tu par la suite ?

Re: Upload de fichier relié à user connecté

par DansTesReves » 02 juin 2012, 16:28

Hum ici
$fic['Nom_Utilisateur']
Non ? Arffff je suis perdue :'(