Page 1 sur 2

Les crons

Posté : 04 juil. 2011, 18:51
par poliboolold
Bonjour voulant construire un systeme de bannisement ou je n'ai pas besoin de débannir maluement
ex: bann de 2 semaines et debann automatique
On m'a orientée vers les crons

sauf que je sais pas ce que c'est
et j'ai trouvé aucun tuto clair la-dessus

Si quelqu'in pourrait m'expliquer ca serait gentil
Merci :D

Re: Les crons

Posté : 04 juil. 2011, 20:17
par Mazarini
Bonjour,

cron est un outil Unix/Linux qui permet d'exécuter des commandes de manière régulière. Tu peux en particulier lancer un script PHP en ligne de commande ou lancer un appel à une page http.

http://www.generation-linux.fr/index.ph ... -avec-Cron

Re: Les crons

Posté : 04 juil. 2011, 20:37
par sirakawa
Les crpon c'est bien ce qu'on t'a dit:
table de taches à faire à des dates fixées, ou a des intervalles fixés...
Tous les dimanches du mois de mai réciter
cinq je vous salue marie
Tous les diamnches de janvier réciter
Je vous salis ma rue.
Mais ça ne va jamais suffire pour régler le problème des bans, sauf si tu mémorises dans un quelconque fichier, ou une table d'une base de données la liste des bannis, la date et la durée de leur bannissement.
Tu peux imaginer que ton cron lance tous les jours un programme quelconque qui identifie la date, lise la liste des bannis, en déduise ceux qu'on peut débannir, et mette à jour la liste en question (Surement plus simple via une BDD que par un fichier).

Mais ton appli pourrait peut-être créer sur la machine serveur un fichier dont le nom permet d'identifier la personne:
si j'ai pour login "bilou", et si je suis banni , l'appli dépose un fichier bilou.ban qui contient la date de fin de ban.
Lorsque je cherche à me connecter, l'appli vérifie qu'il n'existe pas un fichier bilou.ban; s'il n'y en a pas, elle me laisse entrer, sinon elle lit le fichier et en déduit si elle peut me laisser entrer; si oui, elle supprime ce fichier, sinon elle me jette.

Il doit y avoir moyen de passer par les cookies, mais je ne suis pas certain qu'ils ne puissent pas être supprimés brutalement par le client.
Ils contiennent une notion de durée de validité; c'est utilisé, je pense, sur des sites de jeux gratuits.

M Billard

Re: Les crons

Posté : 04 juil. 2011, 21:00
par poliboolold
Ah mais c'est un truc qui est pas activé par défaut chez l'herbergeur?

Re: Les crons

Posté : 05 juil. 2011, 11:35
par jojolapine
Bonjour,

Si par hébergeur tu parles de mutualisées "low-cost", oui ça n'est pas disponible.
Il existe des services externes comme http://webcron.org pour palier à ce problème.
Ils permettent de se connecter intervalles précis sur une url de ton site ( http://exemple.com/crons/daily.php ) et permettent également d'accéder à des ressources protégées par htaccess.
Ainsi tu pourras être que ton cron n'est éxécuté qu'une fois et pas par des visiteurs trop curieux.

Re: Les crons

Posté : 05 juil. 2011, 12:10
par poliboolold
Oui j'ai vérifier : mon hebergeur propose les crons

mais conretement en code : si je veux par exemple que mon cron affiche une fenetre pop-up disant bonjour tous les lundis a 12h20 sur ma page index.php
Quelle code devrai-je marquer?

Merci d'avance

Re: Les crons

Posté : 05 juil. 2011, 12:28
par sirakawa
Ah mais c'est un truc qui est pas activé par défaut chez l'herbergeur?
:?: Comme j'ai parlé de plusieurs trucs différents, je ne comprends pas à quoi tu réponds.
Si tu es chez un hébergeur, ça m'étonnerait que tu puisses créer ta crontab personnelle.
mais cette bidouille me plait bien :idea: : comme fichier index.php
 
<?PHP
/** le bannissement */
mysql_connect ();
mysql_select_db ("blog");
/** la table bannis a deux colonnes
id int(11) (numero du banni)
datefin date (date de fin de bannissement)
*/
/** bannir qqn pour une semaine*/
$numero_banni = 313; // toute valeur fournie par toi
// casse indifférente (DAY ou HOUR ou MINUTE entre autres)
$requete = "insert into bannis (id,  datefin) values( $numero_banni, DATE_ADD(NOW(),  INTERVAL 7 DAY))"; 
mysql_query ($requete);
/** pendant qu'on le bannit on peut voir débannir ceux qui ont passé la date
on devrait caser ça aussi avant chaque tentative de connexion*/
$requete = "delete from bannis where datefin < now()"; // il faut mettre < parce que now() renvoie date et heure... ca fait, involontairement de ma part, un ban à la seconde près... 
mysql_query ($requete);
?>

Re: Les crons

Posté : 05 juil. 2011, 12:41
par jojolapine
mais conretement en code : si je veux par exemple que mon cron affiche une fenetre pop-up disant bonjour tous les lundis a 12h20 sur ma page index.php
Quelle code devrai-je marquer?
Concrètement, un cron ne te permet pas de faire celà.
Il te permet d'effectuer des traitements sur des données, modification de base de donnée, suppression de fichiers de caches obsolètes, envoie de mails, etc...
En suite à toi de programmer en fonction.

Si par exemple, tu souhaites prévenir que l'utilisateur n'est plus bannis, dans ton cron, tu envoies uniquement le mail et tu modifies la base de donnée si besoin.

Ensuite reste à savoir comment tu stockes le fait qu'un utilisateur est banni ou non...
Il n'est pas forcément nécessaire d'avoir un cron...
En admettant que tu stocke la date de dernier banissement ainsi que la durée du banissement (disons en jours).
Tu peux savoir si l'utilisateur est banni, au sein même d'un requête sql:
SELECT
id, username, email, etc...
( DATE_ADD(date_banissement, INTERVAL duree_banissement DAY) > NOW() ) as is_banned
FROM
tatableutilisateurs

Re: Les crons

Posté : 05 juil. 2011, 13:28
par sirakawa
mais concretement en code : si je veux par exemple que mon cron affiche une fenetre pop-up disant bonjour tous les lundis a 12h20 sur ma page index.php
Quelle code devrai-je marquer?
Pour ca, il suffit de ça:
<?PHP
date_default_timezone_set('Europe/Paris');
$aujourdhui = getdate();
$heure = $aujourdhui ['hours'];
$minutes = $aujourdhui ['minutes'];
if ($heure == "13"):
print "<script text ='text/javascript'> alert ('bonjour')</script>";
endif;
?>

Re: Les crons

Posté : 05 juil. 2011, 13:41
par moogli
mais concretement en code : si je veux par exemple que mon cron affiche une fenetre pop-up disant bonjour tous les lundis a 12h20 sur ma page index.php
Quelle code devrai-je marquer?
Pour ca, il suffit de ça:
<?PHP
date_default_timezone_set('Europe/Paris');
$aujourdhui = getdate();
$heure = $aujourdhui ['hours'];
$minutes = $aujourdhui ['minutes'];
if ($heure == "13"):
print "<script text ='text/javascript'> alert ('bonjour')</script>";
endif;
?>
NON il ne peux le faire a partir de cron, c'est exécuter sur le serveur comme PHP, il n'aura jamais accès à un navigateur quel qu’il soit !!!!!

sont script ne sert qu'a l'affichage d 'une page affichera tout cela tant qu'il sera 13h (donc pendant une heure si tu a ça sur le site oueb tu ferme la fenêtre ^^

Re: Les crons

Posté : 05 juil. 2011, 15:21
par sirakawa
NON il ne peux le faire a partir de cron, c'est exécuter sur le serveur comme PHP, il n'aura jamais accès à un navigateur quel qu’il soit !!!!!

Ai-je jamais dit que c'était faisable à partir du cron?

remarque subtile, mais mal venue:
1) un alert ne reste affiché que tant qu'on ne le ferme pas et ne se réaffiche que si l'on repasse à l'endroit qui le déclenche.
2) il s'affichera au chargement de la page si on met ce code au début; de plus, on peut rafiner:
<body onload ='cequejenecriraipas()'>
3) la condition peut être changée...
M.B.

Re: Les crons

Posté : 05 juil. 2011, 19:17
par poliboolold
Et ce code il faut que je le mette dans la page concernée?

Re: Les crons

Posté : 05 juil. 2011, 19:20
par jojolapine
Ah mon avis il vaudrait mieux qu'il soit sur un autre site, sur un autre serveur...
Mais je me trompe peut-être...

Re: Les crons

Posté : 05 juil. 2011, 20:16
par poliboolold
Je vous fait un screen de ce que me demande l'hebergeur

Image

Re: Les crons

Posté : 06 juil. 2011, 09:08
par jojolapine
Bon avant d'aller plus loin, il faudrait définir ce que tu veux que ton script fasse réellement... :|
Parce que ça, ça veut tout dire et rien dire...
Bonjour voulant construire un systeme de bannisement ou je n'ai pas besoin de débannir maluement
ex: bann de 2 semaines et debann automatique
Comment fonctionne ton système de banissement actuel déjà?
Quels actions sont nécessaires pour ne plus être banni?

Répond à ces quelques questions, et on verra ensuite...