Problème avec mkdir et upload

Problème avec mkdir et upload - PHP - Programmation

Marsh Posté le 16-03-2006 à 11:19:42    

Bonjour,
Sur mon site j'ai un formulaire d'inscription.Dans ce formulaire il y a des champs comme le nom,adresse,etc.Il y a aussi un champs file pour pouvoir uploader son propre logo(le logo doit aller dans le nouveau répertoire qui va être créé en même temps au nom de l‘utilisateur).Après l`avoir remplis et validé,les données sont envoyées dans une base de données.En même temps cela cré un répertoire sur le serveur au nom de l‘utilisateur avec la commande mkdir.Pour ça pas de problème.Donc le problème c‘est que le logo de l‘utilisateur ne va pas dans le nouveau répertoire car les deux actions(création d‘un répertoire au nom de l‘utilisateur et upload du logo de l‘utilisateur dans le nouveau répertoire)sont trop proches donc quand le logo doit être uploader dans le nouveau répertoire il ne trouve pas le chemin.
Est-ce que quelqu‘un pourrait m‘aider?
Merci
STEF

Reply

Marsh Posté le 16-03-2006 à 11:19:42   

Reply

Marsh Posté le 16-03-2006 à 11:21:56    

sans code c'est difficile...

Reply

Marsh Posté le 16-03-2006 à 15:17:01    

Voici une partie de mon code en php:
.
.
if(isset($_POST['utilisateur']))      $utilisateur=$_POST['utilisateur'];
else      $utilisateur="";
if(isset($_POST['motdepasse']))      $motdepasse=$_POST['motdepasse'];
else      $motdepasse="";
mkdir($utilisateur);
// On vérifie si les champs sont vides
if(empty($nom) OR empty($titre) OR empty($adresse) OR empty($zip) OR empty($city) OR empty($city) OR empty($area) OR empty($pays)  OR empty($telephone) OR empty($vousetes) OR empty($factrad) OR empty($activite) OR empty($utilisateur) OR empty($motdepasse))
    {
    echo '<font color="red">Attention, vous avez oubli&#233; de remplir certains  champs !</font>';
    print '<p align="center"><a href="javascript:history.back()">RETOUR</a>';  exit;
 }
elseif( $motdepasse != $motdepasse1)
{
 echo 'Les mots de passe ne sont pas identiques, <a href="javascript:history.back(1)">Retour au formulaire</a>';
   }
// Aucun champ n'est vide, on peut enregistrer dans la table
else      
    {
       // connexion à la base
$db = mysql_connect('localhost', 'inter4869', 'stefmorgan24')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  
 
    mysql_select_db('inter4869',$db)  or die('Erreur de selection '.mysql_error());
     
    // on écrit la requête sql
    $sql = "INSERT INTO fournisseur(nom,creer,titre,contact,fonction,adresse,zip,city,area,pays,telephone,fax,mobile,email,site,vousetes,
 factrad,activite,asia,europe,america,others,chiffaffaiexpor,destock,utilisateur,motdepasse,datefournisseur) VALUES('$nom','$creer','$titre','$contact','$fonction','$adresse','$zip','$city','$area','$pays','$telephone','$fax','$mobile','$email','$site','$vousetes','$factrad','$activite','$asia','$europe','$america','$others','$chiffaffaiexpor','$destock','$utilisateur','$motdepasse','$datefournisseur')";
  if(!empty($logo))
 {
$query="SELECT * FROM `fournisseur` WHERE `utilisateur` LIKE '$utilisateur'";
$result=@mysql_query($query);
$row=@mysql_fetch_row($result);
$ext = ".jpg";
$babu= $utilisateur;
echo $babu;
$nom_image=("1".$ext);
 
$chemin = "$babu/".$nom_image;
echo $chemin;
 
move_uploaded_file($_FILES['logo']['tmp_name'],$chemin);
 
 }    
   
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
     
    echo 'Vos infos on ete ajoutees.';
 
    mysql_close();  
    }  
?>

Reply

Marsh Posté le 16-03-2006 à 16:05:54    

Ca te met quoi comme erreur?
T'est sûr que ça ne serait pas plutôt un problèmes de droits???

Reply

Marsh Posté le 16-03-2006 à 16:21:21    

dwogsi a écrit :

Ca te met quoi comme erreur?
T'est sûr que ça ne serait pas plutôt un problèmes de droits???


 
Yup, si on avait les messages d'erreur ce serait plus simple  :)  
 
Cela-dit, quelque remarques (securite) sur ton script :
 
- en utilisant  $utilisateur comme valeur pour cree ton repertoire et pour determiner le  
chemin d'upload ($babu= $utilisateur;$nom_image=("1".$ext); $chemin = "$babu/".$nom_image; ),  
tu laisses a l'utilisateur la possibilite d'uploader des fichiers la ou il veut (ex: $utilisateur = ../../truc)
 
- avant insertion de valeurs dans ta base ($nom, $titre..), tu dois verifier non seulement qu'elles ne sont pas vides,
mais aussi qu'elles ne contiennent pas de caracteres speciaux qui permettraient a un utilisateur de modifier ta requete
SQL (injection SQL)  
 
En conclusion tu dois FILTRER les valeurs fournies par l'utilisateur (regex) si tu veux eviter des gros pb de securite

Reply

Marsh Posté le 16-03-2006 à 16:22:00    

dwogsi a écrit :

Ca te met quoi comme erreur?
T'est sûr que ça ne serait pas plutôt un problèmes de droits???


Cela me met que les données ont bien été rajoutées.Effectivement les données vont bien dans la base de données.Le repertoire est bien créé.Mais le logo ne va pas dans le repertoire.

Reply

Marsh Posté le 16-03-2006 à 16:24:35    

Essais juste de remplacer
mkdir($utilisateur);
par
mkdir($utilisateur,777);
 
Edit :
Et tiens compte de ce qu'a posté Woutcha.
Et explique moi aussi pourquoi tu veux créer un répertoire par utilisateur? Quand on utilise une base de données, ce n'est généralement pas utile sauf cas particuliers.


Message édité par dwogsi le 16-03-2006 à 16:26:21
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed