Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/03/2007, 13h45   #1
Membre à l'essai
 
Inscription : novembre 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 127
Points : 21
Points : 21
Par défaut paramètres sur un lien et variables aléatoire

Bonjour,
j'ai deux soucis:
-le premier c'est celui de créer une variable de 8 caractères (avec chiffres et lettres) et le stocker dans une base mais il faut qu'elle soit unique dans la base.Sachant que cette variable est créée de façon aléatoire, je me demande comment il faut faire le test avant stockage dans la base ?

-le deuxième c'est celui d'un lien qui mène vers une page . Ce lien a un paramètre que je ne souhaite pas qu'on voit sa valeur.Comment je peut l'encoder?
Exemple:
........mapage.php?Truc=valeurquejeneveutpasqu'onvoit&Truc1=autrevaleur
lorsque je reçois un mail, il y a souvent des liens de la forme:


.......messages.php?sid=d6ff217d7ed14697e91f952e11826553

Il apparaît que la valeur de sid est encodée ? mais comment ?

Je vous remercie d'avance de votre aide.Même un tuto qui explique cela m'arrangerai.
opeo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 13h54   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Pour ta première question ta demande me semble étrange : stocker un champ unique dans la base, cela signifie que ton champ en question est un index ou une clé primaire.

Or ce type de champ construit aléatoirement, je ne vois pas l'interet.
Sinon tu peux générer un nombre aléatoire et vérifier qu'il n'est pas dans la base, et recommencer s'il l'est.

Pour ta deuxième question tu peux utiliser un principe de codage/décodage (exemple du rsa) pour coder ton attribut passé en get.

Une autre méthode consiste à envoyer les identifiants en clair accompagnés d'un attribut de controle qui sera par exemple les champs concaténés et cryptés en md5.
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 13h58   #3
Membre habitué
 
Inscription : mars 2007
Messages : 87
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 87
Points : 109
Points : 109
bonjour,

pour l'unicité tu peux utiliser la propriété UNIQUE des colones dans une table. Celle-ci s'attribue à la création de la table (c'est une propriété de la base de données qui n'a rien à voir avec PHP). Si tu utilise PHPMyAdmin, tu peux cocher cette option lors de la creation d'une nouvelle table dans la colone visée.

pour l'encodage, tu peux utiliser base64_encode et base64_decode
supergogol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 14h13   #4
Membre à l'essai
 
Inscription : novembre 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 127
Points : 21
Points : 21
Merci à tous,
effectivement mon champ est un index .Je vais essayer de mettre en pratique vos conseils et je vous tiendrai au courant.
opeo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 14h53   #5
Membre à l'essai
 
Inscription : novembre 2005
Messages : 127
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 127
Points : 21
Points : 21
j'ai utilisé les fonctions base64_encode et base64_decode en y ajoutant quelques suppléments et ça marche.
Pour ce qui est de mon champ index, je n'arrive pas lui alouer des variables uniques de façon aléatoire.En effet j'aimerai utilisé ce champ comme reférence de l'enregistrement.Bien évidemment cet enregistrement comporte aussi une clé primaire qui a son intérêt.
voilà à peut près l'algo:
A-création d'une avriable à 8ktères
B-vérification de sa présence dans la base
1-si pas présent dans la base alors le stocker dans le champ index
2-si présent dans la base alors revenir en A

c'est revenir en A qui me pose un problème dans ce langage.
Pourriez vous m'aider ?
En vous remerciant.
opeo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 14h56   #6
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Code :
1
2
3
4
5
6
7
8
 
fin<-- faux
Répéter
      generer(code_aleatoire)
      si non verifier_en_base(code_aleatoire) alors
         fin <-- vrai
      fin si
Jusqu'à fin = vrai
Dans ce langage précis (je n'avais pas vu cette précision)
Code :
1
2
3
4
5
6
7
8
9
10
 
$fin = false;
do
{
   generer($code_alea);
   $res = mysql_query("select champ from matable where champ='".$code_alea."'");
   if(!($row = mysql_fetch_row($res)))
      $fin = true;
}
while($fin == false);
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h48.


 
 
 
 
Partenaires

Hébergement Web