cqgclub
infos logo rss
Statistiques Stats depuis le 8 juin 2007.
Visiteurs connectés actuellement : 4
Visiteurs uniques : 1358
Nombre de Visiteurs : 3095
Total des pages vues : 33080
Record des visites simultanées
Le 30/10/2009) : 8


Vérifier la validité d'un abonnement avec la date

pfiouuuu...j'en ai bavé avec les dates.
Il y a tellement de fonctions php et tellement de possibilités que l'on peut se retrouver un peu perdu.
Mettre une date dans une table mysql est super facile, mais j'ai pas trouvé le moyen d'aller la chercher !
Alors si toi aussi t'es un noob et que tu aimerais utiliser des dates pour gérer des droits d'acces, ce code est fait pour toi. Ou pas.

Mettre la date dans la base de donnees.

On va commencer par le commencement, rentrer la date dans une table.
J'ai décidé de rentrer la date courante et non la date d'expiration.
C'est bien parce qu'il n'y a qu'une variable à modifier si on veut changer la durée de l'abonnement, mais c'est moins pratique si l'abonné veut prolonger son abonnement avant la date d'expiration.
En fait il suffira de faire un petit calcul de prorata...enfin ces modifications vous les ferez vous même, selon vos besoins :)

Creation de la table

Une autre table contient les données concernant l'utilisateur, on utilise un identifiant simple pour le retrouver plutot qu'un pseudo ou une adresse mail.
La table ci-dessous ne contient que l'identifiant de l'utilisateur et la date d'abonnement.
CREATE TABLE abonnement (
id_user INT(6),#identifiant unique
date_abonnement date,#colonne date
primary key(id_user)
);

Rentrer les données dans la table

Pour que les plus noobs d'entre vous puisse rester avec les moins noobs je vous mets le formulaire ainsi que son traitement permettant d'effectuer une nouvelle entrée dans la table abonnement.


<?php
//identifiants. Ces variables se placent en général dans un fichier qu'on peut appeler config.php et qu'on appelle avec la commande include.
$host="adresse_serveur_mysql";
$user="nom_utilisateur_mysql";
$password="password_utilisateur_mysql";
$database="ma_base";
//on se connecte à la base de données
$connexion= mysql_connect($host,$user,$password) or die ("connexion au serveur mysql impossible !");
$db= mysql_select_db($database, $connexion) or die ("connexion a la base de donnees impossible !");

//on regarde si le formulaire a été envoyé
if(isset($_GET['form']))
{
  //on crée l'entrée
  $requete="INSERT INTO abonnement(id_user,date_abonnement) VALUES('".$_POST['id_user']."',now())";//now() correspond a la date courante.
  $execute=mysql_query($requete) or die('impossible d\'executer cette requete :<br />'.$requete);
  //on affiche le résultat
  echo "L'utilisateur dont l'identifiant est ".$id_user." est abonné.<br />";
  //pour connaitre un fonction de plus je vous montre comment afficher la fin de l'abonnement (celui-ci dure un an)
  $expiration= date("Y-m-d",strtotime("next year gmt"));//on ajoute 1 an à la date courante
  echo "L'abonnement sera expiré le : ".$expiration."<br />";
}

//on affiche le formulaire
echo '
<form method="post" action="'
.$_SERVER['PHP_SELF'].'?form=yes">
Saisir l\'idenfiant de l\'utilisateur :
<input type="text" name="id_user" />
<input type="submit" />
</form>
'
;
?>
 

Vérifier la validité d'un abonnement.

Maintenant qu'on a plein d'utilisateurs abonnés, il faut vérifier que leur abonnement est toujours valable, sans quoi on leur coup la tête.


<?php
//identifiants. Ces variables se placent en général dans un fichier qu'on peut appeler config.php et qu'on appelle avec la commande include.
$host="adresse_serveur_mysql";
$user="nom_utilisateur_mysql";
$password="password_utilisateur_mysql";
$database="ma_base";
//on se connecte à la base de données
$connexion= mysql_connect($host,$user,$password) or die ("connexion au serveur mysql impossible !");
$db= mysql_select_db($database, $connexion) or die ("connexion a la base de donnees impossible !");

//on regarde la date d'expiration de l'abonnement de l'utilisateur 20. Celui-ci s'est abonné le  2009-03-10 (format date de mysql)<br />";
$requete="SELECT * FROM abonnement WHERE id_user=20";
$exec=mysql_query($requete) or die('impossible d\'executer cette requete :'.$requete);
//une fois la requete effectuée on extrait les données, je suis sur qu'il y a plus court mais bon ça marche...
while ($ligne = mysql_fetch_array($exec))
extract($ligne);
echo "la date est".$date_abonnement."<br />";//maintenant on peut afficher le contenu de la table en utilisant le nom de la colonne comme variable, c\est trop super.

//parce que je ne sais pas utiliser la date contenue dans la table : j'explose,
//je pense que ça ressemble à du bricolage mais bon, ce tuto est pour les noobs :)
$ma_date=explode("-",$date_abonnement);
//maintenant on a le jour, le mois et l'année
echo "l'annee : ".$ma_date[0]."<br />
le mois : "
.$ma_date[1]."<br />
le jour : "
.$ma_date[2]."<br />";

//on transforme la date en nombre de seconde entre le début de l'aire UNIX (1er Janvier 1970 00:00:00 GMT) et la date.
//Pour obtenir la date d'expiration on ajoute 1 an
$date_expiration=mktime(0,0,0,$ma_date[1],$ma_date[2],$ma_date[0]+1);//mktime(heures, minutes, secondes, mois, jour, année)
//on affiche le résultat
echo "date d'expiration en secondes : ".$date_expir."<br />";

//on trouve la date actuelle en secondes
$date_actuelle=strtotime("now");
echo "la date actuelle en secondes est : ".$date_actuelle."<br />";

//il ne reste plus qu'a comparer les 2 dates. Si la date d'expiration a plus de secondes que la date actuelle c'est bon :)
if($date_actuelle<=$date_expiration) echo "abonnement valide";
else echo "abonnement expiré";

?>
 

bouton de style marron bouton de style rouge bouton de style bleu bouton de style rose bouton de style vert bouton de style orange Votre @IP : 38.107.191.99