activation d'un compte utilisateur

Mammouth du PHP | 843 Messages

17 sept. 2006, 19:52

salut à tous :)

je travail actuellement sur un site qui utilisera les sessions. Celui-ci dispose d'un formulaire d'inscription qui finalise l'inscription par l'envoi d'un mail avec le login et le pass du membre.

j'aimerai aussi activer le compte de utilisateur comme le font la plupart des forums via un lien sur le mail à envoyer :-k

pouver vous m'expliquer la methodologie à suivre pour ce lien activant un compte ;)

je ne voit pas vraiment comment cela fonctionne :?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

17 sept. 2006, 20:17

Le principe général n'est pas vraiment complexe : lorsque l'internaute s'inscrit, le script va d'une part enregistrer les informations et d'autre part générer un courriel comportant une adresse paramétrée. Cette adresse pointera vers une page d'activation, récupèrera les paramètres de l'url et effectuera les comparaisons nécessaires avec ce qui est dans la base de données puis, si la comparaison est satisfaisante, activera le compte en modifiant un des champs de type booléen.

Si l'internaute a donné une adresse bidon, il ne recevra jamais ce courriel et par conséquent ne pourra pas activer son compte.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 843 Messages

17 sept. 2006, 23:34

si je comprend bien, il n'y a pas de rapport avec les sessions... :-k

par contre l'interet des sessions sera plus au niveau de l'identification de l'utilisateur ainsi qu'au droit d'acces vers des pages qui lui seront réservées?

sinon, pour en revenir à l'histoire d'url parametrée, je suppose qu'elle sera génerée par le script avec "mixage" du login et du pass par exemple.

mon problème est que pour l'instant, mes urls des pages du site sont "classique" (http://www.adresse/ma_page.php), donc si quelqu'un connait un bon lien ou un tuto pour avoir des urls parametrées. ;)

merci d'avance :)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

18 sept. 2006, 07:45

Une url paramétrée, comporte au bout des paramètres et leur valeur, par exemple : http://mon.site.com/index.php?param1=va ... m2=valeur2 et ainsi de suite. Dans la page en question, tu récupères chaque paramètre dans la super globale $_GET. Ici, tu récupèreras "valeur1" dans $_GET['param1'] et "valeur2" dans $_GET['param2']

Ce n'est donc pas vraiment difficile, tu vérifie au départ l'existence des paramètres et ensuite tu procèdes aux vérifications avec les valeurs. Exemple sommaire :
<?php
/* Page d'activation */
$param1 = isset($_GET['param1']) ? $_GET['param1'] : "";
$param2 = isset($_GET['param2']) ? $_GET['param2'] : "";

/* Vérification de l'existence des valeurs */
if(!empty($param1) && !empty($param2))
{
    // traitement des valeurs récupérées
}
else
{
    // une ou plusieurs valeur sont absentes, on redirige vers une page d'erreur
    header("Location: erreur.php");
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 843 Messages

18 sept. 2006, 08:15

merci Cyrano, je croit que j'ai bien compris le truc :D

pour en revenir à mon cas, je pense que lors de le generation du mail, je vais inserer le pseudo dans l'url du lien pour l'activation. Ensuite, sur ma page d'activation, je vais acceder à ma db membre et modifier le champ activation de ma table pour le mettre à true. Comme ça, il ne me restera plus qu'à associer à chaque sessions le pseudo (pour l'identification sur chaque page), ainsi que la variable true du champ d'activation de ma table afin de controler l'acces aux pages reserver aux membres...

je ferai aussi une redirection vers une page d'erreur comme tu me l'a expliqué, au cas ou il y ai un soucis, bien que je voit pas d'où il pourrai venir :-k

en tout cas, encore merci pour ton aide et j'espère que cela servira à d'autres ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 441 Messages

18 sept. 2006, 09:38

merci Cyrano, je croit que j'ai bien compris le truc :D

pour en revenir à mon cas, je pense que lors de le generation du mail, je vais inserer le pseudo dans l'url du lien pour l'activation. Ensuite, sur ma page d'activation, je vais acceder à ma db membre et modifier le champ activation de ma table pour le mettre à true.
En général on ajoute dans les paramètres une clé qui est générée aléatoirement à l'inscription... sinon on pourrait activer un compte sans même attendre le mail... :)
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes

Mammouth du PHP | 843 Messages

18 sept. 2006, 12:46

et cette clé aléatoire est stocké dans la db aussi je suppose?

si quelqu'un peut m'expliquer comment la créé?

merci d'avance ;)

[EDIT] j'ai trouver ceci dans la doc et cela devrai faire mon bonheur :)
<?php

  function randomkeys($length)
  {
   $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
   for($i=0;$i<$length;$i++)
   {
     $key .= $pattern{rand(0,35)};
   }
   return $key;
  }

  echo randomkeys(8),"<br>";
  echo randomkeys(16),"<br>";
  echo randomkeys(32),"<br>";
  echo randomkeys(64),"<br>";

?>
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

18 sept. 2006, 13:28

j'ai essayer de modifier la fonction de clé aléatoire precedente mais j'ai une notice que je n'arrive pas à faire disparaitre :?
Notice:Undefinied variable: key in c:/....... on line 5
j'ai fait ceci:
<?php
$pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
for ($i=0;$i<16;$i++)
{
$key .= $pattern{rand(0,35)};
}
echo $key;
?>
pouvez vous m'aider svp :)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

18 sept. 2006, 13:44

Il faut initialiser toujours les variables, surtout si elles sont utilisées pour la première fois dans un calcul ou concaténation.
  function randomkeys($length) 
  { 
   $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
   $key = ""; // <-- ici : initialisation
   for($i=0;$i<$length;$i++) 
   { 
     $key .= $pattern{rand(0, strlen($pattern)-1)};  //<-- taille automatique de pattern
   } 
   return $key; 
  } 

  echo "<b>Clé sur 8 bits:  </b>".randomkeys(8),"<br>"; 
  echo "<b>Clé sur 16 bits: </b>".randomkeys(16),"<br>"; 
  echo "<b>Clé sur 32 bits: </b>".randomkeys(32),"<br>"; 
  echo "<b>Clé sur 64 bits: </b>".randomkeys(64),"<br>"; 
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 843 Messages

18 sept. 2006, 14:08

merci, c'etait bien ça ;)

j'essaye de mettre tout cela en place et je revient mettre résolu si tout est ok :)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 441 Messages

18 sept. 2006, 14:38

et cette clé aléatoire est stocké dans la db aussi je suppose?
Exactement ;)
Futures Stars par ici >> www.apel-doorn.com
fan d'info et du ... PSG !! :D
Apprendre, comprendre et maîtriser telle est ma devise!
Fan inconditionnel de netvibes