[SPIP Zone] [Spip-zone-commit] r31152 - in /_plugins_/nospam: inc/ inc/nospam.php nospam_pipelines.php

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: 31152

Log:
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.php

Added: _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