[Résolu]Renommer des photos uploader

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 : [Résolu]Renommer des photos uploader

Re: [Résolu]Renommer des photos uploader

par AB » 19 mai 2010, 18:47

Dans la page de l'upload, fais aussi session_start(); A la suite de quoi tu devrais pouvoir faire afficher $_SESSION['login'] dans cette même page, si cette valeur a déjà été renseignée dans la page d'authentification.

Sinon ton script d'authentification est mal structuré. Pour plus d'info sur cette remarque voir ce tuto

Re: Renommer des photos uploader

par cuoreconleali » 19 mai 2010, 07:13

c'est ce que j'ai fait mais sa ne marche ps.

Code : Tout sélectionner

<HTML> <HEAD> <Title>Accueil</Title> </HEAD> <body bgcolor ="#3366FF"> <b><center><u>Page réservée aux étudiants de Master 2 en sciences psychologiques et de l'éducation</b></center></u> <BR> <b>Veuillez entrer votre login et votre mot de passe, ceux-ci se trouvent dans le courrier que vous avez reçu, afin de pouvoir télécharger votre photo.</b> <BR><b>Chaque étudiant de MA2, a reçu un login et un mot de passe, différent pour chacun!!</b> <?php session_start(); if (!isset($_POST["entre"])) { echo "<FORM method = \"POST\" action = \"index.php\">"; echo"<BR>"; echo "Login : "."<input type = \"text\" name = \"login\">"; echo"<BR>"; echo "<BR>"."Mot de Passe : "."<input type = \"password\" name = \"pswd\">"; echo"<BR>"; echo "<BR>"."<input type = \"submit\" name = \"entre\" value = \"Entrer\">"; echo "</FORM>"; } else { //connexion à la base de donnée require ("autorisation.php"); require ("branchement.php"); //lecture et mise en mémoire des valeurs entrées par l'utilisateur $login = $_POST['login']; $_SESSION['login'] = $login; $pswd = $_POST['pswd']; //fonction de vérification par rapport à la bd $sql = "SELECT pswd FROM etudiants WHERE nom ='$login'"; $result = mysql_query ($sql); //si le mot de passe entré et celui de la db sont idem alors message de bienvenu admin if (mysql_num_rows($result)> 0) { $pass_db = mysql_result($result,0); if($pass_db == $pswd) { echo"<BR>"; echo"<br><b> pour acceder à votre page cliquer ici </b>"; echo"<BR>"; echo '<a href ="upload.php">Pour encoder votre photo, veuillez cliquer sur ce lien</a>';//lien hypertexte $login = $_POST['login']; $pswd = $_POST['pswd']; } //si non on dit que les données ne correspondent a celle de l admin else { echo" <br><b> Les données que vous avez entrés ne correspondent pas à un étudiant</b>"; } } else { // pas d'utlisateur de ce nom echo" <br><b> Vous n'êtes pas autorisés dans cette partie </b>"; } } ?> </body> </HTML>

Re: Renommer des photos uploader

par AB » 19 mai 2010, 01:55

Tu mets session_start() tout en haut de ton code php.

Re: Renommer des photos uploader

par cuoreconleali » 18 mai 2010, 18:10

merci je viens d'essayer car trop envie d'y arriver mais voila l'erreur
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/promotions/index.php:13) in /var/www/promotions/index.php on line 15


Que dois je faire?

Re: Renommer des photos uploader

par cuoreconleali » 18 mai 2010, 17:58

merci pour ces précieux conseils je vais tester cela et vous reviens

Re: Renommer des photos uploader

par stopher » 18 mai 2010, 14:57

Fasons simple ..

L'utilisateur s'authentifie , tu enregistres son login dans une variable de session

ex : $_SESSION['login'] = $login;

Ensuite , n'importe ou dans ton code , tu peux récupérer le login de l'utilisateur , car une variable de session ( elle porte bien son nom ) est disponible pendant toute la durée de la "session" ( navigation ) de l'utilisateur , bref tant qu'il ne ferme pas son navigateur . ( bon , il y a des durées de vie ect .. mais pour le moment ne t'en préoccupe pas )

Donc , dans ta page d'upload , tu récupéres simplement le login , non plus directement avec $login qui dans cette page n'existe plus mais par $_SESSION['login']

NOTE: surtout n'oublie pas de mettre en premiere ligne , de tes script ( juste apres <?php ) session_start()

Sinon , ca ne fonctionnera pas ..
Je te conseil la documentation que t'a donné macgawel


Good luck ,
Ch

Re: Renommer des photos uploader

par cuoreconleali » 18 mai 2010, 14:50

merci pour ta réponse mais étant très novice je ne vois pas comment faire avec les sessions.

As tu une idée pour pouvoir m'aider en gardant mes 2 pages et sans devoir modifier trop mes codes

Re: Renommer des photos uploader

par macgawel » 18 mai 2010, 14:45

Dans ton script, tu appelles la variable $login. Mais à aucun moment elle n'est renseignée.

En PHP les variables ne sont pas passées d'un script à l'autre, donc tu ne peux pas récupérer dans ta page upload.php la valeur $login récupérée dans la page accueil.php
Du coup, ton script fonctionne bien mais comme $login est vide... #-o


Une solution : les sessions...


[Edit] Fautes de frappe :oops:

Re: Renommer des photos uploader

par cuoreconleali » 18 mai 2010, 14:34

au fait j'ai deux pages

la première avec ceci :

Code : Tout sélectionner

<HTML> <HEAD> <Title>Accueil</Title> </frameset> </HEAD> <body bgcolor ="#3366FF"> <b><center><u>Page réservée aux étudiants de Master 2 en sciences psychologiques et de l'éducation</b></center></u> <BR> <b>Veuillez entrer votre login et votre mot de passe, ceux-ci se trouvent dans le courrier que vous avez reçu, afin de pouvoir télécharger votre photo.</b> <BR><b>Chaque étudiant de MA2, a reçu un login et un mot de passe, différent pour chacun!!</b> <? if (!isset($_POST["entre"])) { echo "<FORM method = \"POST\" action = \"index.php\">"; echo"<BR>"; echo "Login : "."<input type = \"text\" name = \"login\">"; echo"<BR>"; echo "<BR>"."Mot de Passe : "."<input type = \"password\" name = \"pswd\">"; echo"<BR>"; echo "<BR>"."<input type = \"submit\" name = \"entre\" value = \"Entrer\">"; echo "</FORM>"; } else { //connexion à la base de donnée require ("autorisation.php"); require ("branchement.php"); //lecture et mise en mémoire des valeurs entrées par l'utilisateur $login = $_POST['login']; $pswd = $_POST['pswd']; //fonction de vérification par rapport à la bd $sql = "SELECT pswd FROM etudiants WHERE nom ='$login'"; $result = mysql_query ($sql); //si le mot de passe entré et celui de la db sont idem alors message de bienvenu admin if (mysql_num_rows($result)> 0) { $pass_db = mysql_result($result,0); if($pass_db == $pswd) { echo"<BR>"; echo"<br><b> pour acceder à votre page cliquer ici </b>"; echo"<BR>"; echo '<a href ="upload.php">Pour encoder votre photo, veuillez cliquer sur ce lien</a>';//lien hypertexte $login = $_POST['login']; $pswd = $_POST['pswd']; } //si non on dit que les données ne correspondent a celle de l admin else { echo" <br><b> Les données que vous avez entrés ne correspondent pas à un étudiant</b>"; } } else { // pas d'utlisateur de ce nom echo" <br><b> Vous n'êtes pas autorisés dans cette partie </b>"; } } ?> </body> </HTML>
et la deuxième avec l'UPLOAD

Code : Tout sélectionner

<HTML> <HEAD> <Title>Partie Administration</Title> </HEAD> <body bgcolor ="#3366FF"> <form method="POST" action="upload.php" enctype="multipart/form-data"> <!-- On limite le fichier à 500Ko --> <b>Veuillez nommer le fichier par votre nom.prénom SVP. </b> <BR><b>Ce pour plus de facilités et s’assurer que votre photo corresponde à votre nom. </b> <BR><b> Veuillez noter que si votre photo n'est pas nommée comme demandé ci-dessous, elle ne sera pas prise en compte. </b> <BR><b> Votre photo ne peut pas dépasser 500ko et doit avoir le format : .png,.gif,.jpg ou .jpeg et seulement ces formats, les autres formats ne sont pas acceptés.</b> <br> <BR><b> En vous remerciant. </b> <br> <br> <input type="hidden" name="MAX_FILE_SIZE" value="500000"> Fichier : <input type="file" name="photo"> <br> <br> <input type="submit" name="envoyer" value="Envoyer le fichier"> </form> <?php if(isset($_FILES['photo'])) { $dossier = 'upload/'; $fichier = basename($_FILES['photo']['name']); $taille_maxi = 500000; $taille = filesize($_FILES['photo']['tmp_name']); $extensions = array('.png', '.gif', '.jpg', '.jpeg'); $extension = strrchr($_FILES['photo']['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 uploader un fichier de type png, gif, jpg, jpeg,...'; } 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['photo']['tmp_name'], $dossier.$fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné... { echo "<b> UPLOAD EFFECTUE AVEC SUCCES !</b>"; } else //Sinon (la fonction renvoie FALSE). { echo 'ECHEC DE L\'UPLOAD !'; } } else { echo $erreur; } } ?> <br> <br> <a href="#" onclick="opener=self;self.close();">fermer</a> </body> </HTML>

Re: Renommer des photos uploader

par cuoreconleali » 18 mai 2010, 14:16

à mon avis j'ai un problème avec la variable $login qui n'arrivent pas sur la page d'Upload comment je pourrais faire ??

Re: Renommer des photos uploader

par cuoreconleali » 18 mai 2010, 14:03

le résultat est que le fichier n'est pas renommé.

concernant l'extension je la récupère sans problème.

Re: Renommer des photos uploader

par stopher » 18 mai 2010, 12:45

Quel est le resultat ?

quand tu dis ça ne fonctionne pas , le fichier ne s'upload pas ? le nom n'est pas correct ? ( dans ce cas vérifies tes variables )

Pourquoi tu rajoutes $fichier à la fin ? .. en fait il manque juste l'extension à ton fichier .. si elle est unique , tu peux la spécifier de façon statique
$login.'.jpeg'
Sinon , tu peux soit la récupérer du nom du fichier d'origine , soit la déduire du tyme mime , php5.3 offre une extension sympathique la dessus :

http://fr.php.net/manual/en/function.finfo-file.php

Ch.

Re: Renommer des photos uploader

par macgawel » 18 mai 2010, 12:38

Voila ce que je mets mais sa ne marche pas
Bonjour.

C'est un peu court...
- Message d'erreur ? Lequel ?
- Ca fonctionne, mais le résultat n'est pas conforme ? Quel est le résultat ?
- Autre (préciser) ?

Re: Renommer des photos uploader

par cuoreconleali » 18 mai 2010, 12:30

merci

Voila ce que je mets mais sa ne marche pas

Code : Tout sélectionner

if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier .$login.$fichier))
y vois tu une erreur ??

je voudrais arriver a ton exemple qui est dont upload\toto.jpg

Re: Renommer des photos uploader

par stopher » 18 mai 2010, 12:25

Tu écrits :
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier ."$login.$pswd".$fichier)) ...
Heu .. là tu mets en destination :

$dossier .$login.$pswd.".$fichier
soit par exemple :

upload/TotoMotdepasseFichier.png

Bon , déjà je ne suis pas certains que mettre le mot de passe concaténé dans le nom du fichier soit conseillé ... apres , c'est toi qui vois !

mais tu peux trés bien mettre uniquement le login :
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier .$login)) ...
Ce qui devrait donner :

upload/Toto.png

Bien entendu , la variable $login doit être saine , pour éviter toute injection de code !
htmlentities() et tout ce qui s'en suit pour que tu estimes être un login "valide".

Ch.
Evidemment $login ne doit pas être null !