PROBLEME ENREGISTREMENT AVATAR DANS PAGES "INSCRIPTION" ET "MODIFICATION-PROFIL- [Résolu]

cs_MALINOIS77 17 Messages postés samedi 20 septembre 2008Date d'inscription 10 janvier 2014 Dernière intervention - 20 août 2011 à 01:53 - Dernière réponse : cs_MALINOIS77 17 Messages postés samedi 20 septembre 2008Date d'inscription 10 janvier 2014 Dernière intervention
- 22 août 2011 à 00:45
Bonjour,

En suivant de multiples tutoriels, je suis en train de créer un site avec au départ des pages en php sont présentes afin de se connecter, de s'inscrire, de modifier son profil, etc.

Mes pages fonctionnent parfaitement mais le problème est que je n'arrive pas à insérer la possibilité aux utilisateurs d'enregistrer leur image "avatar".

J'ai bien résolu seul plusieurs problèmes et j'ai bien essayé plusieurs méthodes mais je n'arrive à rien avec ce problème.

Voici ci-dessous les parties principales de mes pages "inscription.php" et "modification_membre.php" en espérant pouvoir enfin trouver une solution...





Ma page "inscription.php":






Afficher la suite 

12 réponses

Répondre au sujet
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 20 août 2011 à 09:27
+3
Utile
bonjour

ça c'est déjà pas top

" />
 


vu que les fichiers type="file" transite par un tableau $_FILES
il faut laisser




Bonne programmation !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cod57
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 20 août 2011 à 09:36
+3
Utile
d'abord l'inscription
il manquer
<form action="inscription.php" method="post" enctype="multipart/form-data" >

j'ai fait une correction pour que tu conprenne comment commencer

<?php
if(isset($_FILES['avatar'])){
echo '';
print_r($_FILES['avatar']);
echo '

';
}else{
}
?>




<?php
//VERIFICATION ENVOI DU FORMULAIRE
if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar']) and $_POST['username']!='')
{
//SI GET_MAGIC_QUOTES_GPC ACTIVE, ENLEVEMENT DE L'ECHAPPEMENT
if(get_magic_quotes_gpc())
{
$_POST['username'] = stripslashes($_POST['username']);
$_POST['password'] = stripslashes($_POST['password']);
$_POST['passverif'] = stripslashes($_POST['passverif']);
$_POST['email'] = stripslashes($_POST['email']);
$_POST['avatar'] = stripslashes($_POST['avatar']);
}
//VERIFICATION MOT DE PASSE ET CONFIRMATION MOT DE PASSE
if($_POST['password']==$_POST['passverif'])
{
//VERIFICATION MOT DE PASSE AVEC 6 CARACTERES OU PLUS
if(strlen($_POST['password'])>=6)
{
//VERIFICATION VALIDITE EMAIL
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
{
//ECHAPPEMENT DES VARIABLES POUR INSERTION DANS REQUETTE SQL
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$avatar = mysql_real_escape_string($_POST['avatar']);

//VERIFICATION SI PSEUDO CHOISI DEJA EXISTANT
$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
if($dn==0)
{
//RECUPERATION NOMBRE UTILISATERURS POUR DONNER IDENTIFIANT A UTILISATEUR ACTUEL
$dn2 = mysql_num_rows(mysql_query('select id from users'));
$id = $dn2+1;

//ENREGISTREMENT INFORMATIONS DANS BASE DE DONNEES
if(mysql_query('insert into users(id, username, password, email, avatar, signup_date) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", "'.time().'")'))
{
//PAS D'AFFICHAGE DE FORMULAIRE SI FONCTIONNEMENT CORRECT
$form = false;
?>


MERCI DE VOTRE INSCRIPTION

[connexion.php ]

<?php
}
else
{
//MESSAGE SI ERREUR PENDANT INSCRIPTION
$form = true;
$message = 'ERREUR LORS L\'INSCRIPTION
MERCI DE RECOMMENCER';
}
}
else
{
//MESSAGE SI PSEUDO DEJA UTILISE
$form = true;
$message = 'PSEUDO DEJA UTILISE
MERCI D\'EN CHOISIR UN AUTRE';
}
}
else
{
//MESSAGE SI EMAIL INVALIDE
$form = true;
$message = 'EMAIL INVALIDE
MERCI DE LE VERIFIER';
}
}
else
{
//MESSAGE SI MOT DE PASSE TROP COURT
$form = true;
$message = 'MOT DE PASSE AVEC MOINS DE 6 CARACTERES
MERCI D\'EN CHOISIR UN AUTRE';
}
}
else
{
//MESSAGE SI MOT DE PASSE ET CONFIRMATION DE MOT PASSE NON IDENTIQUES
$form = true;
$message = 'MOTS DE PASSE NON IDENTIQUES
MERCI DE RECOMMENCER';
}
}
else
{
$form = true;
}
if($form)
{
//AFFICHAGE MESSAGE SI BESOIN EST
if(isset($message))
{
echo '
'.$message.'
';
}

//AFFICHAGE FORMULAIRE
?>


    
<form action="inscription.php" method="post" enctype="multipart/form-data" >
  INSCRIPTION
        
  
         
  
            
    <label for="username">NOM D'UTILISATEUR
    </label>
    " />
            
    <label for="password">MOT DE PASSE
      (6 caractères min.)
      
    </label>
    
            
    <label for="passverif">MOT DE PASSE
      (Vérification)
      
    </label>
    
            
    <label for="email">EMAIL
    </label>
    " />
            
    <label for="avatar">AVATAR
      (facultatif)
      
    </label>
    
            
  
            
  
            
    		
  
    
</form>

<?php
}
?>





Bonne programmation !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cod57
cs_MALINOIS77 17 Messages postés samedi 20 septembre 2008Date d'inscription 10 janvier 2014 Dernière intervention - 20 août 2011 à 13:26
+3
Utile
Bonjour,

Merci en premier lieu de cette réponse même si elle ne m'aide pas encore...

En ce qui concerne la ligne suivante:
<form action="inscription.php" method="post" enctype="multipart/form-data" > 

Le problème est que j'ai déjà mis cette ligne dans mes deux pages lors de mes différents essais, je l'ai retiré suite au fait que lorsque j'effectuais des essais, notamment avec la page liée à la modification du profil, cela refusait du coup l'enregistrement de mes modifications en ne prenant également pas en compte l'image alors qu'en ne mettant pas (provisoirement) cette fin de ligne les inscriptions et les modifications de profil se font bien et ma base de données indiquent bien la présence d'une ligne indiquant la présence d'un avatar même si dans ma page d'affichage du profil cela est pris encompte sans pouvoir l'afficher puisque je n'arrive pas à faire enregistrer l'avatar dans un dossier prévu dans le site.

J'ai du coup retiré cette fin de ligne en attendant de trouver la solution à mon problème.

En ce qui concerne la seconde réponse, j'ai déjà essayé la chose suivante mais le problème est que cela m'affiche une erreur à chaque essai et cela quelque soit le fichier choisi, que ce soit par rapport à la hauteur, à la largeur et à la grosseur et même en ajoutant des "0" pour les essais, ou alors cela m'indique bien que l'upload a bien été effectué en restant sur la même page alors qu'il doit être proposer ensuite de se reconnecter habituellement pour ensuite m'afficher que l'avatar est incorrect quand je fais l'envoi à nouveau alors qu'il l'avait accepté la fois d'avant en restant malheureusement sur la même page.

A force de chercher et de chercher encore et de ne plus avoir la tête "neuve", je fais surement une erreur qui est bête et où je vais dire ensuite comme beaucoup de fois "pourquoi chercher compliquer alors que la réponse était toute simple" et c'est pourquoi j'ai posté mon message.

Le second bout de code que j'ai déjà essayé longuement et retiré pour l'instant est le suivant:

<?php
$dossier = 'Site-Avatar/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.bmp', '.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['avatar']['name'], '.'); 

//VERIFICATION SECURITE

//EXTENSION INCORRECTE
if(!in_array($extension, $extensions))
{
     $erreur = 'TYPE AVATAR INCORRECT
MERCI DE VERIFIER';
}
//TAILLE INCORRECTE
if($taille>$taille_maxi)
{
     $erreur = 'AVATAR TROP VOLUMINEUX
MERCI D\'EN CHOISIR UN AUTRE';
}
//UPLOAD SI ABSENCE D'ERREUR
if(!isset($erreur))
{
     //FORMATAGE NOM AVATAR
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     
     //PROCESSUS ACCOMPLI CORRECTEMENT
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))
     {
          echo 'Upload effectué avec succès !';
     }
     //ERREUR DANS PROCESSUS 
     else
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}
?>


Ensuite le premier cas d'exemple de message d'erreur que j'ai obtenu lorsque je n'ai pas multiples oobligations de rester sur la même du fait que l'avatar est accepté la première fois et non les fois suivantes:

Array
(
    [name] => LOGO AVATAR.BMP
    [type] => image/bmp
    [tmp_name] => C:\wamp\tmp\php1F4.tmp
    [error] => 0
    [size] => 843654
)


Je suis donc toujours avec les mêmes problèmes suivants:

- Que lors de l'inscription ou de la modification du profil, le script vérifie que la taille du fichier, la hauteur, la largeur et l'extension sont acceptées.
- Que si l'un de ses paramêtres n'est pas conforme, un message d'erreur s'affiche selon la situation comme pour ceux liés à la vérification du pseudo, du mot de passe, etc., soit donc un message d'erreur indiquant qu'il y a eu une erreur lors de l'enregistrement de l'avatar, un autre indiquant que l'avatar est trop volumineux, un autre indiquant qu'il est trop haut, un autre indiquant qu'il est trop large et un autre que l'extension n'est pas du "jpg", du "gif", du "png" ou du "bmp".
- Que l'enregistrement de l'avatar s'effectue en même temps que le reste et que cela s'intègre donc au tout.
- Que l'avatar puisse être enregistré dans un dossier prévu à cet effet et puisse donc alors s'afficher réellement dans ma page d'affichage du profil dans un premier temps pour peut-être ensuite le faire également afficher dans un coin de toutes mes autres pages lorsque la personne sera connectée...

Merci d'avance à nouveau...

Cordialement,
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MALINOIS77
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 20 août 2011 à 14:00
+3
Utile


l'afficher puisque je n'arrive pas à faire enregistrer l'avatar dans un dossier prévu dans le site.



voila le problème !
en fait enregistrer et updater c'est presque pareil au niveau de la façon
de faire ... il faudrait conserver la trace de l'image et faire une fonction je regarde ça a++


Bonne programmation !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cod57
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 20 août 2011 à 16:05
+3
Utile
j'ai testé comme ça

il faut crypter le password sinon si quelqu'un recupere ta table il peut voir tes passwords ...

CREATE TABLE IF NOT EXISTS `users` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(32) NOT NULL,
`email` varchar(50) NOT NULL,
`avatar` varchar(100) NOT NULL,
`dateinscription` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;



<?php
session_start();
/*stockons un identifiant valable 1 heure*/
$_SESSION['client']=md5( $_SERVER['REMOTE_ADDR'].date('YmdH') );

function copierImageAvatar($fichier=null,$repertoire='./lesavatars/'){
  
  if(isset($fichier) && !empty($fichier['name'])){
     
      // si formulaire soumis
      $content_dir = $repertoire; // dossier oš sera dÚplacÚ le fichier
  
      $tmp_file = $fichier['tmp_name'];
  
      if( !is_uploaded_file($tmp_file) ){
          exit('Le fichier est introuvable [javascript:history.back(); retour]');
      }
  
      // on vÚrifie maintenant l'extension
      $type_file = $fichier['type'];
  
      if( !strstr($type_file, 'pjpeg') && !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') ){
          exit('Le fichier n est pas une image jpg [javascript:history.back(); retour]');
      }
  
      // on copie le fichier dans le dossier de destination
      $name_file = $_SESSION['client'].'.jpg';
  
      if( !move_uploaded_file($tmp_file, $where =$content_dir . $name_file) ){
          exit('Impossible de copier le fichier dans '.$content_dir.' [javascript:history.back(); retour]');
      }
  
      /*redimensionner Ó la volÚe*/
      
      $taille_min=120;
      $donnees=getimagesize($where);
      $image=imagecreatefromjpeg($where);
      if ($donnees[0] > $donnees[1]) { //paysage
      $largeur_finale=round(($taille_min/$donnees[1])*$donnees[0]);
      $hauteur_finale=$taille_min;
      }else{
      //portrait
      $hauteur_finale=round(($taille_min/$donnees[0])*$donnees[1]);
      $largeur_finale=$taille_min;
      }
       
      $image_mini = imagecreatetruecolor($largeur_finale, $hauteur_finale); //crÚation image finale
      imagecopyresampled($image_mini, $image, 0, 0, 0, 0, $largeur_finale, $hauteur_finale, $donnees[0], $donnees[1]);//copie avec redimensionnement
      imagejpeg ($image_mini, $content_dir.$name_file);
      ImageDestroy($image_mini); 
      $_SESSION['avatar']=$content_dir.$name_file ;
  		unset($fichier);
      header('Location: inscription.php');
  
  }else{
  
  return false;
  
  }

}

if(isset($_FILES['avatar'])){
//echo '';
//print_r($_FILES['avatar']);
//echo '

';
/*un fichier est envoyÚ copiant le*/
echo copierImageAvatar($_FILES['avatar']);
}else{
}
?>




<?php
//VERIFICATION ENVOI DU FORMULAIRE
if(isset($_POST['username'],$_POST['password'],$_POST['passverif'],$_POST['email']))
{

  //anti xss
  foreach($_POST as $k => $v){
  $v=htmlentities(strip_tags($v));
  $_POST[$k]=$v;
  }
    
//VERIFICATION MOT DE PASSE ET CONFIRMATION MOT DE PASSE
if($_POST['password']===$_POST['passverif'])
{
//VERIFICATION MOT DE PASSE AVEC 6 CARACTERES OU PLUS
if(strlen($_POST['password'])>=6)
{
//VERIFICATION VALIDITE EMAIL
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
{

        /*attention il faut etre connecter pour utiliser mysql_real_escape_string*/
        mysql_connect('localhost','root','');  /*mettre tes identifiants*/
        mysql_select_db('ausers');
        //ECHAPPEMENT DES VARIABLES POUR INSERTION DANS REQUETTE SQL
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$avatar = mysql_real_escape_string($_SESSION['avatar']); /*il faut un varchar 100 dans la table*/

//VERIFICATION SI PSEUDO CHOISI DEJA EXISTANT
$dn = mysql_num_rows(mysql_query("select id from users where username='".$username."'"));
if($dn===0){

        $sql="insert into users(
        id,
        username,
        password,
        email,
        avatar,
        dateinscription
        )values(
        NULL,
        '".$username."',
        '".md5($password)."',
        '".$email."',
        '".$avatar."',
        now()
        )";
             
        //ENREGISTREMENT INFORMATIONS DANS BASE DE DONNEES
if(mysql_query($sql)){
//PAS D'AFFICHAGE DE FORMULAIRE SI FONCTIONNEMENT CORRECT
$form = false;
?>


MERCI DE VOTRE INSCRIPTION

[connexion.php ]


<?php
}else{
//MESSAGE SI ERREUR PENDANT INSCRIPTION
$form = true;
$message = 'ERREUR LORS L\'INSCRIPTION
MERCI DE RECOMMENCER';
}
}
else
{
//MESSAGE SI PSEUDO DEJA UTILISE
$form = true;
$message = 'PSEUDO DEJA UTILISE
MERCI D\'EN CHOISIR UN AUTRE';
}
}
else
{
//MESSAGE SI EMAIL INVALIDE
$form = true;
$message = 'EMAIL INVALIDE
MERCI DE LE VERIFIER';
}
}
else
{
//MESSAGE SI MOT DE PASSE TROP COURT
$form = true;
$message = 'MOT DE PASSE AVEC MOINS DE 6 CARACTERES
MERCI D\'EN CHOISIR UN AUTRE';
}
}
else
{
//MESSAGE SI MOT DE PASSE ET CONFIRMATION DE MOT PASSE NON IDENTIQUES
$form = true;
$message = 'MOTS DE PASSE NON IDENTIQUES
MERCI DE RECOMMENCER';
}
}
else
{
$form = true;
}


if($form===true)
{
//AFFICHAGE MESSAGE SI BESOIN EST
if(isset($message))
{
echo '
'.$message.'
';
}

//AFFICHAGE FORMULAIRE
?>


    
<form action="inscription.php" method="post" enctype="multipart/form-data" >
  INSCRIPTION
        
  
         
  
            
    <label for="username">NOM D'UTILISATEUR
    </label>
    " />
            
    <label for="password">MOT DE PASSE
      (6 caractères min.)
      
    </label>
    
            
    <label for="passverif">MOT DE PASSE
      (Vérification)
      
    </label>
    
            
    <label for="email">EMAIL
    </label>
    " />
            
    <label for="avatar">AVATAR
      (facultatif)
      
    </label>
    
 
    
    <?php
    if(file_exists($file='./lesavatars/'.$_SESSION['client'].'.jpg')){
    echo '';
    }else{
    //rien
    }    
    ?>
               
  
            
  
            
    		
  
    
</form>

<?php
}
?>





Bonne programmation !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cod57
cs_MALINOIS77 17 Messages postés samedi 20 septembre 2008Date d'inscription 10 janvier 2014 Dernière intervention - 21 août 2011 à 02:49
+3
Utile
Bonjour cod57,

Merci de ce travail et donc de ta réponse qui m'a vraiment beaucoup aidé.

J'ai eu un petit souci mais le problème a été résolu.

Celui-ci était que la page n'allait ne m'affichait plus ensuite la confirmation d'enregistrement mais le problème venait de moi car en copiant les partie de ton script qui m'intérressait j'avais oublié un ";".

Je dis "les parties" car je ne voulais pas seulement effectuer un copier-coller complèt sans essayer de comprendre et j'avais donc ajouter chaque partie étape par étape.

Un second et un troisième merci en ce qui concerne la date d'inscription et surtout en ce qui concerne le cryptage du mot de passe car j'avoue que c'est quelque chose que je ne connais pas encore et que je commence à essayer de comprendre depuis que j'ai lu ton script et que j'a vu les changements dans ma base de données.

Je n'ai pas encore modifié ma page liée à la modification du profil mais avec ce que tu m'as donné, je ne pense pas rencontré de problème pour cette autre page.

En plus, pour l'instant je me retrouve avec deux autres petits soucis qui, je crois, sont liés au cryptage du mot de passe.

Le premier est que ma page connexion refuse mes identifiants malgré que l'enregistrement dans la base de données a bien été effectué et le second est que ma page qui affiche les profils des membres m'indique maintenant pour tous les profils testés que ceux-ci sont inexistant.

Peut-être pourras-tu me dire si ceci est bien lié au cryptage du mot de passe.


Ma page "connexion":







DECONNEXION EFFECTUEE

[ ]


PROFIL DE: ""

,

,
----
EMAIL:

UTILISATEUR INSCRIT DEPUIS LE:









Merci encore à toi et/ou aux autres personnes qui viendrait me donner un petit coup de main...

Cordialement,
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MALINOIS77
cs_MALINOIS77 17 Messages postés samedi 20 septembre 2008Date d'inscription 10 janvier 2014 Dernière intervention - 21 août 2011 à 03:22
+3
Utile
Re-bonjour,

Au cas où, je pense avoir oublié de notifier que j'ai également une page "configuration" qui est en "include" dans chaque page.

Ma page "configuration":

<?php
//DEMARRAGE DES SESSIONS
session_start();

//CONNEXION BASE DE DONNEES
mysql_connect('localhost', 'root', '');
mysql_select_db('dossier-test-provisoire');

//ADRESSE EMAIL
$mail_webmaster = 'intitulé-email@non-encore-defini.fr';

//ADRESSE DOSSIER SITE
$url_root = 'http://www.adresse-du-site-non-encore-definie.fr/';

/******************************************************
----------------Configuration Optionelle---------------
******************************************************/

//DENOMINATION FICHIER INDEX - ACCUEIL
$url_home = 'index.php';


//DENOMINATION FICHIER SOMMAIRE
$url_accueil = 'sommaire.php';
?>


Merci encore et d'avance...

Cordialement,
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MALINOIS77
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 21 août 2011 à 09:43
+3
Utile
bonjour

je croyais que tu es en phase de developpement ... pour le md5 ...
mais tes clients peuvent garder leur identifiants tel qu'ils les ont
c'est juste toi qui doit crypter des password avec md5

ex:

$pass="toto12";
echo $newpass = md5($pass);
/*tu auras une chaine de 32 caractères alpha numériques indechiffrable*/
mais attention on peut pas décrypter à part les connus de tous genre md5(toto) qui sont dans des dictionnaires ... mais c'est surtout pour pas faciliter la tache à un attaquant possible

[b]donc si c'est déjà une table avant modification
d'abord sauver la table par phpmyadmin --> exporter/b
au cas ou il faudrait faire marche arriere


pour l'identification md5 juste ça

<?php
//VERIFICATION EXISTENCE MOT DE PASSE UTILISATEUR
if($dn['password']===md5($password) and mysql_num_rows($req)>0)
?>		{		


Bonne programmation !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cod57
cs_MALINOIS77 17 Messages postés samedi 20 septembre 2008Date d'inscription 10 janvier 2014 Dernière intervention - 21 août 2011 à 15:40
+3
Utile
Bonjour et merci à nouveau cod57,

Après avoir lu de multiples tutoriels et autres concernant le cryptage des informations telles que les mots de passe, je commence un peu mieux à comprendre cette utilité indispensable.

Deux chose me reste donc à voir

Où mettre ceci et comment choisir un mot de cryptage:

$pass="toto12"; 
echo $newpass = md5($pass); 
/*tu auras une chaine de 32 caractères alpha numériques indechiffrable*/ 
mais attention on peut pas décrypter à part les connus de tous genre md5(toto) qui sont dans des dictionnaires ... mais c'est surtout pour pas faciliter la tache à un attaquant possible 


Et pourquoi lorsque je vais sur mes pages "liste des membres" et "profil des membres", les utilisateurs sont bien présents dans ma bases de données mais sont affichés comme inexistants pour mes pages "php".

En ce qui concerne la préparation de mon site, tout est pour ainsi dire fait (design, pages "php", etc.) mais avant de le mettre en ligne et de choisir un hébergeur (car actuellement en local) je préfère avant tout qu'il soit "propre" dès le départ et en lisant et en lisant encore je découvre, comme par exemple grâce à toi, que des choses sont importantes à mettre en place.

Comme je l'ai dit à certaines personnes, je préfère prendre mon temps, que le site soit dès le départ bien réglé plutôt que de le mettre en ligne juste histoire qu'il soit présent et que ce soit du "n'importe quoi" car à ce moment là autant que je fasse comme beaucoup et donc ouvrir un blog pré-construit...

Merci à toi...

Cordialement,
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MALINOIS77
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 21 août 2011 à 17:24
+3
Utile
bonjour

tu as raison de pas ignorer la sécurité
sur le web c'est confiance 0 c'est l'attitude qui te protégera des
ennuis ...

pour inscription et connection ... chez moi ça marche je t'envoie mes corrections plus tard, pour md5 tu n'as rien à faire c'est php qui le fait pour toi ...




Bonne programmation !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cod57
cs_MALINOIS77 17 Messages postés samedi 20 septembre 2008Date d'inscription 10 janvier 2014 Dernière intervention - 22 août 2011 à 00:45
+3
Utile
Bonjour cod57,

En ce qui me concerne, mes pages "inscription" et "connexion" fonctionnent également correctement.

Mes seuls soucis actuels depuis que j'ai incorporé le "md5" sont liés à mes pages "modification du profil", "liste des membres" et "profil des membres".

Pour la page "modification du profil, après avoir cliquer sur le bouton "enregistrer" celle-ci revient continuellement sur la partie du formulaire lié au changement à effectuer alors qu'elle devrait aller sur la partie confirmant l'enregistrement et semble donc ne pas prendre en compte les ou les modifications effectuées via cette page.

Le fichier avant inclusion enregistrement "avatar" et "md5" était :







MODIFICATIONS ENREGISTREES







[connexion.php ]









En ce qui concerne ma page "liste des membres", je n'ai plus dans mon tableau depuis l'insertion du "md5" les "id" et les noms des utilisateurs.
La seule colonne qui reste entièrement présente est celle des adresses emails.

En ce qui concerne ma page "profil des membres et donc pour y accéder, je suis donc désormais obligé de l'écrire manuellement au lieu de cliquer sur le nom de la page précédente comme auparavant et tous les essais effectués m'affichent que le profil est inexistant alors que tous mes profils test apparaissent bien dans ma base de données en "md5".

Plusieurs essais effectués pour ces trois pages, plusieurs tutoriels et F.A.Q. lus mais j'avoue que même si j'ai bien compris l'utilité et l'importance du "md5" je n'arrive pas encore à vraiment le comprendre pour pouvoir correctement l'inclure dans mes pages.

Parfois, les choses comliquées semblent simples et les choses simples sont et/ou font l'inverse...


Si tu as quelques choses à m'apprendre au sujet du "md5" car des fois il suffit de pas grand chose, je suis tout ouie car la j'avoue qu'au bout d'une journée complète sur mes trois pages me posant problème je n'ai plus les idées "neuves" et "claires"...

Cordialement,
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MALINOIS77
cod57 1661 Messages postés dimanche 7 septembre 2008Date d'inscription 11 septembre 2013 Dernière intervention - 20 août 2011 à 14:58
0
Utile
inscription.php exemple

pour modifier.php
faut d'abord recuperr la ligne du user
la mettre dans un tableau
puis dans les values du form
puis comme inscription.php -->

<?php
session_start();
/*stockons un identifiant valable 1 heure*/
$_SESSION['client']=md5( $_SERVER['REMOTE_ADDR'].date('YmdH') );

function copierImageAvatar($fichier=null,$repertoire='./lesavatars/'){
  
  if(isset($fichier) && !empty($fichier['name'])){
     
      // si formulaire soumis
      $content_dir = $repertoire; // dossier où sera déplacé le fichier
  
      $tmp_file = $fichier['tmp_name'];
  
      if( !is_uploaded_file($tmp_file) ){
          exit('Le fichier est introuvable [javascript:history.back(); retour]');
      }
  
      // on vérifie maintenant l'extension
      $type_file = $fichier['type'];
  
      if( !strstr($type_file, 'pjpeg') && !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') ){
          exit('Le fichier n est pas une image jpg [javascript:history.back(); retour]');
      }
  
      // on copie le fichier dans le dossier de destination
      $name_file = $_SESSION['client'].'.jpg';
  
      if( !move_uploaded_file($tmp_file, $where =$content_dir . $name_file) ){
          exit('Impossible de copier le fichier dans '.$content_dir.' [javascript:history.back(); retour]');
      }
  
      /*redimensionner à la volée*/
      
      $taille_min=120;
      $donnees=getimagesize($where);
      $image=imagecreatefromjpeg($where);
      if ($donnees[0] > $donnees[1]) { //paysage
      $largeur_finale=round(($taille_min/$donnees[1])*$donnees[0]);
      $hauteur_finale=$taille_min;
      }else{
      //portrait
      $hauteur_finale=round(($taille_min/$donnees[0])*$donnees[1]);
      $largeur_finale=$taille_min;
      }
       
      $image_mini = imagecreatetruecolor($largeur_finale, $hauteur_finale); //création image finale
      imagecopyresampled($image_mini, $image, 0, 0, 0, 0, $largeur_finale, $hauteur_finale, $donnees[0], $donnees[1]);//copie avec redimensionnement
      imagejpeg ($image_mini, $content_dir.$name_file);
      ImageDestroy($image_mini); 
      $_SESSION['avatar']=$content_dir.$name_file ;
  		unset($fichier);
      header('Location: inscription.php');
  
  }else{
  
  return false;
  
  }

}

if(isset($_FILES['avatar'])){
//echo '';
//print_r($_FILES['avatar']);
//echo '

';
/*un fichier est envoyé copiant le*/
echo copierImageAvatar($_FILES['avatar']);
}else{
}
?>




<?php
//VERIFICATION ENVOI DU FORMULAIRE
if(isset($_POST['username'],$_POST['password'],$_POST['passverif'],$_POST['email']))
{

  //anti xss
  foreach($_POST as $k => $v){
  $v=htmlentities(strip_tags($v));
  $_POST[$k]=$v;
  }
    
  
  //SI GET_MAGIC_QUOTES_GPC ACTIVE, ENLEVEMENT DE L'ECHAPPEMENT

  /*ça sert à rien c'est tjs à off en 2011
  if(get_magic_quotes_gpc())
{
$_POST['username'] = stripslashes($_POST['username']);
$_POST['password'] = stripslashes($_POST['password']);
$_POST['passverif'] = stripslashes($_POST['passverif']);
$_POST['email'] = stripslashes($_POST['email']);
//$_POST['avatar'] = stripslashes($_POST['avatar']);
}
*/

//VERIFICATION MOT DE PASSE ET CONFIRMATION MOT DE PASSE
if($_POST['password']==$_POST['passverif'])
{
//VERIFICATION MOT DE PASSE AVEC 6 CARACTERES OU PLUS
if(strlen($_POST['password'])>=6)
{
//VERIFICATION VALIDITE EMAIL
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
{

        /*attention il faut etre connecter pour utiliser mysql_real_escape_string*/
        mysql_connect('localhost','root','');  /*mettre tes identifiants*/
        
        //ECHAPPEMENT DES VARIABLES POUR INSERTION DANS REQUETTE SQL
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
echo $avatar = mysql_real_escape_string($_SESSION['avatar']); /*il faut un varchar 100 dans la table*/

//VERIFICATION SI PSEUDO CHOISI DEJA EXISTANT
$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'" limit1'));
if($dn===0)
{
//RECUPERATION NOMBRE UTILISATERURS POUR DONNER IDENTIFIANT A UTILISATEUR ACTUEL
//$dn2 = mysql_num_rows(mysql_query('select id from users'));
//$id = $dn2+1;
/*id dans la table doit etre primary autoincrement*/

          echo $sql="insert into users(
          id,
          username,
          password,
          email,
          avatar,
          signup_date
          )values(
          NULL,
          '".$username."',
          '".$password."',
          '".$email."',
          '".$avatar."',
          '".time()."'
          )";
           
           
          //ENREGISTREMENT INFORMATIONS DANS BASE DE DONNEES
if(mysql_query($sql))
{
//PAS D'AFFICHAGE DE FORMULAIRE SI FONCTIONNEMENT CORRECT
$form = false;
?>


MERCI DE VOTRE INSCRIPTION

[connexion.php ]


<?php
}
else
{
//MESSAGE SI ERREUR PENDANT INSCRIPTION
$form = true;
$message = 'ERREUR LORS L\'INSCRIPTION
MERCI DE RECOMMENCER';
}
}
else
{
//MESSAGE SI PSEUDO DEJA UTILISE
$form = true;
$message = 'PSEUDO DEJA UTILISE
MERCI D\'EN CHOISIR UN AUTRE';
}
}
else
{
//MESSAGE SI EMAIL INVALIDE
$form = true;
$message = 'EMAIL INVALIDE
MERCI DE LE VERIFIER';
}
}
else
{
//MESSAGE SI MOT DE PASSE TROP COURT
$form = true;
$message = 'MOT DE PASSE AVEC MOINS DE 6 CARACTERES
MERCI D\'EN CHOISIR UN AUTRE';
}
}
else
{
//MESSAGE SI MOT DE PASSE ET CONFIRMATION DE MOT PASSE NON IDENTIQUES
$form = true;
$message = 'MOTS DE PASSE NON IDENTIQUES
MERCI DE RECOMMENCER';
}
}
else
{
$form = true;
}


if($form===true)
{
//AFFICHAGE MESSAGE SI BESOIN EST
if(isset($message))
{
echo '
'.$message.'
';
}

//AFFICHAGE FORMULAIRE
?>


    
<form action="inscription.php" method="post" enctype="multipart/form-data" >
  INSCRIPTION
        
  
         
  
            
    <label for="username">NOM D'UTILISATEUR
    </label>
    " />
            
    <label for="password">MOT DE PASSE
      (6 caractères min.)
      
    </label>
    
            
    <label for="passverif">MOT DE PASSE
      (Vérification)
      
    </label>
    
            
    <label for="email">EMAIL
    </label>
    " />
            
    <label for="avatar">AVATAR
      (facultatif)
      
    </label>
    
 
    
    <?php
    if(file_exists($file='./lesavatars/'.$_SESSION['client'].'.jpg')){
    echo '';
    }else{
    //rien
    }    
    ?>
               
  
            
  
            
    		
  
    
</form>

<?php
}
?>





Bonne programmation !
Commenter la réponse de cod57

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.