PHP variable de session et url d'upload

Fermé
JEJEOS Messages postés 46 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 mai 2010 - 30 août 2009 à 21:25
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 - 15 avril 2011 à 20:55
Bonjour,

Dans mon site, j'ai une partie, ou l'utilisateur se logue pour pouvoir uploader des photos.
A l'inscription, un dossier avec son pseudo se crée, et lorsqu'il uploade des photos, elles vont dans ce dossier.

Seulement voila, j'ai un petit problème pour que les photos aillent dans ce dossier précis.

Je démarre ma session, et ensuite, dans le chemin d'upload des images( $uploadDir), je met le pseudo.

Seulement voila, les images ne vont pas dans ce dossier, mais restent dans le dossier supérieur (ou se trouvent les pages php).

Voici le code d'ouverture et de vérification de la session, ainsi que celui de l'upload des images :

<?php
$login=$_SESSION['login'];
session_start();

if (isset($_FILES['Filedata']['name'])) {

   $uploadDir = './'.$login.'/';

   $uploadFile = $uploadDir . basename($_FILES['Filedata']['name']);

   move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
} 

if (!isset($login)) {
	header ('Location: index.php');
	exit();
}
?>


Le problème se situe visiblement à ce niveau :
   $uploadDir = './'.$login.'/';


Mais je ne sait pas quoi faire, ...


Merci de me répondre.

Jérome
A voir également:

12 réponses

Bonjour

J'ai plutôt l'impression que le problème est dans le $_SESSION['login']. Y a-t-il bien un session_start() au début du script ?
As-tu fait un echo $uploadDir; pour vérifier s'il a bien la valeur que tu attends.
0
JEJEOS Messages postés 46 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 mai 2010 5
31 août 2009 à 18:52
Bonjour

Merci pour votre réponse !

Oui, j'ai bien fait un echo $uploadDir et j'obtiens la valeur souhaité.

D'ailleurs lorsque je met le nom du dossier dans $uploadDir (et pas une variable), le fichier va dans le dossier indiqué !

C'est a ne rien y comprendre !
0
Pardon, je n'avais pas remarqué le session_start().
Mais il est mal placé ! Si le $login=$_SESSION['login']; est AVANT le session_start, il ne peut pas marcher : tu ne peux pas récupérer une variable de session avant d'avoir démarré les sessions !

J'ai beaucoup, beaucoup de mal à croire que le echo $uploadDir te sorte une bonne valeur dans ces conditions.
0
JEJEOS Messages postés 46 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 mai 2010 5
1 sept. 2009 à 12:43
En fait, effectivement pour avoir la bonne valeur de l'echo j'ai du placer session_start() au dessus de $login=$_SESSION['login'];

Mais sa ne marche toujours pas. (l'upload ne se fait pas dans le dossier souhaité, sauf a le rentré manuellement, c'est à dire mettre $uploadDir = './dossier/'; par exemple).

Voici d'ailleur le "nouveau" code.

<?php
session_start();
$login=$_SESSION['login'];

$uploadDir = './'.$login.'/';

if (isset($_FILES['Filedata']['name'])) {

   $uploadFile = $uploadDir . basename($_FILES['Filedata']['name']);

   move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
} 

if (!isset($login)) {
	header ('Location: index.php');
	exit();
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Chez moi ça marche très bien évidemment... Peux-tu recommencer en faisant un echo de $uploadFile ?
0
JEJEOS Messages postés 46 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 mai 2010 5
1 sept. 2009 à 17:21
Lorsque je fait un echo de $uploadFile, je n'ai rien qui s'affiche !

Encore merci de m'aider ...
0
Où avais-tu mis le echo $uploadFile ?
Redonne le script avec cet echo dedans
0
JEJEOS Messages postés 46 Date d'inscription mercredi 12 novembre 2008 Statut Membre Dernière intervention 8 mai 2010 5
1 sept. 2009 à 18:17
Voici le code complet de ma page, avec l'echo :

<?php
session_start();
$login=$_SESSION['login'];

$uploadDir = './'.$login.'/';

if (isset($_FILES['Filedata']['name'])) {

   $uploadFile = $uploadDir . basename($_FILES['Filedata']['name']);

   move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
} 

if (!isset($login)) {
	header ('Location: index.php');
	exit();
}
?>
<html>
<head>
<title>Espace membre</title>
</head>
<body>
Bienvenue <?php echo htmlentities(trim($login)); ?> !<br />
<a href="deconnexion.php">D&eacute;connexion</a> <br>
<br>
<?php echo $uploadFile; ?>
  
</body>
</html>
0
ton <?php echo $uploadFile; ?> n'a pas grand intérêt là où il est...
il faut le mettre immédiatement après la ligne $uploadFile = $uploadDir . basename($_FILES['Filedata']['name']);

D'autre part, je répète ma question du départ : y a-t-il bien la bonne valeur dans $uploadDir ? (là encore, avec un echo juste après le ligne $uploadDir=...). Car tous les indices vont dans le même sens : ton $uploadDir ne serait pas initialisé, sans doute parce que $_SESSION['login'] est vide.
0
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
11 avril 2011 à 00:17
Salut, je sais que ça fait longtemps, mais avez vous réglé votre problème car j'ai le même !!
0
En fait je ne l'ai pas fait comme je voulais au départ, j'au utiliser un objet PHP, dans le même genre que celui-ci :
http://www.wulab.com/articles/upload-barre-progression.html
0
yoshiro Messages postés 497 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 18 avril 2018 64
15 avril 2011 à 20:55
oki merci !!
0