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

PHP & Base de données Discussion :

durée de validité [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut durée de validité
    Bonjour,

    Je suis en train de travailler sur un site e-commerce (prestashop) et je voudrais mettre un système d'abonnement en place mais je n'ai aucune idée sur la manière à adopter.

    On gros il aura 3 abonnements qui seront valables 3 mois, 6 mois et 12 mois
    Après avoir souscris un de ces abonnements l'utilisateur aura accès à un services accessible via son pseudo et mdp.

    Jusqu'ici pas de soucis.

    Comment faire pour que son accès expire automatiquement, sans que ses identifiants soient supprimés?

    merci

  2. #2
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Faut réfléchir autrement.
    Tu sais à quel moment il s'est inscrit et à quel moment il prend un abonnement. ça fait 2 champs date en base, même si je te conseille sérieusement de mettre les abonnements dans une table séparée, pour le cas où il renouvellerait son abonnement, ça te permettra d'avoir un historique.
    A chaque fois qu'il se connecte, tu regardes si l'abonnement est toujours valable. Si oui, tu laisses filer, si non, tu modifies l'abonnement pour le signaler comme arrivé à terme et tu remontes l'info à l'utilisateur comme quoi l'abonnement est expiré.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    merci pour cette réponse, seulement moi et php ca fait deux
    alors si quelqu'un pourrait me coder cela pour qu'on puisse le coupler avec prestashop je paierais prix

    merci

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Tu poura faire deux champ dans la table client : date_abonnement, date_fin_abonnement .
    le champs date abonnement prendra la date ou il est inscrit et le champs date_fin_abonnement prendra la date_abonnement + nombre_de_jour_de_labonnement_selectione.
    comme ca a l'authentification tu verifier si la date systeme est entre ces deux champs

  5. #5
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    Et comment je dois vérifier la validité en sachant que le client ne passe pas par site web?

    C'est freeradius qui s'occupe d'authentification c'est donc de ce couté là que je dois bidouiller? Ca c'est complique encore plus...


    merci

  6. #6
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    On s'en fout que son abonnement soit valide ou non si il ne l'utilise pas, non? C'est quand il cherche à l'utiliser qu'on vérifie si il y a encore droit. Donc oui côté authentification.

    C'est un peu comme si Microsoft vérifiait tous les jours si ta licence Office est toujours valable. Ils en ont rien à secouer, sauf que lorsque tu vas démarrer Office, lui va vérifier si t'as encore le droit de t'en servir.

  7. #7
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    Ok je vois mieux.

    Maintenant de quel manière je dois vérifier le champs "date" ? Avez vous un bout de code?

  8. #8
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Euh grosso modo volontairement allégé, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($dateCourante>($dateSouscription + $dureeAbonnement)) {
      // hop mec faut que tu repasses à la caisse
    }
    Une vérif classique quoi.
    On va pas non plus te mâcher le travail. Des scripts de comparaison de date en php, il y en a plein sur le net et sur ce forum.

  9. #9
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    bon, si j'ai bien compris il faut que je modifie le fichier dialup.conf de freradius et notamment cette partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    authorize_check_query = "SELECT id, username, attribute, value, op \
              FROM ${authcheck_table} \
              WHERE username = '%{SQL-User-Name}' \
              ORDER BY id"
    	authorize_reply_query = "SELECT id, username, attribute, value, op \
              FROM ${authreply_table} \
              WHERE username = '%{SQL-User-Name}' \
              ORDER BY id"
    Maintenant comme faut t il modifier en sachant que le champ de date d'expiration se trouve dans une autre table?

    Le table est "order_detail" et le champ est "download_deadline"

  10. #10
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Euh je t'avouerai qu'après là moi, je ne connais ni prestashop, ni freeradius, ça dépasse le cadre de ce que je suis capable de te répondre.
    Mais j'ai l'impression que dans ce que tu remontes, on cherche juste à choper des infos utilisateur. Je sais pas trop si c'est là que c'est faisable. Enfin j'en suis pas convaincu mais je ne pourrai pas l'affirmer pour autant vu que je ne connais pas le système.

  11. #11
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    oui effectivement, je cherche à dire à freeradius d'aller vérifier user et mdp (ce qu'il fait par défaut) et en plus vérifier la date de validité dans une autre table (celle de prestashop)

  12. #12
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    j'avance un peu.

    Après la lecture de la doc, il s'avère que freeradius peut gérer la validité des comptes nativement (en fin après quelques modifications):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sqlcounter noresetcounter {
            counter-name = Max-All-Session-Time
                    check-name = Max-All-Session
                    sqlmod-inst = sql
                    key = User-Name
                    reset = never
            query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}'
    "

    On ajoute le nombre de secondes dans la table est le tour est joué.

    Maintenant je cherche de pouvoir mettre une date de genre 28/12/2010 au lieu de le nombre des secondes

  13. #13
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    ça m'étonnerait que cette modif soit faisable/envisageable/réaliste. Le nombre de secondes, ce qu'on appelle un timestamp, est une sorte d'astuce pour simplifier la vie du développeur. ça facilite énormément les calculs sur le temps.
    En tout cas, c'est cool que tu partages l'info qu'il est possible d'ajouter ce contrôle et que c'est accessible en lisant la doc. Toujours bon à savoir

  14. #14
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    En fait je cherche à mettre la date plutôt que le nombre de secondes car après l'expiration pour pouvoir renouveler l'abonnement il faut d'abord mettre à zero (reset) , la choses je ne sais pas (encore) faire

  15. #15
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    En fait, après la réflexion, je crois lorsque utilisateur renouvelle l'abonnement il suffit ajouter le nombre de secondes sur celui présent déjà dans la BDD non?

  16. #16
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    C'est tout à fait ça

  17. #17
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    ok, mais le soucis que j'ai maintenant ce que freeradius compte le temps qu'on passe sur le serveur or je voudrais que le temps continuer à s'ecouler même après la déconnexion.

    Autrement si un utilisateur souscris par exemple un abonnement d'un mois (2592000 secondes) rien lui empêche de l'utiliser sur une durée d'un an et ce n'est pas ce que je cherche

  18. #18
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Ah ouais plus compliqué. Si tu connais la date de renouvellement/souscription (je suppose que oui), tu n'as qu'à soustraire les secondes de différence entre la connexion et la date de renouvellement/souscription et après tu contrôles si il a toujours le droit. Tu contournes ainsi la sécurité suggérée.

  19. #19
    Membre averti
    Inscrit en
    Novembre 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 40
    Par défaut
    je me demandai cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}'"
    C'est de SQL non?

    Si c'est le cas peut être qu'on peut lui dire au lieu de compter le temps dans le champ AcctSessionTime aller plutôt voir un autre champ avec une date de type jj/mm/année et la comparer avec la date actuelle, ca doit être possible ca?

  20. #20
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Tu as reçu des réponses concernant comment faire un système d'abonnements. Je suppose à ce niveau ca va. Pour ce qui est de la modification de Prestashop ou autre cms, je te conseille de chercher des forums dédiés.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Limitation de la durée de validité de l'appli ?
    Par bastringue dans le forum Sécurité
    Réponses: 4
    Dernier message: 06/05/2008, 21h31
  2. Durée de validité d'un mot de passe
    Par aicfr dans le forum Sécurité
    Réponses: 1
    Dernier message: 09/12/2006, 14h45
  3. [nom de domaine] durée de validité
    Par sympho dans le forum Domaines
    Réponses: 3
    Dernier message: 18/12/2005, 13h08
  4. [CGI] durée de validité de HTTP_AUTHORIZATION
    Par didier.cabale dans le forum Autres langages pour le Web
    Réponses: 13
    Dernier message: 26/05/2005, 12h19
  5. Durée de validité d'un export
    Par Righetto Dominique dans le forum Linux
    Réponses: 3
    Dernier message: 07/04/2004, 12h14

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