Cyptage variable

Résolu
jalalnet Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
ya une manière pour crypte les donné transit par un URL

<a href="news_rediger.php?billet=<?php echo $donnees['id']; ?>">


j'ai essayé ça

<a href="news_rediger.php?billet=<?php echo crypt($donnees['id']); ?>"> 


mais faut décypté le variable dans la page destinataire pour l'utlilisé,je sais pas comment

4 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut.

urlencode() fonctionne très bien, mais il sert à "échapper" les caractères non-autorisés dans les URL afin d'avoir des URL valides. Donc ton texte ne subira aucune transformation.

crypt() utilise un algorithme de hashage, c'est-à-dire à sens unique.
En d'autres mots, ça ne peut pas être décrypté.

Pour pouvoir crypter et décrypter, il va falloir générer une paire de clés de cryptage (souvent en RSA ou DSA). Pour les utiliser avec PHP, tu pourras utiliser ceci.

Mais ça serait bien que tu nous explique pourquoi tu souhaites crypter les données dans l'URL. Peut-être que tu n'as pas besoin de quelque-chose d'aussi complexe.
1
jalalnet Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   10
 
euh juste j'aimerais comprendre le système de validation un compte par email
le lien de validation comporte le passe crypté c pour cela
0
jalalnet Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   10
 
autre chose parfois je transmettre un ensemble de variable dans l URL
est je trouve c'est pas pratique que tous les données soit visible dans l'url
0
Twinpics
 
0
jalalnet Messages postés 293 Date d'inscription   Statut Membre Dernière intervention   10
 
ça marche pas
<a href="cible.php?billet=<?php echo urlencode(donnees['id']); ?>">
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
En es-tu sûr que c'est le mot de passe crypté qui est passé ?
C'est peut-être une chaine générée.

Pour la validation, tu peux créer une nouvelle table (activation_keys) contenant ces champs :
- key (TINYTEXT) : Contiendra une chaine générée
- user_id (INT) : Contiendra l'ID du membre à valider

Sur la table des membres, ajoute une colonne "is_valid" (BOOLEAN ou TINYINT limité à 1). Ce champ vaudra 0 ou 1 (true / false)

Lorsqu'un membre s'inscrit, récupère son nouvel identifiant (mysql_insert_id)
Ensuite, génère une chaine : uniqid(md5($_SERVER['REQUEST_TIME']).'_')
Après, ajoute les données dans la table activation_keys :
$sql = 'INSERT INTO activation_keys(key, user_id) VALUES("'.$key.'","'.$userid.'")';


Pour terminer, il faudra envoyer un email contenant ce lien :
http://example.com/validation.php?key={$key}


Sur la page validation.php, il faudra vérifier si la clé est présente dans la table.
Si non, alors tu affiches une erreur.
Si oui, alors tu récupères l'ID de l'utilisation :
$sql = 'SELECT user_id FROM activation_keys WHERE key = "'.$_GET['key'].'"';
(pense à protéger les variables, je fais simple)

Ensuite, mets à jour le champ is_actif de la table des membres :
UPDATE membres SET is_actif = 1 WHERE id = {$user_id}


N'oublie pas de supprimer l'entrée dans validation_keys :
DELETE FROM validation_keys WHERE key = {$_GET['key']}


Pour lutter contre les robots, tu peux ajouter la demande du mot de passe et un captcha.
0