diff --git a/ecrire/balise/login_public.php b/ecrire/balise/login_public.php
index 1ddea1eced3a93258237de0016c4f8ae8b3ef92f..4e39c0ce2c6e1f8d9611cfbf19392ed64e3d2745 100644
--- a/ecrire/balise/login_public.php
+++ b/ecrire/balise/login_public.php
@@ -42,10 +42,9 @@ function login_explicite($login, $cible) {
 	global $auteur_session;
 
 	$action = str_replace('&', '&', self());
-
 	if ($cible) {
-		$cible = ereg_replace("[?&]var_erreur=[^&]*", '', $cible);
-		$cible = ereg_replace("[?&]var_login=[^&]*", '', $cible);
+		$cible = parametre_url($cible, 'var_erreur', '', '&');
+		$cible = parametre_url($cible, 'var_login', '', '&');
 	} else {
 		if (ereg("[?&]url=([^&]*)", $action, $m))
 			$cible = urldecode($m[1]);
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index fb5ec4a319718df934d9bf05356aeaf1873a4c8e..4b5f7d63fc3b9a36db67aa7061fbf855754b1109 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -324,8 +324,8 @@ function parametre_url($url, $c, $v=NULL, $sep='&') {
 //
 function nettoyer_uri() {
 	return preg_replace
-		(',[?&](PHPSESSID|(var_[^=&]*))=[^&]*,i',
-		'', 
+		(',([?&])(PHPSESSID|(var_[^=&]*))=[^&]*(&|$),i',
+		'\1',
 		$GLOBALS['REQUEST_URI']);
 }