si tu vas par la, il faut que les fonctions de creation/verification jeton prennent en argument tout ce qui sert au calcul du jeton,
et n'utilisent pas de globales, notamment.
Cédric
Le 28 août 09 à 01:23, marcimat@free.fr a écrit :
Author: marcimat@free.fr
Date: Fri Aug 28 01:23:54 2009
New Revision: 31152Log:
Un tout premier début de mise en fonctions de noSpam, avec ici creer_jeton() et verifier_jeton().Added:
_plugins_/nospam/inc/
_plugins_/nospam/inc/nospam.php
Modified:
_plugins_/nospam/nospam_pipelines.phpAdded: _plugins_/nospam/inc/nospam.php
--- _plugins_/nospam/inc/nospam.php (added)
+++ _plugins_/nospam/inc/nospam.php Fri Aug 28 01:23:54 2009
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Plugin No-SPAM
+ * (c) 2008 Cedric Morin Yterium.net
+ * Licence GPL
+ *
+ */
+
+/**
+ * Calcule une cle de jeton pour un formulaire
+ *
+ * @param string $form nom du formulaire
+ * @return string cle calculee
+ */
+function creer_jeton($form) {
+ $time = date('Y-m-d-H');
+ $ip = $GLOBALS['ip'];
+ include_spip('inc/securiser_action');
+ // le jeton prend en compte l'heure et l'ip de l'internaute
+ return calculer_cle_action("jeton$form$time$ip");
+}
+
+/**
+ * Verifie une cle de jeton pour un formulaire
+ *
+ * @param string $form nom du formulaire
+ * @param string cle recue
+ * @return bool cle correcte ?
+ */
+function verifier_jeton($form, $jeton) {
+ $time = time();
+ $time_old = date('Y-m-d-H',$time-3600);
+ $time = date('Y-m-d-H',$time);
+ $ip = $GLOBALS['ip'];
+
+ return (verifier_cle_action("jeton$form$time$ip",$jeton)
+ or verifier_cle_action("jeton$form$time_old$ip",$jeton));
+}
+
+?>Modified: _plugins_/nospam/nospam_pipelines.php
--- _plugins_/nospam/nospam_pipelines.php (original)
+++ _plugins_/nospam/nospam_pipelines.php Fri Aug 28 01:23:54 2009
@@ -16,13 +16,10 @@
* @return array
*/
function nospam_formulaire_charger($flux){
- if (in_array($flux['args']['form'],$GLOBALS['formulaires_no_spam'])){
$form = $flux['args']['form'];
- $time = date('Y-m-d-H');
- $ip = $GLOBALS['ip'];
- include_spip('inc/securiser_action');
- // le jeton prend en compte l'heure et l'ip de l'internaute
- $jeton = calculer_cle_action("jeton$form$time$ip");
+ if (in_array($form,$GLOBALS['formulaires_no_spam'])){
+ include_spip("inc/nospam");
+ $jeton = creer_jeton($form);
$flux['data']['_hidden'] .= "<input type='hidden' name='_jeton' value='$jeton' />";
}
return $flux;
@@ -37,18 +34,12 @@
function nospam_formulaire_verifier($flux){
$form = $flux['args']['form'];
if (in_array($form,$GLOBALS['formulaires_no_spam'])){
- $time = time();
- $time_old = date('Y-m-d-H',$time-3600);
- $time = date('Y-m-d-H',$time);
- $ip = $GLOBALS['ip'];
-
+ include_spip("inc/nospam");
$jeton = _request('_jeton');
- include_spip('inc/securiser_action');
+
// le jeton prend en compte l'heure et l'ip de l'internaute
if (_request('nobot') // trop facile !
- OR
- (!verifier_cle_action("jeton$form$time$ip",$jeton)
- AND !verifier_cle_action("jeton$form$time_old$ip",$jeton))){
+ OR (!verifier_jeton($form, $jeton))){
$flux['data']['message_erreur'] .= _T('nospam:erreur_jeton');
if ($form=='forum')
unset($flux['data']['previsu']);_______________________________________________
Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit