Browse Source

Fix le cas d'utilisation avec le plugin newsletter qui vide session_email et appelle explicitement nospam_encrypt_decrypt_post()

On modifie la fonction pour qu'elle soit idempotente si elle est appelee 2 fois dans le meme contexte. Mais si on efface un des request poste, elle le renseigne a nouveau avec un nouvel appel
cf https://git.spip.net/spip-contrib-extensions/mailsubscribers/src/branch/master/formulaires/newsletter_subscribe.php#L57
master v2.3.1
Cerdic 2 weeks ago
parent
commit
7b81855fe3
  1. 12
      inc/nospam_encrypt.php
  2. 2
      paquet.xml

12
inc/nospam_encrypt.php

@ -202,8 +202,8 @@ function nospam_encrypt_check_valeurs($valeurs, $args) {
}
/**
* Decrypter les name d'un POST
* n'agit qu'une seule fois
* Decrypter les name d'un POST (idempotent)
*
* @param $form
* optionel, on peut se reposer sur formulaire_action pour avoir le nom du form
* @return bool|string
@ -211,11 +211,6 @@ function nospam_encrypt_check_valeurs($valeurs, $args) {
* bool : indique si des names ont ete decodes ou non
*/
function nospam_encrypt_decrypt_post($form=null) {
static $deja = false;
if ($deja) {
return false;
}
if (is_null($form)) {
$form = _request('formulaire_action');
if (!$form) {
@ -242,11 +237,10 @@ function nospam_encrypt_decrypt_post($form=null) {
return _T('nospam:erreur_jeton');
}
$deja = true;
$re_verifier = false;
foreach ($_POST as $k => $v) {
$kd = nospam_name_decode($k, $jeton);
if ($kd !== $k) {
if ($kd !== $k and _request($kd) !== $v) {
set_request($kd, $v);
$re_verifier = true;
}

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="nospam"
categorie="performance"
version="2.3.0"
version="2.3.1"
etat="stable"
compatibilite="[3.1.0;4.0.*]"
logo="images/nospam-64.png"

Loading…
Cancel
Save