IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Quelle solution pour un code remise aléatoire ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    Par défaut Quelle solution pour un code remise aléatoire ?
    Bonjour,

    Je cherche à générer des codes remises uniques par client. Ces codes ne seront utilisables qu'une fois. Je bloquerai donc les codes utilisés.

    J'ai différentes solutions possibles :

    1) faire un incrément de x à n
    Mais dans ce cas, si en tant que client j'ai un code remise 1536, il est facile d'essayer le 1537 pour voir si la remise est toujours active.

    2) faire une création aléatoire de code remise avec rand(0, 999999) concaténer avec une lettre aléatoire et contrôler que le code récupérer n'existe pas déjà.

    3) Faire une création aléatoire de code remise avec uniqid() (différente variante d'utilisation possible) mais dans ce cas le code remise est trop long.

    Le plus sur me semble la solution 3, mais le code résultant est trop long. 7 caractères pour un code remise me semble suffisant pour la ménagère de xx ans.

    La solution 1 n'est pas fiable.

    Reste la 2.

    Avant de me lancer avec cette solution, avez-vous d'autres choses à me proposer ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Si un code est a attribué a un client tu peux avoir une table "remises" dans ce style :

    - champs idCLient
    - champs codeRemise
    - champs isUtilise

    Après quelle que soit ta méthode de génération , seul le code attribué a un client précis et non utilisé peut fonctionner.
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    Par défaut
    Citation Envoyé par RideKick Voir le message
    Si un code est a attribué a un client tu peux avoir une table "remises" dans ce style :

    - champs idCLient
    - champs codeRemise
    - champs isUtilise

    Après quelle que soit ta méthode de génération , seul le code attribué a un client précis et non utilisé peut fonctionner.
    Merci.

    Le code généré est certes adressé à un client, mais il peut en faire bénéficier quelqu'un d'autre s'il le souhaite. Ce qui est souvent le cas.

    Donc le code remise doit être indépendant du code client.

    Pourquoi ne récupérerais-tu pas 3 lettres au hasard du prénom et du nom que tu mélangerais puis tu concatène ça à son user_id ?
    Peut être un peu compliqué, mais comme ça avec l'id tu es sur qu'il unique, et difficile à trouver pour un utilisateur lambda...
    C'est effectivement une base intéressante. Je récupérerai 3 lettres au hasard du nom et du prénom puis un rand(0, 99999).

    Je serai de toute façon obligé de contrôler qu'il n'existe pas déjà.

    Pour récupérer les 3 lettres aléatoires, je ferai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $mot = str_replace(' ','',$client['client_nom'].$client['prenom']);
    $lettres = "";
    $i = 0;
    $longueur = strlen($mot);
    for($i = 0 ; $i <= 2; $i++)
    {
    $lettres .= substr($mot, rand(0, $longueur), 1);
    }
    Ensuite je concate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $code_remise = $lettres.rand(0,99999);
    Oui c'est intéressant et je suis indépendant du client.

  4. #4
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 067
    Par défaut
    Merci, je continue à creuser

  5. #5
    Membre chevronné Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Par défaut
    Pourquoi ne récupérerais-tu pas 3 lettres au hasard du prénom et du nom que tu mélangerais puis tu concatène ça à son user_id ?
    Peut être un peu compliqué, mais comme ça avec l'id tu es sur qu'il unique, et difficile à trouver pour un utilisateur lambda...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/06/2006, 09h53
  2. Quelle solution pour un transfert sécurisé entre deux machines
    Par choubiroute dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 21/04/2006, 12h20
  3. Quelle solution pour partager des données entre Linux ?
    Par herzleid dans le forum Administration système
    Réponses: 5
    Dernier message: 03/04/2006, 17h19
  4. Quelle solution pour un Timer ?
    Par Bruno13 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/03/2006, 18h01
  5. [Outils][C#] Quelle solution pour Animations 2D de Jeux ?
    Par orelero dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 01/02/2006, 19h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo