diff --git a/ecrire/inc_session.php3 b/ecrire/inc_session.php3
index 6be5c8e72c59f2bee5f567c243407d294e3620b2..820e627b4287a5aa72693d350032a0213a06595a 100644
--- a/ecrire/inc_session.php3
+++ b/ecrire/inc_session.php3
@@ -251,7 +251,7 @@ function renouvelle_alea()
 
 
 function _action_auteur($action, $id_auteur, $nom_alea) {
-	if (!$id_auteur) {
+	if (!($id_auteur = intval($id_auteur))) {
 		global $connect_id_auteur, $connect_pass;
 		$id_auteur = $connect_id_auteur;
 		$pass = $connect_pass;
diff --git a/ecrire/inc_spip_action_autoriser.php b/ecrire/inc_spip_action_autoriser.php
index cdc1e2986a99ae123d805a34359bce6919fea3ea..7e71a0953c2a1b898961ebe285279abe64a2aaef 100644
--- a/ecrire/inc_spip_action_autoriser.php
+++ b/ecrire/inc_spip_action_autoriser.php
@@ -14,7 +14,6 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_ecrire("inc_charsets");	# pour le nom de fichier
-include_ecrire("inc_session");	# verifier_action_auteur
 include_ecrire("inc_abstract_sql");# spip_insert / spip_fetch...
 
 //  acces aux documents joints securise
diff --git a/ecrire/inc_spip_action_iconifier.php b/ecrire/inc_spip_action_iconifier.php
index 1630e2e9f430272aed2e598ea4421eead3036d04..bc576ab0b64341ccf2fa698e389556efb1f325da 100644
--- a/ecrire/inc_spip_action_iconifier.php
+++ b/ecrire/inc_spip_action_iconifier.php
@@ -12,15 +12,8 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-include_ecrire("inc_session");	# verifier_action_auteur
-
 function spip_action_iconifier_dist()
 {
-	global $action, $hash, $id_auteur, $arg, $image;
-
-	if (!verifier_action_auteur("$action $arg", $hash, $id_auteur))
-		die ($action . '!!!');
-
 	if ($_SERVER['REQUEST_METHOD'] == 'POST') 
 		spip_image_ajouter_dist();
 	else	spip_image_effacer_dist();
diff --git a/ecrire/inc_spip_action_instituer.php b/ecrire/inc_spip_action_instituer.php
index 60afeddcc26a08f4572d7ba6d3ffe2642f495f0b..323a4ce90c11e94c76361c7f815ce27c83d58f60 100644
--- a/ecrire/inc_spip_action_instituer.php
+++ b/ecrire/inc_spip_action_instituer.php
@@ -12,31 +12,24 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-include_ecrire("inc_session");
-
 function spip_action_instituer_dist()
 {
-	global $arg, $action, $hash, $id_auteur;
-
-  if (!verifier_action_auteur("$action $arg", $hash, $id_auteur))
-	spip_log("spip_action: $action $arg interdit a $id_auteur");
-  else {
-    ereg("^([^ ]*) (.*)$", $arg, $r);
-    $var_nom = 'instituer_' . $r[1];
-    if (function_exists($var_nom))
-      $var_nom($r[2]);
-    else spip_log("spip_action_$action: $arg incompris");
-  }
+	global $arg, $action ;
+
+	ereg("^([^ ]*) (.*)$", $arg, $r);
+	$var_nom = 'instituer_' . $r[1];
+	if (function_exists($var_nom))
+	  $var_nom($r[2]);
+	else spip_log("spip_action_$action: $arg incompris");
 }
 
 function instituer_collaboration($debloquer_article)
 {
         global $id_auteur;
-        if ($debloquer_article) {
+        if ($debloquer_article AND ($id_auteur = intval($id_auteur))) {
                 if ($debloquer_article <> 'tous')
                         $where_id = "AND id_article=".intval($debloquer_article);
-                $query = "UPDATE spip_articles SET auteur_modif='0' WHERE auteur_modif=$id_auteur $where_id";
-                spip_query ($query);
+                spip_query ("UPDATE spip_articles SET auteur_modif='0' WHERE auteur_modif=$id_auteur $where_id");
         }
 }
 
diff --git a/ecrire/inc_spip_action_joindre.php b/ecrire/inc_spip_action_joindre.php
index 2022ef8a5d3826f36c08401c513e53ebda8ee027..f79ea257a8b887b66a65ec2cb30a1e00915a6bb3 100644
--- a/ecrire/inc_spip_action_joindre.php
+++ b/ecrire/inc_spip_action_joindre.php
@@ -13,29 +13,23 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_ecrire("inc_charsets");	# pour le nom de fichier
-include_ecrire("inc_session");	# verifier_action_auteur
 include_ecrire("inc_abstract_sql");# spip_insert / spip_fetch...
 include_ecrire('inc_getdocument');
 
 function spip_action_joindre_dist()
 {
-  global 
-    $arg,
+  global $hash, $id_auteur, $arg, $redirect,
     $sousaction1,
     $sousaction2,
     $sousaction3,
     $sousaction4,
     $sousaction5,
-    $action, $hash, $id_auteur,
-    $url, $chemin, $ancre, $type, $id, $id_document,  $redirect,
+    $url, $chemin, $ancre, $type, $id, $id_document,
     $_FILES,  $HTTP_POST_FILES;
 
-  if (!verifier_action_auteur("$action $arg", $hash, $id_auteur))
-		die ($action . '!!!');
-
      // pas terrible, mais c'est le pb du bouton Submit qui retourne son texte,
      // et son transcodage est couteux et perilleux
-     $action = 'spip_action_joindre' .
+     $sousaction = 'spip_action_joindre' .
        ($sousaction1 ? 1 :
 	($sousaction2 ? 2 :
 	 ($sousaction3 ? 3 : 
@@ -47,11 +41,11 @@ function spip_action_joindre_dist()
 
      $documents_actifs = array();
 
-     if (function_exists($action))
-       $action($path, $arg, $type, intval($id), $id_document, 
+     if (function_exists($sousaction))
+       $sousaction($path, $arg, $type, intval($id), $id_document, 
 	       $hash, $id_auteur, $redirect, $documents_actifs);
 
-     else spip_log("spip_action: sousaction inconnue $action");
+     else spip_log("spip_action: sousaction inconnue $sousaction");
 
      if ($documents_actifs) {
 	$redirect .= '&show_docs=' . join('-',$documents_actifs);
@@ -61,7 +55,6 @@ function spip_action_joindre_dist()
 	$redirect .= '#' . $ancre;
      }
 
-     $redirect = _DIR_RESTREINT . $redirect;
      # spip_action fera la redirection.
      ## redirection a supprimer si on veut poster dans l'espace prive directement (UPLOAD_DIRECT)
 }
diff --git a/ecrire/inc_spip_action_purger.php b/ecrire/inc_spip_action_purger.php
index 51bcf5728cfa7d1586ed5e1c828a05c268786723..d6c59477cc76d2400edbb51cb1ce2bef60e8e558 100644
--- a/ecrire/inc_spip_action_purger.php
+++ b/ecrire/inc_spip_action_purger.php
@@ -12,13 +12,9 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
 
-include_ecrire("inc_session");
-
 function spip_action_purger_dist()
 {
-  global $arg, $hash, $id_auteur, $action;
-
-  if (!verifier_action_auteur("$action $arg", $hash, $id_auteur)) exit;
+  global $arg;
 
   include_ecrire("inc_invalideur");
 
diff --git a/ecrire/inc_spip_action_supprimer.php b/ecrire/inc_spip_action_supprimer.php
index c2c3d842118e3679570250bdfd3b803467dee51a..cb9471f3329fcb521648e8cb862e47e91935f6bb 100644
--- a/ecrire/inc_spip_action_supprimer.php
+++ b/ecrire/inc_spip_action_supprimer.php
@@ -13,20 +13,15 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_ecrire("inc_charsets");	# pour le nom de fichier
-include_ecrire("inc_session");	# verifier_action_auteur
 include_ecrire("inc_abstract_sql");# spip_insert / spip_fetch...
 
-
 // Effacer un doc (et sa vignette)
 function spip_action_supprimer_dist() {
 
-	global $action, $hash, $id_auteur, $arg;
-	if (!verifier_action_auteur("$action $arg", $hash, $id_auteur))
-		die ($action . '!!!');
+	global  $arg;
 
-	$result = spip_query("SELECT id_vignette, fichier
-		FROM spip_documents
-		WHERE id_document=$arg");
+	$arg = intval($arg);
+	$result = spip_query("SELECT id_vignette, fichier FROM spip_documents WHERE id_document=$arg");
 	if ($row = spip_fetch_array($result)) {
 		$fichier = $row['fichier'];
 		$id_vignette = $row['id_vignette'];
diff --git a/ecrire/inc_spip_action_tourner.php b/ecrire/inc_spip_action_tourner.php
index 3e78d6f26dec64e130074b74f5ee4f3c0235ac62..606747000843c68070b4bfcd50001fd6e54d69a0 100644
--- a/ecrire/inc_spip_action_tourner.php
+++ b/ecrire/inc_spip_action_tourner.php
@@ -13,17 +13,13 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_ecrire("inc_charsets");	# pour le nom de fichier
-include_ecrire("inc_session");	# verifier_action_auteur
 include_ecrire("inc_abstract_sql");# spip_insert / spip_fetch...
 
 function spip_action_tourner_dist() {
 	
-	global $action, $hash, $id_auteur, $arg;
-	if (!verifier_action_auteur("$action $arg", $hash, $id_auteur))
-		die ($action . '!!!');
-
-	global $var_rot, $convert_command;
+	global $arg, $var_rot, $convert_command;
 	$var_rot = intval($var_rot);
+	$arg = intval($arg);
 
 	$query = "SELECT id_vignette, fichier FROM spip_documents WHERE id_document=$arg";
 	$result = spip_query($query);
diff --git a/spip_action.php b/spip_action.php
index 00670f1f6f50d4035ee1c43ef8d40d3ba799c101..623da2889a957e2a445af08db831e86a136890b0 100644
--- a/spip_action.php
+++ b/spip_action.php
@@ -11,6 +11,14 @@
 \***************************************************************************/
 
 include ("ecrire/inc_version.php3");
+
+if (isset($hash)) {
+	include_ecrire("inc_session");
+	if (!verifier_action_auteur("$action $arg", $hash, $id_auteur)) {
+	  die ($action . '!!!');
+	}
+ }
+
 $var_f = include_fonction('spip_action_' . $action);
 $var_f();
 if ($redirect) redirige_par_entete($redirect);