Skip to content
Extraits de code Groupes Projets
Valider e3791f1b rédigé par esj's avatar esj
Parcourir les fichiers

Pas encore ça les forums:

	- mauvaise retour (y compris retour de previsu) suite au flingage php3
	- de plus la securite de l'enregistrement laissait a désirer
	- enfin la bardee d'input à 0 mettait le souk dans les boutons d'admin

Deja mieux a present, mais faudra continuer le nettoyage.
parent debecdd6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -135,9 +135,33 @@ function enregistre_forum() { ...@@ -135,9 +135,33 @@ function enregistre_forum() {
} }
// initialisation de l'eventuel visiteur connecte // initialisation de l'eventuel visiteur connecte
if (!$id_auteur) if (!($id_auteur = intval($id_auteur)))
$id_auteur = intval($auteur_session['id_auteur']); $id_auteur = intval($auteur_session['id_auteur']);
// Verifier hash securite pour les forums avec previsu
if ($GLOBALS['afficher_texte'] <> 'non') {
include_ecrire("inc_session");
if (!verifier_action_auteur("ajout_forum $id_rubrique".
" $id_forum $id_article $id_breve".
" $id_syndic $alea", $hash)) {
spip_log('erreur hash forum');
die (_T('forum_titre_erreur')); # echec du POST
}
// verifier fichier lock
$alea = preg_replace('/[^0-9]/', '', $alea);
if (!file_exists($file = _DIR_SESSIONS."forum_$alea.lck"))
return $retour_forum; # echec silencieux du POST
}
// securite
$id_article = intval($id_article);
$id_breve = intval($id_breve);
$id_forum = intval($id_forum);
$id_rubrique = intval($id_rubrique);
$id_syndic = intval($id_syndic);
$statut = controler_forum($id_article, $retour_forum); $statut = controler_forum($id_article, $retour_forum);
// Ne pas autoriser de changement de nom si forum sur abonnement // Ne pas autoriser de changement de nom si forum sur abonnement
...@@ -155,21 +179,8 @@ function enregistre_forum() { ...@@ -155,21 +179,8 @@ function enregistre_forum() {
exit; exit;
} }
// Verifier hash securite pour les forums avec previsu
if ($GLOBALS['afficher_texte'] <> 'non') { if ($GLOBALS['afficher_texte'] <> 'non') {
include_ecrire("inc_session"); unlink($file);
if (!verifier_action_auteur("ajout_forum $id_rubrique".
" $id_forum $id_article $id_breve".
" $id_syndic $alea", $hash)) {
spip_log('erreur hash forum');
die (_T('forum_titre_erreur')); # echec du POST
}
// verifier fichier lock
$alea = preg_replace('/[^0-9]/', '', $alea);
if (!file_exists($hash = _DIR_SESSIONS."forum_$alea.lck"))
return $retour_forum; # echec silencieux du POST
unlink($hash);
} }
// Entrer le message dans la base // Entrer le message dans la base
...@@ -213,7 +224,7 @@ function enregistre_forum() { ...@@ -213,7 +224,7 @@ function enregistre_forum() {
// Cela assure aussi qu'on retrouve son message dans le thread // Cela assure aussi qu'on retrouve son message dans le thread
// dans le cas des forums moderes a posteriori, ce qui n'est // dans le cas des forums moderes a posteriori, ce qui n'est
// pas plus mal. // pas plus mal.
$retour_forum = generer_url_forum($id_message, true); $retour_forum = generer_url_forum($id_message);
} }
// Entrer les mots-cles associes // Entrer les mots-cles associes
......
<a id="formulaire"></a> <a id="formulaire"></a>
<form action="[(#ENV{url})][(#ENV**{previsu}|?{'#formulaire',''})]" method="post">[ <form action="[(#ENV{url})][(#ENV**{previsu}|?{'#formulaire',''})]" method="post">[
<input type='hidden' name='page' value='(#ENV{page})' />][
<input type='hidden' name='id_article' value='(#ENV{id_article})' />][ <input type='hidden' name='id_article' value='(#ENV{id_article})' />][
<input type='hidden' name='id_breve' value='(#ENV{id_breve})' />][ <input type='hidden' name='id_breve' value='(#ENV{id_breve})' />][
<input type='hidden' name='id_forum' value='(#ENV{id_forum})' />][ <input type='hidden' name='id_forum' value='(#ENV{id_forum})' />][
......
...@@ -43,7 +43,7 @@ function balise_FORMULAIRE_FORUM_stat($args, $filtres) { ...@@ -43,7 +43,7 @@ function balise_FORMULAIRE_FORUM_stat($args, $filtres) {
// Note : ceci n'est pas documente !! // Note : ceci n'est pas documente !!
// $filtres[0] peut contenir l'url sur lequel faire tourner le formulaire // $filtres[0] peut contenir l'url sur lequel faire tourner le formulaire
// exemple dans un squelette article.html : [(#FORMULAIRE_FORUM|forum.php)] // exemple dans un squelette article.html : [(#FORMULAIRE_FORUM|forum)]
// le denier arg peut contenir l'url sur lequel faire le retour // le denier arg peut contenir l'url sur lequel faire le retour
// exemple dans un squelette article.html : [(#FORMULAIRE_FORUM{#SELF})] // exemple dans un squelette article.html : [(#FORMULAIRE_FORUM{#SELF})]
...@@ -67,13 +67,15 @@ function balise_FORMULAIRE_FORUM_stat($args, $filtres) { ...@@ -67,13 +67,15 @@ function balise_FORMULAIRE_FORUM_stat($args, $filtres) {
if (($GLOBALS['meta']["mots_cles_forums"] != "oui")) if (($GLOBALS['meta']["mots_cles_forums"] != "oui"))
$table = ''; $table = '';
// compatibilite: virer l'extension
$script = preg_match(',.php3?$,', $filtres[0],$r) ? $r[1] : $filtres[0];
return return
array($titre, $table, $forums_publics, $filtres[0], array($titre, $table, $forums_publics, ($script ? $script : 'forum'),
$idr, $idf, $ida, $idb, $ids, $am, $ag, $af, $url); $idr, $idf, $ida, $idb, $ids, $am, $ag, $af, $url);
} }
function balise_FORMULAIRE_FORUM_dyn( function balise_FORMULAIRE_FORUM_dyn(
$titre, $table, $type, $url, $titre, $table, $type, $page,
$id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic, $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic,
$ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour)
{ {
...@@ -85,31 +87,18 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) ...@@ -85,31 +87,18 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour)
} }
// exclure des id_* postees du formulaire tout ce qui n'est pas nombre > 0. // exclure des id_* postees du formulaire tout ce qui n'est pas nombre > 0.
// y aura plein de input hidden value=0 dans le squelette mais il faut // attention le calcul du hachage doit etre le meme ici et dans inc-messforum
// que le calcul du hachage soit le meme ici et dans inc-messforum
$ids = array();
$ids = array('id_article' => intval($id_article), if ($x = intval($id_article)) $ids['id_article'] = $x;
'id_breve'=> intval($id_breve), if ($x = intval($id_breve)) $ids['id_breve'] = $x;
'id_forum'=> intval($id_forum), if ($x = intval($id_forum)) $ids['id_forum'] = $x;
'id_rubrique'=> intval($id_rubrique), if ($x = intval($id_rubrique)) $ids['id_rubrique'] = $x;
'id_syndic'=> intval($id_syndic)); if ($x = intval($id_syndic)) $ids['id_syndic'] = $x;
// url de reference
if (!$url) {
$url = new Link();
$url = $url->getUrl();
} else {
// identifiants des parents
$args = "";
foreach ($ids as $id => $v) $args .= "&$id=$v";
if (strpos($url,'?'))
$url .= $args;
else $url .= '?' . substr($args,1);
}
$url = ereg_replace("[?&]var_erreur=[^&]*", '', $url); $args = "";
$url = ereg_replace("[?&]var_login=[^&]*", '', $url); foreach ($ids as $id => $v) $args .= "&$id=$v";
$url = ereg_replace("[?&]url=[^&]*", '', $url); $url = "./?page=$page$args";
// ne pas mettre '', sinon le squelette n'affichera rien. // ne pas mettre '', sinon le squelette n'affichera rien.
$previsu = ' '; $previsu = ' ';
...@@ -128,7 +117,7 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) ...@@ -128,7 +117,7 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour)
// sauf si on a passe un parametre en argument (exemple : {#SELF}) // sauf si on a passe un parametre en argument (exemple : {#SELF})
if($url_param_retour) if($url_param_retour)
$retour_forum = str_replace("&amp;", "&", $url_param_retour); $retour_forum = urlencode($url_param_retour);
} }
if (isset($_COOKIE['spip_forum_user']) if (isset($_COOKIE['spip_forum_user'])
...@@ -177,7 +166,8 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) ...@@ -177,7 +166,8 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour)
'table' => $table, 'table' => $table,
'texte' => $texte, 'texte' => $texte,
'titre' => extraire_multi($titre), 'titre' => extraire_multi($titre),
'url' => $url, 'page' => $page,
'url' => $url,
'url_site' => ($url_site ? $url_site : "http://"), 'url_site' => ($url_site ? $url_site : "http://"),
'id_article' => $ids['id_article'], 'id_article' => $ids['id_article'],
'id_breve' => $ids['id_breve'], 'id_breve' => $ids['id_breve'],
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter