Problème avec mkdir et upload - PHP - Programmation
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é 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();
}
?>
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???
Marsh Posté le 16-03-2006 à 16:21:21
dwogsi a écrit : Ca te met quoi comme erreur? |
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
Marsh Posté le 16-03-2006 à 16:22:00
dwogsi a écrit : Ca te met quoi comme erreur? |
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.
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.
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 lutilisateur).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 lutilisateur avec la commande mkdir.Pour ça pas de problème.Donc le problème cest que le logo de lutilisateur ne va pas dans le nouveau répertoire car les deux actions(création dun répertoire au nom de lutilisateur et upload du logo de lutilisateur 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 quelquun pourrait maider?
Merci
STEF