Changeset 86007 in spip-zone


Ignore:
Timestamp:
Nov 12, 2014, 2:08:49 PM (5 years ago)
Author:
cedric@…
Message:

Report de r86006 : ne pas generer une session anonyme a chaque POST de forum mais uniquement si un fichier a ete poste et si c'est une option autorisee
+ generer toute de suite une erreur si un POST a ete fait alors que l'option n'est pas autorisee (car des BOTs qui spamment)
(evite de generer des sessions anonymes en nombre pour rien)

Location:
_core_/branches/spip-3.0/plugins/forum
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _core_/branches/spip-3.0/plugins/forum/formulaires/forum.php

    r82323 r86007  
    212212
    213213        $erreurs = array();
     214        $doc = array();
    214215
    215216        // desactiver id_rubrique si un id_article ou autre existe dans le contexte
     
    220221        // portant la cle du formulaire ; et ses metadonnees avec
    221222
    222         if (!isset($GLOBALS['visiteur_session']['tmp_forum_document']))
    223                 session_set('tmp_forum_document',
    224                         sous_repertoire(_DIR_TMP, 'documents_forum') . md5(uniqid(rand())));
    225         $tmp = $GLOBALS['visiteur_session']['tmp_forum_document'];
    226         $doc = &$_FILES['ajouter_document'];
    227223        if (isset($_FILES['ajouter_document'])
    228                 AND $_FILES['ajouter_document']['tmp_name']
    229         ){
    230                 // securite :
    231                 // verifier si on possede la cle (ie on est autorise a poster)
    232                 // (sinon tant pis) ; cf. charger.php pour la definition de la cle
    233                 if (_request('cle_ajouter_document')!=calculer_cle_action($a = "ajouter-document-$objet-$id_objet")){
     224                AND $_FILES['ajouter_document']['tmp_name']){
     225
     226                $acceptes = forum_documents_acceptes();
     227                if (
     228                        // si on a poste un $_FILES mais que l'option n'est pas active : cas produit par les bots qui spamment automatiquement
     229                        !count($acceptes)
     230                        // securite :
     231                        // verifier si on possede la cle (ie on est autorise a poster)
     232                        // (sinon tant pis) ; cf. charger.php pour la definition de la cle
     233                  OR _request('cle_ajouter_document')!=calculer_cle_action($a = "ajouter-document-$objet-$id_objet")
     234                ){
    234235                        $erreurs['document_forum'] = _T('forum:documents_interdits_forum');
    235236                        unset($_FILES['ajouter_document']);
    236237                }
    237238                else {
     239                        if (!isset($GLOBALS['visiteur_session']['tmp_forum_document']))
     240                                session_set('tmp_forum_document', sous_repertoire(_DIR_TMP, 'documents_forum') . md5(uniqid(rand())));
     241
     242                        $tmp = $GLOBALS['visiteur_session']['tmp_forum_document'];
     243                        $doc = &$_FILES['ajouter_document'];
     244
    238245                        include_spip('inc/joindre_document');
    239246                        include_spip('action/ajouter_documents');
    240247                        list($extension, $doc['name']) = fixer_extension_document($doc);
    241                         $acceptes = forum_documents_acceptes();
    242248
    243249                        if (!in_array($extension, $acceptes)){
    244                                 # normalement on n'arrive pas ici : pas d'upload si aucun format
    245                                 if (!$formats = join(', ', $acceptes)){
    246                                         $formats = '-'; //_L('aucun');
    247                                 }
    248                                 $erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => $formats));
     250                                $erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => join(', ', $acceptes)));
    249251                        }
    250252                        else {
     
    262264                                spip_unlink($tmp . '.bin');
    263265                                unset ($_FILES['ajouter_document']);
    264                         }
    265                         else {
     266                        } else {
    266267                                $doc['tmp_name'] = $tmp . '.bin';
    267268                                ecrire_fichier($tmp . '.txt', serialize($doc));
    268269                        }
    269270                }
    270         } // restaurer le document uploade au tour precedent
    271         elseif (file_exists($tmp . '.bin')){
     271        }
     272        // restaurer/supprimer le document eventuellement uploade au tour precedent
     273        elseif (isset($GLOBALS['visiteur_session']['tmp_forum_document'])
     274          AND $tmp = $GLOBALS['visiteur_session']['tmp_forum_document']
     275          AND file_exists($tmp . '.bin')){
    272276                if (_request('supprimer_document_ajoute')){
    273277                        spip_unlink($tmp . '.bin');
     
    275279                }
    276280                elseif (lire_fichier($tmp . '.txt', $meta)){
     281                        $doc = &$_FILES['ajouter_document'];
    277282                        $doc = @unserialize($meta);
    278283                }
  • _core_/branches/spip-3.0/plugins/forum/paquet.xml

    r85969 r86007  
    22        prefix="forum"
    33        categorie="communication"
    4         version="1.8.35"
     4        version="1.8.36"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.