Completed
Push — master ( 8cc67b...607ad1 )
by cam
04:24
created
ecrire/prive.php 2 patches
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -20,20 +20,20 @@
 block discarded – undo
20 20
 $var_auth = $auth();
21 21
 
22 22
 if ($var_auth !== '') {
23
-	if (!is_int($var_auth)) {
24
-		// si l'authentifie' n'a pas acces a l'espace de redac
25
-		// c'est qu'on voulait forcer sa reconnaissance en tant que visiteur.
26
-		// On reexecute pour deboucher sur le include public.
27
-		// autrement on insiste
28
-		if (is_array($var_auth)) {
29
-			$var_auth = '../?' . $_SERVER['QUERY_STRING'];
30
-			spip_setcookie('spip_session', $_COOKIE['spip_session'], [
31
-				'expires' => time() + 3600 * 24 * 14
32
-			]);
33
-		}
34
-		include_spip('inc/headers');
35
-		redirige_formulaire($var_auth);
36
-	}
23
+    if (!is_int($var_auth)) {
24
+        // si l'authentifie' n'a pas acces a l'espace de redac
25
+        // c'est qu'on voulait forcer sa reconnaissance en tant que visiteur.
26
+        // On reexecute pour deboucher sur le include public.
27
+        // autrement on insiste
28
+        if (is_array($var_auth)) {
29
+            $var_auth = '../?' . $_SERVER['QUERY_STRING'];
30
+            spip_setcookie('spip_session', $_COOKIE['spip_session'], [
31
+                'expires' => time() + 3600 * 24 * 14
32
+            ]);
33
+        }
34
+        include_spip('inc/headers');
35
+        redirige_formulaire($var_auth);
36
+    }
37 37
 }
38 38
 
39 39
 // En somme, est prive' ce qui est publiquement nomme'...
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -26,7 +26,7 @@
 block discarded – undo
26 26
 		// On reexecute pour deboucher sur le include public.
27 27
 		// autrement on insiste
28 28
 		if (is_array($var_auth)) {
29
-			$var_auth = '../?' . $_SERVER['QUERY_STRING'];
29
+			$var_auth = '../?'.$_SERVER['QUERY_STRING'];
30 30
 			spip_setcookie('spip_session', $_COOKIE['spip_session'], [
31 31
 				'expires' => time() + 3600 * 24 * 14
32 32
 			]);
Please login to merge, or discard this patch.
ecrire/inc/session.php 2 patches
Indentation   +455 added lines, -455 removed lines patch added patch discarded remove patch
@@ -19,7 +19,7 @@  discard block
 block discarded – undo
19 19
  */
20 20
 
21 21
 if (!defined('_ECRIRE_INC_VERSION')) {
22
-	return;
22
+    return;
23 23
 }
24 24
 
25 25
 
@@ -40,15 +40,15 @@  discard block
 block discarded – undo
40 40
  * @return bool|null|void
41 41
  */
42 42
 function inc_session_dist($auteur = false) {
43
-	if (is_numeric($auteur)) {
44
-		return supprimer_sessions($auteur, $auteur > 0);
45
-	} else {
46
-		if (is_array($auteur)) {
47
-			return ajouter_session($auteur);
48
-		} else {
49
-			return verifier_session($auteur);
50
-		}
51
-	}
43
+    if (is_numeric($auteur)) {
44
+        return supprimer_sessions($auteur, $auteur > 0);
45
+    } else {
46
+        if (is_array($auteur)) {
47
+            return ajouter_session($auteur);
48
+        } else {
49
+            return verifier_session($auteur);
50
+        }
51
+    }
52 52
 }
53 53
 
54 54
 
@@ -77,36 +77,36 @@  discard block
 block discarded – undo
77 77
  */
78 78
 function supprimer_sessions($id_auteur, $toutes = true, $actives = true) {
79 79
 
80
-	$nb_files = 0;
81
-	$nb_max_files = (defined('_MAX_NB_SESSIONS_OUVERTES') ? _MAX_NB_SESSIONS_OUVERTES : 1000);
82
-	spip_log("supprimer sessions auteur $id_auteur", "session");
83
-	if ($toutes or $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) {
84
-		if ($dir = opendir(_DIR_SESSIONS)) {
85
-			$t = $_SERVER['REQUEST_TIME']  - (4*_RENOUVELLE_ALEA); // 48h par defaut
86
-			$t_short = $_SERVER['REQUEST_TIME']  - max(_RENOUVELLE_ALEA/4,3*3600); // 3h par defaut
87
-			$t = time() - (4 * _RENOUVELLE_ALEA);
88
-			while (($f = readdir($dir)) !== false) {
89
-				$nb_files++;
90
-				if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)) {
91
-					$f = _DIR_SESSIONS . $f;
92
-					if (($actives and $regs[1] == $id_auteur) or ($t > filemtime($f))) {
93
-						spip_unlink($f);
94
-					}
95
-					// si il y a trop de sessions ouvertes, on purge les sessions anonymes de plus de 3H
96
-					// cf http://core.spip.org/issues/3276
97
-					elseif ($nb_files>$nb_max_files and !intval($regs[1]) and ($t_short > filemtime($f))) {
98
-						spip_unlink($f);
99
-					}
100
-				}
101
-			}
102
-		}
103
-	} else {
104
-		verifier_session();
105
-		spip_unlink(fichier_session('alea_ephemere', true));
106
-	}
107
-
108
-	// forcer le recalcul de la session courante
109
-	spip_session(true);
80
+    $nb_files = 0;
81
+    $nb_max_files = (defined('_MAX_NB_SESSIONS_OUVERTES') ? _MAX_NB_SESSIONS_OUVERTES : 1000);
82
+    spip_log("supprimer sessions auteur $id_auteur", "session");
83
+    if ($toutes or $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) {
84
+        if ($dir = opendir(_DIR_SESSIONS)) {
85
+            $t = $_SERVER['REQUEST_TIME']  - (4*_RENOUVELLE_ALEA); // 48h par defaut
86
+            $t_short = $_SERVER['REQUEST_TIME']  - max(_RENOUVELLE_ALEA/4,3*3600); // 3h par defaut
87
+            $t = time() - (4 * _RENOUVELLE_ALEA);
88
+            while (($f = readdir($dir)) !== false) {
89
+                $nb_files++;
90
+                if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)) {
91
+                    $f = _DIR_SESSIONS . $f;
92
+                    if (($actives and $regs[1] == $id_auteur) or ($t > filemtime($f))) {
93
+                        spip_unlink($f);
94
+                    }
95
+                    // si il y a trop de sessions ouvertes, on purge les sessions anonymes de plus de 3H
96
+                    // cf http://core.spip.org/issues/3276
97
+                    elseif ($nb_files>$nb_max_files and !intval($regs[1]) and ($t_short > filemtime($f))) {
98
+                        spip_unlink($f);
99
+                    }
100
+                }
101
+            }
102
+        }
103
+    } else {
104
+        verifier_session();
105
+        spip_unlink(fichier_session('alea_ephemere', true));
106
+    }
107
+
108
+    // forcer le recalcul de la session courante
109
+    spip_session(true);
110 110
 }
111 111
 
112 112
 /**
@@ -124,122 +124,122 @@  discard block
 block discarded – undo
124 124
  * @return bool|string
125 125
  */
126 126
 function ajouter_session($auteur) {
127
-	// Si le client a deja une session valide pour son id_auteur
128
-	// on conserve le meme fichier
129
-
130
-	// Attention un visiteur peut avoir une session et un id=0,
131
-	// => ne pas melanger les sessions des differents visiteurs
132
-	$id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
133
-
134
-	// Si ce n'est pas un inscrit (les inscrits ont toujours des choses en session)
135
-	// on va vérifier s'il y a vraiment des choses à écrire
136
-	if (!$id_auteur) {
137
-		// On supprime les données de base pour voir le contenu réel de la session
138
-		$auteur_verif = $auteur;
139
-		if (isset($auteur_verif['id_auteur'])) {
140
-			unset($auteur_verif['id_auteur']);
141
-		}
142
-		if (isset($auteur_verif['hash_env'])) {
143
-			unset($auteur_verif['hash_env']);
144
-		}
145
-		if (isset($auteur_verif['ip_change'])) {
146
-			unset($auteur_verif['ip_change']);
147
-		}
148
-		if (isset($auteur_verif['date_session'])) {
149
-			unset($auteur_verif['date_session']);
150
-		}
151
-
152
-		// Les variables vraiment nulle ne sont pas à prendre en compte non plus
153
-		foreach ($auteur_verif as $variable => $valeur) {
154
-			if ($valeur === null) {
155
-				unset($auteur_verif[$variable]);
156
-			}
157
-		}
158
-
159
-		// Si après ça la session est vide alors on supprime l'éventuel fichier et on arrête là
160
-		if (!$auteur_verif) {
161
-			if (isset($_COOKIE['spip_session']) and isset($_SESSION[$_COOKIE['spip_session']])) {
162
-				unset($_SESSION[$_COOKIE['spip_session']]);
163
-			}
164
-			if (isset($_COOKIE['spip_session'])) {
165
-				unset($_COOKIE['spip_session']);
166
-			}
167
-
168
-			return false;
169
-		}
170
-	}
171
-
172
-	if (!isset($_COOKIE['spip_session'])
173
-		or !preg_match(',^' . $id_auteur . '_,', $_COOKIE['spip_session'])
174
-	) {
175
-		$_COOKIE['spip_session'] = $id_auteur . '_' . md5(uniqid(rand(), true));
176
-	}
177
-
178
-	// Maintenant on sait qu'on a des choses à écrire
179
-	// On s'assure d'avoir au moins ces valeurs
180
-	$auteur['id_auteur'] = $id_auteur;
181
-	if (!isset($auteur['hash_env'])) {
182
-		$auteur['hash_env'] = hash_env();
183
-	}
184
-	if (!isset($auteur['ip_change'])) {
185
-		$auteur['ip_change'] = false;
186
-	}
187
-
188
-	if (!isset($auteur['date_session'])) {
189
-		$auteur['date_session'] = time();
190
-	}
191
-	if (isset($auteur['prefs'])
192
-		and is_string($auteur['prefs'])
193
-	  and $prefs = @unserialize($auteur['prefs'])) {
194
-		$auteur['prefs'] = $prefs;
195
-	}
196
-
197
-	$fichier_session = "";
198
-
199
-	// les sessions anonymes sont stockees dans $_SESSION
200
-	if (!$id_auteur) {
201
-		spip_php_session_start();
202
-		$_SESSION[$_COOKIE['spip_session']] = preparer_ecriture_session($auteur);
203
-	} else {
204
-		$fichier_session = fichier_session('alea_ephemere');
205
-		if (!ecrire_fichier_session($fichier_session, $auteur)) {
206
-			spip_log('Echec ecriture fichier session ' . $fichier_session, "session" . _LOG_HS);
207
-			include_spip('inc/minipres');
208
-			echo minipres();
209
-			exit;
210
-		}
211
-		// verifier et limiter le nombre maxi de sessions
212
-		// https://core.spip.net/issues/3807
213
-		lister_sessions_auteur($id_auteur);
214
-	}
215
-
216
-	// poser le cookie de session SPIP
217
-	include_spip('inc/cookie');
218
-	$duree = definir_duree_cookie_session($auteur);
219
-	spip_setcookie( 'spip_session', $_COOKIE['spip_session'], [
220
-		'expires' => time() + $duree
221
-	]);
222
-	spip_log("ajoute session $fichier_session cookie $duree", "session");
223
-
224
-	// Si on est admin, poser le cookie de correspondance
225
-	if (!function_exists('autoriser')) {
226
-		include_spip('inc/autoriser');
227
-	}
228
-	if (autoriser('ecrire','','',$auteur) and _DUREE_COOKIE_ADMIN) {
229
-		spip_setcookie('spip_admin', '@' . ($auteur['email'] ?: $auteur['login']), [
230
-			'expires' => time() + max(_DUREE_COOKIE_ADMIN, $duree)
231
-		]);
232
-	} // sinon le supprimer ...
233
-	else {
234
-		spip_setcookie('spip_admin', '', [
235
-			'expires' => 1
236
-		]);
237
-	}
238
-
239
-	# on en profite pour purger les vieilles sessions anonymes abandonnees
240
-	# supprimer_sessions(0, true, false);
241
-
242
-	return $_COOKIE['spip_session'];
127
+    // Si le client a deja une session valide pour son id_auteur
128
+    // on conserve le meme fichier
129
+
130
+    // Attention un visiteur peut avoir une session et un id=0,
131
+    // => ne pas melanger les sessions des differents visiteurs
132
+    $id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
133
+
134
+    // Si ce n'est pas un inscrit (les inscrits ont toujours des choses en session)
135
+    // on va vérifier s'il y a vraiment des choses à écrire
136
+    if (!$id_auteur) {
137
+        // On supprime les données de base pour voir le contenu réel de la session
138
+        $auteur_verif = $auteur;
139
+        if (isset($auteur_verif['id_auteur'])) {
140
+            unset($auteur_verif['id_auteur']);
141
+        }
142
+        if (isset($auteur_verif['hash_env'])) {
143
+            unset($auteur_verif['hash_env']);
144
+        }
145
+        if (isset($auteur_verif['ip_change'])) {
146
+            unset($auteur_verif['ip_change']);
147
+        }
148
+        if (isset($auteur_verif['date_session'])) {
149
+            unset($auteur_verif['date_session']);
150
+        }
151
+
152
+        // Les variables vraiment nulle ne sont pas à prendre en compte non plus
153
+        foreach ($auteur_verif as $variable => $valeur) {
154
+            if ($valeur === null) {
155
+                unset($auteur_verif[$variable]);
156
+            }
157
+        }
158
+
159
+        // Si après ça la session est vide alors on supprime l'éventuel fichier et on arrête là
160
+        if (!$auteur_verif) {
161
+            if (isset($_COOKIE['spip_session']) and isset($_SESSION[$_COOKIE['spip_session']])) {
162
+                unset($_SESSION[$_COOKIE['spip_session']]);
163
+            }
164
+            if (isset($_COOKIE['spip_session'])) {
165
+                unset($_COOKIE['spip_session']);
166
+            }
167
+
168
+            return false;
169
+        }
170
+    }
171
+
172
+    if (!isset($_COOKIE['spip_session'])
173
+        or !preg_match(',^' . $id_auteur . '_,', $_COOKIE['spip_session'])
174
+    ) {
175
+        $_COOKIE['spip_session'] = $id_auteur . '_' . md5(uniqid(rand(), true));
176
+    }
177
+
178
+    // Maintenant on sait qu'on a des choses à écrire
179
+    // On s'assure d'avoir au moins ces valeurs
180
+    $auteur['id_auteur'] = $id_auteur;
181
+    if (!isset($auteur['hash_env'])) {
182
+        $auteur['hash_env'] = hash_env();
183
+    }
184
+    if (!isset($auteur['ip_change'])) {
185
+        $auteur['ip_change'] = false;
186
+    }
187
+
188
+    if (!isset($auteur['date_session'])) {
189
+        $auteur['date_session'] = time();
190
+    }
191
+    if (isset($auteur['prefs'])
192
+        and is_string($auteur['prefs'])
193
+      and $prefs = @unserialize($auteur['prefs'])) {
194
+        $auteur['prefs'] = $prefs;
195
+    }
196
+
197
+    $fichier_session = "";
198
+
199
+    // les sessions anonymes sont stockees dans $_SESSION
200
+    if (!$id_auteur) {
201
+        spip_php_session_start();
202
+        $_SESSION[$_COOKIE['spip_session']] = preparer_ecriture_session($auteur);
203
+    } else {
204
+        $fichier_session = fichier_session('alea_ephemere');
205
+        if (!ecrire_fichier_session($fichier_session, $auteur)) {
206
+            spip_log('Echec ecriture fichier session ' . $fichier_session, "session" . _LOG_HS);
207
+            include_spip('inc/minipres');
208
+            echo minipres();
209
+            exit;
210
+        }
211
+        // verifier et limiter le nombre maxi de sessions
212
+        // https://core.spip.net/issues/3807
213
+        lister_sessions_auteur($id_auteur);
214
+    }
215
+
216
+    // poser le cookie de session SPIP
217
+    include_spip('inc/cookie');
218
+    $duree = definir_duree_cookie_session($auteur);
219
+    spip_setcookie( 'spip_session', $_COOKIE['spip_session'], [
220
+        'expires' => time() + $duree
221
+    ]);
222
+    spip_log("ajoute session $fichier_session cookie $duree", "session");
223
+
224
+    // Si on est admin, poser le cookie de correspondance
225
+    if (!function_exists('autoriser')) {
226
+        include_spip('inc/autoriser');
227
+    }
228
+    if (autoriser('ecrire','','',$auteur) and _DUREE_COOKIE_ADMIN) {
229
+        spip_setcookie('spip_admin', '@' . ($auteur['email'] ?: $auteur['login']), [
230
+            'expires' => time() + max(_DUREE_COOKIE_ADMIN, $duree)
231
+        ]);
232
+    } // sinon le supprimer ...
233
+    else {
234
+        spip_setcookie('spip_admin', '', [
235
+            'expires' => 1
236
+        ]);
237
+    }
238
+
239
+    # on en profite pour purger les vieilles sessions anonymes abandonnees
240
+    # supprimer_sessions(0, true, false);
241
+
242
+    return $_COOKIE['spip_session'];
243 243
 }
244 244
 
245 245
 /**
@@ -259,15 +259,15 @@  discard block
 block discarded – undo
259 259
  *     Durée en secondes
260 260
 **/
261 261
 function definir_duree_cookie_session($auteur) {
262
-	$coef = 2;
263
-	if (isset($auteur['cookie'])) {
264
-		if (is_numeric($auteur['cookie'])) {
265
-			$coef = $auteur['cookie'];
266
-		} else {
267
-			$coef = 20;
268
-		}
269
-	}
270
-	return (int)(_RENOUVELLE_ALEA * $coef);
262
+    $coef = 2;
263
+    if (isset($auteur['cookie'])) {
264
+        if (is_numeric($auteur['cookie'])) {
265
+            $coef = $auteur['cookie'];
266
+        } else {
267
+            $coef = 20;
268
+        }
269
+    }
270
+    return (int)(_RENOUVELLE_ALEA * $coef);
271 271
 }
272 272
 
273 273
 /**
@@ -287,90 +287,90 @@  discard block
 block discarded – undo
287 287
  * @return bool|int|null
288 288
  */
289 289
 function verifier_session($change = false) {
290
-	// si pas de cookie, c'est fichu
291
-	if (!isset($_COOKIE['spip_session'])) {
292
-		return false;
293
-	}
294
-
295
-	$fichier_session = "";
296
-
297
-	// est-ce une session anonyme ?
298
-	if (!intval($_COOKIE['spip_session'])) {
299
-		spip_php_session_start();
300
-		if (!isset($_SESSION[$_COOKIE['spip_session']]) or !is_array($_SESSION[$_COOKIE['spip_session']])) {
301
-			return false;
302
-		}
303
-		$GLOBALS['visiteur_session'] = $_SESSION[$_COOKIE['spip_session']];
304
-	} else {
305
-		// Tester avec alea courant
306
-		$fichier_session = fichier_session('alea_ephemere', true);
307
-		if ($fichier_session and @file_exists($fichier_session)) {
308
-			include($fichier_session);
309
-		} else {
310
-			// Sinon, tester avec alea precedent
311
-			$fichier_session = fichier_session('alea_ephemere_ancien', true);
312
-			if (!$fichier_session or !@file_exists($fichier_session)) {
313
-				return false;
314
-			}
315
-
316
-			// Renouveler la session avec l'alea courant
317
-			include($fichier_session);
318
-			spip_log('renouvelle session ' . $GLOBALS['visiteur_session']['id_auteur'], "session");
319
-			spip_unlink($fichier_session);
320
-			ajouter_session($GLOBALS['visiteur_session']);
321
-		}
322
-	}
323
-
324
-	// Compatibilite ascendante : auteur_session est visiteur_session si
325
-	// c'est un auteur SPIP authentifie (tandis qu'un visiteur_session peut
326
-	// n'etre qu'identifie, sans aucune authentification).
327
-
328
-	if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur']) {
329
-		$GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
330
-	}
331
-
332
-
333
-	// Si l'adresse IP change, inc/presentation mettra une balise image
334
-	// avec un URL de rappel demandant a changer le nom de la session.
335
-	// Seul celui qui a l'IP d'origine est rejoue
336
-	// ainsi un eventuel voleur de cookie ne pourrait pas deconnecter
337
-	// sa victime, mais se ferait deconnecter par elle.
338
-	if (hash_env() != $GLOBALS['visiteur_session']['hash_env']) {
339
-		if (!$GLOBALS['visiteur_session']['ip_change']) {
340
-			define('_SESSION_REJOUER', true);
341
-			$GLOBALS['visiteur_session']['ip_change'] = true;
342
-			ajouter_session($GLOBALS['visiteur_session']);
343
-		} else {
344
-			if ($change) {
345
-				spip_log("session non rejouee, vol de cookie ?", "session");
346
-			}
347
-		}
348
-	} else {
349
-		if ($change) {
350
-			spip_log("rejoue session $fichier_session " . $_COOKIE['spip_session'], "session");
351
-			if ($fichier_session) {
352
-				spip_unlink($fichier_session);
353
-			}
354
-			$GLOBALS['visiteur_session']['ip_change'] = false;
355
-			unset($_COOKIE['spip_session']);
356
-			ajouter_session($GLOBALS['visiteur_session']);
357
-		}
358
-	}
359
-
360
-	// Si la session a ete initiee il y a trop longtemps, elle est annulee
361
-	if (isset($GLOBALS['visiteur_session'])
362
-		and defined('_AGE_SESSION_MAX')
363
-		and _AGE_SESSION_MAX > 0
364
-		and time() - @$GLOBALS['visiteur_session']['date_session'] > _AGE_SESSION_MAX
365
-	) {
366
-		unset($GLOBALS['visiteur_session']);
367
-
368
-		return false;
369
-	}
370
-
371
-	return is_numeric($GLOBALS['visiteur_session']['id_auteur'])
372
-		? $GLOBALS['visiteur_session']['id_auteur']
373
-		: null;
290
+    // si pas de cookie, c'est fichu
291
+    if (!isset($_COOKIE['spip_session'])) {
292
+        return false;
293
+    }
294
+
295
+    $fichier_session = "";
296
+
297
+    // est-ce une session anonyme ?
298
+    if (!intval($_COOKIE['spip_session'])) {
299
+        spip_php_session_start();
300
+        if (!isset($_SESSION[$_COOKIE['spip_session']]) or !is_array($_SESSION[$_COOKIE['spip_session']])) {
301
+            return false;
302
+        }
303
+        $GLOBALS['visiteur_session'] = $_SESSION[$_COOKIE['spip_session']];
304
+    } else {
305
+        // Tester avec alea courant
306
+        $fichier_session = fichier_session('alea_ephemere', true);
307
+        if ($fichier_session and @file_exists($fichier_session)) {
308
+            include($fichier_session);
309
+        } else {
310
+            // Sinon, tester avec alea precedent
311
+            $fichier_session = fichier_session('alea_ephemere_ancien', true);
312
+            if (!$fichier_session or !@file_exists($fichier_session)) {
313
+                return false;
314
+            }
315
+
316
+            // Renouveler la session avec l'alea courant
317
+            include($fichier_session);
318
+            spip_log('renouvelle session ' . $GLOBALS['visiteur_session']['id_auteur'], "session");
319
+            spip_unlink($fichier_session);
320
+            ajouter_session($GLOBALS['visiteur_session']);
321
+        }
322
+    }
323
+
324
+    // Compatibilite ascendante : auteur_session est visiteur_session si
325
+    // c'est un auteur SPIP authentifie (tandis qu'un visiteur_session peut
326
+    // n'etre qu'identifie, sans aucune authentification).
327
+
328
+    if (isset($GLOBALS['visiteur_session']['id_auteur']) and $GLOBALS['visiteur_session']['id_auteur']) {
329
+        $GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
330
+    }
331
+
332
+
333
+    // Si l'adresse IP change, inc/presentation mettra une balise image
334
+    // avec un URL de rappel demandant a changer le nom de la session.
335
+    // Seul celui qui a l'IP d'origine est rejoue
336
+    // ainsi un eventuel voleur de cookie ne pourrait pas deconnecter
337
+    // sa victime, mais se ferait deconnecter par elle.
338
+    if (hash_env() != $GLOBALS['visiteur_session']['hash_env']) {
339
+        if (!$GLOBALS['visiteur_session']['ip_change']) {
340
+            define('_SESSION_REJOUER', true);
341
+            $GLOBALS['visiteur_session']['ip_change'] = true;
342
+            ajouter_session($GLOBALS['visiteur_session']);
343
+        } else {
344
+            if ($change) {
345
+                spip_log("session non rejouee, vol de cookie ?", "session");
346
+            }
347
+        }
348
+    } else {
349
+        if ($change) {
350
+            spip_log("rejoue session $fichier_session " . $_COOKIE['spip_session'], "session");
351
+            if ($fichier_session) {
352
+                spip_unlink($fichier_session);
353
+            }
354
+            $GLOBALS['visiteur_session']['ip_change'] = false;
355
+            unset($_COOKIE['spip_session']);
356
+            ajouter_session($GLOBALS['visiteur_session']);
357
+        }
358
+    }
359
+
360
+    // Si la session a ete initiee il y a trop longtemps, elle est annulee
361
+    if (isset($GLOBALS['visiteur_session'])
362
+        and defined('_AGE_SESSION_MAX')
363
+        and _AGE_SESSION_MAX > 0
364
+        and time() - @$GLOBALS['visiteur_session']['date_session'] > _AGE_SESSION_MAX
365
+    ) {
366
+        unset($GLOBALS['visiteur_session']);
367
+
368
+        return false;
369
+    }
370
+
371
+    return is_numeric($GLOBALS['visiteur_session']['id_auteur'])
372
+        ? $GLOBALS['visiteur_session']['id_auteur']
373
+        : null;
374 374
 }
375 375
 
376 376
 /**
@@ -385,7 +385,7 @@  discard block
 block discarded – undo
385 385
  *     Valeur, si trouvée, `null` sinon.
386 386
  */
387 387
 function session_get($nom) {
388
-	return isset($GLOBALS['visiteur_session'][$nom]) ? $GLOBALS['visiteur_session'][$nom] : null;
388
+    return isset($GLOBALS['visiteur_session'][$nom]) ? $GLOBALS['visiteur_session'][$nom] : null;
389 389
 }
390 390
 
391 391
 
@@ -401,32 +401,32 @@  discard block
 block discarded – undo
401 401
  * @return void|array
402 402
  */
403 403
 function session_set($nom, $val = null) {
404
-	static $remove = array();
405
-	static $actualiser_sessions = false;
406
-	if ($nom === false) {
407
-		return $remove;
408
-	}
409
-	if (is_null($val)) {
410
-		// rien a faire
411
-		if (!isset($GLOBALS['visiteur_session'][$nom])) {
412
-			return;
413
-		}
414
-		unset($GLOBALS['visiteur_session'][$nom]);
415
-		$remove[] = $nom;
416
-	} else {
417
-		// On ajoute la valeur dans la globale
418
-		$GLOBALS['visiteur_session'][$nom] = $val;
419
-		if ($remove) {
420
-			$remove = array_diff($remove, array($nom));
421
-		}
422
-	}
423
-	if (!$actualiser_sessions) {
424
-		// il faut creer la session si on en a pas, la premiere fois
425
-		ajouter_session($GLOBALS['visiteur_session']);
426
-		// in register la fonction qui mettra a jour toutes les sessions en fin de hit
427
-		register_shutdown_function('terminer_actualiser_sessions');
428
-		$actualiser_sessions = true;
429
-	}
404
+    static $remove = array();
405
+    static $actualiser_sessions = false;
406
+    if ($nom === false) {
407
+        return $remove;
408
+    }
409
+    if (is_null($val)) {
410
+        // rien a faire
411
+        if (!isset($GLOBALS['visiteur_session'][$nom])) {
412
+            return;
413
+        }
414
+        unset($GLOBALS['visiteur_session'][$nom]);
415
+        $remove[] = $nom;
416
+    } else {
417
+        // On ajoute la valeur dans la globale
418
+        $GLOBALS['visiteur_session'][$nom] = $val;
419
+        if ($remove) {
420
+            $remove = array_diff($remove, array($nom));
421
+        }
422
+    }
423
+    if (!$actualiser_sessions) {
424
+        // il faut creer la session si on en a pas, la premiere fois
425
+        ajouter_session($GLOBALS['visiteur_session']);
426
+        // in register la fonction qui mettra a jour toutes les sessions en fin de hit
427
+        register_shutdown_function('terminer_actualiser_sessions');
428
+        $actualiser_sessions = true;
429
+    }
430 430
 }
431 431
 
432 432
 /**
@@ -435,12 +435,12 @@  discard block
 block discarded – undo
435 435
  * @uses actualiser_sessions()
436 436
  */
437 437
 function terminer_actualiser_sessions() {
438
-	// se remettre dans le dossier de travail au cas ou Apache a change
439
-	chdir(_ROOT_CWD);
440
-	// recuperer les variables a effacer
441
-	$remove = session_set(false);
442
-	// mettre a jour toutes les sessions
443
-	actualiser_sessions($GLOBALS['visiteur_session'], $remove);
438
+    // se remettre dans le dossier de travail au cas ou Apache a change
439
+    chdir(_ROOT_CWD);
440
+    // recuperer les variables a effacer
441
+    $remove = session_set(false);
442
+    // mettre a jour toutes les sessions
443
+    actualiser_sessions($GLOBALS['visiteur_session'], $remove);
444 444
 }
445 445
 
446 446
 
@@ -465,82 +465,82 @@  discard block
 block discarded – undo
465 465
  */
466 466
 function actualiser_sessions($auteur, $supprimer_cles = array()) {
467 467
 
468
-	$id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
469
-	$id_auteur_courant = isset($GLOBALS['visiteur_session']['id_auteur']) ? intval($GLOBALS['visiteur_session']['id_auteur']) : 0;
470
-
471
-	// si l'auteur est celui de la session courante, verifier/creer la session si besoin
472
-	$fichier_session_courante = "";
473
-	if ($id_auteur == $id_auteur_courant) {
474
-		$auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
475
-		ajouter_session($auteur);
476
-		if ($id_auteur) {
477
-			$fichier_session_courante = fichier_session('alea_ephemere');
478
-		}
479
-	}
480
-
481
-	// si session anonyme on ne fait rien d'autre ici : les sessions anonymes sont non partagees
482
-	if (!$id_auteur) {
483
-		return;
484
-	}
485
-
486
-	// les préférences sont désérialisées, toujours.
487
-	// [fixme] Le champ 'prefs' sert aussi à l’inscription
488
-	if (isset($auteur['prefs']) and is_string($auteur['prefs'])) {
489
-		$auteur['prefs'] = @unserialize($auteur['prefs']);
490
-		if (!is_array($auteur['prefs'])) {
491
-			$auteur['prefs'] = [];
492
-		}
493
-	}
494
-
495
-	// memoriser l'auteur courant (celui qui modifie la fiche)
496
-	$sauve = $GLOBALS['visiteur_session'];
497
-
498
-	// .. mettre a jour les sessions de l'auteur cible
499
-	// attention au $ final pour ne pas risquer d'embarquer un .php.jeton temporaire
500
-	// cree par une ecriture concurente d'une session (fichier atomique temporaire)
501
-	$sessions = lister_sessions_auteur($id_auteur);
502
-
503
-	// 1ere passe : lire et fusionner les sessions
504
-	foreach ($sessions as $session) {
505
-		$GLOBALS['visiteur_session'] = array();
506
-		// a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
507
-		if ($session !== $fichier_session_courante
508
-			and @file_exists($session)
509
-		) {
510
-			include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
511
-
512
-			$auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
513
-		}
514
-	}
515
-
516
-	// supprimer les eventuelles cles dont on ne veut plus
517
-	foreach ($supprimer_cles as $cle) {
518
-		unset($auteur[$cle]);
519
-	}
520
-
521
-	$auteur_session = preparer_ecriture_session($auteur);
522
-
523
-	// seconde passe : ecrire les sessions qui ne sont pas a jour
524
-	foreach ($sessions as $session) {
525
-		$GLOBALS['visiteur_session'] = array();
526
-		// a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
527
-		if (@file_exists($session)) {
528
-			include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
529
-
530
-			// est-ce que cette session est a mettre a jour ?
531
-			if ($auteur_session != $GLOBALS['visiteur_session']) {
532
-				ecrire_fichier_session($session, $auteur);
533
-			}
534
-		}
535
-	}
536
-
537
-	if ($id_auteur == $id_auteur_courant) {
538
-		$GLOBALS['visiteur_session'] = $auteur;
539
-		$GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
540
-	} else {
541
-		// restaurer l'auteur courant
542
-		$GLOBALS['visiteur_session'] = $sauve;
543
-	}
468
+    $id_auteur = isset($auteur['id_auteur']) ? intval($auteur['id_auteur']) : 0;
469
+    $id_auteur_courant = isset($GLOBALS['visiteur_session']['id_auteur']) ? intval($GLOBALS['visiteur_session']['id_auteur']) : 0;
470
+
471
+    // si l'auteur est celui de la session courante, verifier/creer la session si besoin
472
+    $fichier_session_courante = "";
473
+    if ($id_auteur == $id_auteur_courant) {
474
+        $auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
475
+        ajouter_session($auteur);
476
+        if ($id_auteur) {
477
+            $fichier_session_courante = fichier_session('alea_ephemere');
478
+        }
479
+    }
480
+
481
+    // si session anonyme on ne fait rien d'autre ici : les sessions anonymes sont non partagees
482
+    if (!$id_auteur) {
483
+        return;
484
+    }
485
+
486
+    // les préférences sont désérialisées, toujours.
487
+    // [fixme] Le champ 'prefs' sert aussi à l’inscription
488
+    if (isset($auteur['prefs']) and is_string($auteur['prefs'])) {
489
+        $auteur['prefs'] = @unserialize($auteur['prefs']);
490
+        if (!is_array($auteur['prefs'])) {
491
+            $auteur['prefs'] = [];
492
+        }
493
+    }
494
+
495
+    // memoriser l'auteur courant (celui qui modifie la fiche)
496
+    $sauve = $GLOBALS['visiteur_session'];
497
+
498
+    // .. mettre a jour les sessions de l'auteur cible
499
+    // attention au $ final pour ne pas risquer d'embarquer un .php.jeton temporaire
500
+    // cree par une ecriture concurente d'une session (fichier atomique temporaire)
501
+    $sessions = lister_sessions_auteur($id_auteur);
502
+
503
+    // 1ere passe : lire et fusionner les sessions
504
+    foreach ($sessions as $session) {
505
+        $GLOBALS['visiteur_session'] = array();
506
+        // a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
507
+        if ($session !== $fichier_session_courante
508
+            and @file_exists($session)
509
+        ) {
510
+            include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
511
+
512
+            $auteur = array_merge($GLOBALS['visiteur_session'], $auteur);
513
+        }
514
+    }
515
+
516
+    // supprimer les eventuelles cles dont on ne veut plus
517
+    foreach ($supprimer_cles as $cle) {
518
+        unset($auteur[$cle]);
519
+    }
520
+
521
+    $auteur_session = preparer_ecriture_session($auteur);
522
+
523
+    // seconde passe : ecrire les sessions qui ne sont pas a jour
524
+    foreach ($sessions as $session) {
525
+        $GLOBALS['visiteur_session'] = array();
526
+        // a pu etre supprime entre le preg initial et le moment ou l'on arrive la (concurrence)
527
+        if (@file_exists($session)) {
528
+            include $session; # $GLOBALS['visiteur_session'] est alors l'auteur cible
529
+
530
+            // est-ce que cette session est a mettre a jour ?
531
+            if ($auteur_session != $GLOBALS['visiteur_session']) {
532
+                ecrire_fichier_session($session, $auteur);
533
+            }
534
+        }
535
+    }
536
+
537
+    if ($id_auteur == $id_auteur_courant) {
538
+        $GLOBALS['visiteur_session'] = $auteur;
539
+        $GLOBALS['auteur_session'] = &$GLOBALS['visiteur_session'];
540
+    } else {
541
+        // restaurer l'auteur courant
542
+        $GLOBALS['visiteur_session'] = $sauve;
543
+    }
544 544
 
545 545
 }
546 546
 
@@ -555,46 +555,46 @@  discard block
 block discarded – undo
555 555
  */
556 556
 function lister_sessions_auteur($id_auteur, $nb_max = null) {
557 557
 
558
-	if (is_null($nb_max)) {
559
-		if (!defined('_NB_SESSIONS_MAX')) {
560
-			define('_NB_SESSIONS_MAX', 100);
561
-		}
562
-		$nb_max = _NB_SESSIONS_MAX;
563
-	}
564
-
565
-	// liste des sessions
566
-	$sessions = preg_files(_DIR_SESSIONS, '/' . $id_auteur . '_.*\.php$');
567
-
568
-	// si on en a plus que la limite, supprimer les plus vieilles
569
-	// si ce ne sont pas des sessions anonymes car elles sont alors chacune differentes
570
-	if ($id_auteur
571
-		and count($sessions) > $nb_max) {
572
-
573
-		// limiter le nombre de sessions ouvertes par un auteur
574
-		// filemtime sur les sessions
575
-		$sessions = array_flip($sessions);
576
-
577
-		// 1ere passe : lire les filemtime
578
-		foreach ($sessions as $session => $z) {
579
-			if ($d = @filemtime($session)
580
-			) {
581
-				$sessions[$session] = $d;
582
-			} else {
583
-				$sessions[$session] = 0;
584
-			}
585
-		}
586
-
587
-		// les plus anciennes en premier
588
-		asort($sessions);
589
-
590
-		$sessions = array_keys($sessions);
591
-		while (count($sessions) > $nb_max) {
592
-			$session = array_shift($sessions);
593
-			@unlink($session);
594
-		}
595
-	}
596
-
597
-	return $sessions;
558
+    if (is_null($nb_max)) {
559
+        if (!defined('_NB_SESSIONS_MAX')) {
560
+            define('_NB_SESSIONS_MAX', 100);
561
+        }
562
+        $nb_max = _NB_SESSIONS_MAX;
563
+    }
564
+
565
+    // liste des sessions
566
+    $sessions = preg_files(_DIR_SESSIONS, '/' . $id_auteur . '_.*\.php$');
567
+
568
+    // si on en a plus que la limite, supprimer les plus vieilles
569
+    // si ce ne sont pas des sessions anonymes car elles sont alors chacune differentes
570
+    if ($id_auteur
571
+        and count($sessions) > $nb_max) {
572
+
573
+        // limiter le nombre de sessions ouvertes par un auteur
574
+        // filemtime sur les sessions
575
+        $sessions = array_flip($sessions);
576
+
577
+        // 1ere passe : lire les filemtime
578
+        foreach ($sessions as $session => $z) {
579
+            if ($d = @filemtime($session)
580
+            ) {
581
+                $sessions[$session] = $d;
582
+            } else {
583
+                $sessions[$session] = 0;
584
+            }
585
+        }
586
+
587
+        // les plus anciennes en premier
588
+        asort($sessions);
589
+
590
+        $sessions = array_keys($sessions);
591
+        while (count($sessions) > $nb_max) {
592
+            $session = array_shift($sessions);
593
+            @unlink($session);
594
+        }
595
+    }
596
+
597
+    return $sessions;
598 598
 }
599 599
 
600 600
 
@@ -608,26 +608,26 @@  discard block
 block discarded – undo
608 608
  * @return array
609 609
  */
610 610
 function preparer_ecriture_session($auteur) {
611
-	$row = $auteur;
612
-
613
-	// ne pas enregistrer ces elements de securite
614
-	// dans le fichier de session
615
-	unset($auteur['pass']);
616
-	unset($auteur['htpass']);
617
-	unset($auteur['low_sec']);
618
-	unset($auteur['alea_actuel']);
619
-	unset($auteur['alea_futur']);
620
-
621
-	$auteur = pipeline('preparer_fichier_session', array('args' => array('row' => $row), 'data' => $auteur));
622
-
623
-	// ne pas enregistrer les valeurs vraiment nulle dans le fichier
624
-	foreach ($auteur as $variable => $valeur) {
625
-		if ($valeur === null) {
626
-			unset($auteur[$variable]);
627
-		}
628
-	}
629
-
630
-	return $auteur;
611
+    $row = $auteur;
612
+
613
+    // ne pas enregistrer ces elements de securite
614
+    // dans le fichier de session
615
+    unset($auteur['pass']);
616
+    unset($auteur['htpass']);
617
+    unset($auteur['low_sec']);
618
+    unset($auteur['alea_actuel']);
619
+    unset($auteur['alea_futur']);
620
+
621
+    $auteur = pipeline('preparer_fichier_session', array('args' => array('row' => $row), 'data' => $auteur));
622
+
623
+    // ne pas enregistrer les valeurs vraiment nulle dans le fichier
624
+    foreach ($auteur as $variable => $valeur) {
625
+        if ($valeur === null) {
626
+            unset($auteur[$variable]);
627
+        }
628
+    }
629
+
630
+    return $auteur;
631 631
 }
632 632
 
633 633
 /**
@@ -639,17 +639,17 @@  discard block
 block discarded – undo
639 639
  */
640 640
 function ecrire_fichier_session($fichier, $auteur) {
641 641
 
642
-	$auteur = preparer_ecriture_session($auteur);
642
+    $auteur = preparer_ecriture_session($auteur);
643 643
 
644
-	// enregistrer les autres donnees du visiteur
645
-	$texte = "<" . "?php\n";
646
-	foreach ($auteur as $var => $val) {
647
-		$texte .= '$GLOBALS[\'visiteur_session\'][' . var_export($var, true) . '] = '
648
-			. var_export($val, true) . ";\n";
649
-	}
650
-	$texte .= "?" . ">\n";
644
+    // enregistrer les autres donnees du visiteur
645
+    $texte = "<" . "?php\n";
646
+    foreach ($auteur as $var => $val) {
647
+        $texte .= '$GLOBALS[\'visiteur_session\'][' . var_export($var, true) . '] = '
648
+            . var_export($val, true) . ";\n";
649
+    }
650
+    $texte .= "?" . ">\n";
651 651
 
652
-	return ecrire_fichier($fichier, $texte);
652
+    return ecrire_fichier($fichier, $texte);
653 653
 }
654 654
 
655 655
 
@@ -662,23 +662,23 @@  discard block
 block discarded – undo
662 662
  */
663 663
 function fichier_session($alea, $tantpis = false) {
664 664
 
665
-	include_spip('inc/acces');
666
-	charger_aleas();
665
+    include_spip('inc/acces');
666
+    charger_aleas();
667 667
 
668
-	if (empty($GLOBALS['meta'][$alea])) {
669
-		if (!$tantpis) {
670
-			spip_log("fichier session ($tantpis): $alea indisponible", "session");
671
-			include_spip('inc/minipres');
672
-			echo minipres();
673
-		}
668
+    if (empty($GLOBALS['meta'][$alea])) {
669
+        if (!$tantpis) {
670
+            spip_log("fichier session ($tantpis): $alea indisponible", "session");
671
+            include_spip('inc/minipres');
672
+            echo minipres();
673
+        }
674 674
 
675
-		return ''; // echec mais $tanpis
676
-	} else {
677
-		$repertoire = sous_repertoire(_DIR_SESSIONS, '', false, $tantpis);
678
-		$c = $_COOKIE['spip_session'];
675
+        return ''; // echec mais $tanpis
676
+    } else {
677
+        $repertoire = sous_repertoire(_DIR_SESSIONS, '', false, $tantpis);
678
+        $c = $_COOKIE['spip_session'];
679 679
 
680
-		return $repertoire . intval($c) . '_' . md5($c . ' ' . $GLOBALS['meta'][$alea]) . '.php';
681
-	}
680
+        return $repertoire . intval($c) . '_' . md5($c . ' ' . $GLOBALS['meta'][$alea]) . '.php';
681
+    }
682 682
 }
683 683
 
684 684
 
@@ -695,7 +695,7 @@  discard block
 block discarded – undo
695 695
  * @return string
696 696
  */
697 697
 function rejouer_session() {
698
-	return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
698
+    return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
699 699
 }
700 700
 
701 701
 
@@ -705,12 +705,12 @@  discard block
 block discarded – undo
705 705
  * @return string
706 706
  */
707 707
 function hash_env() {
708
-	static $res = '';
709
-	if ($res) {
710
-		return $res;
711
-	}
708
+    static $res = '';
709
+    if ($res) {
710
+        return $res;
711
+    }
712 712
 
713
-	return $res = md5($GLOBALS['ip'] . (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
713
+    return $res = md5($GLOBALS['ip'] . (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
714 714
 }
715 715
 
716 716
 
@@ -722,11 +722,11 @@  discard block
 block discarded – undo
722 722
  * @return bool True si une session PHP est ouverte.
723 723
  **/
724 724
 function spip_php_session_start() {
725
-	if (!is_php_session_started()) {
726
-		return session_start();
727
-	}
725
+    if (!is_php_session_started()) {
726
+        return session_start();
727
+    }
728 728
 
729
-	return true;
729
+    return true;
730 730
 }
731 731
 
732 732
 /**
@@ -736,9 +736,9 @@  discard block
 block discarded – undo
736 736
  * @return bool true si une session PHP est active
737 737
  **/
738 738
 function is_php_session_started() {
739
-	if (php_sapi_name() !== 'cli') {
740
-		return session_status() === PHP_SESSION_ACTIVE ? true : false;
741
-	}
739
+    if (php_sapi_name() !== 'cli') {
740
+        return session_status() === PHP_SESSION_ACTIVE ? true : false;
741
+    }
742 742
 
743
-	return false;
743
+    return false;
744 744
 }
Please login to merge, or discard this patch.
Spacing   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -82,19 +82,19 @@  discard block
 block discarded – undo
82 82
 	spip_log("supprimer sessions auteur $id_auteur", "session");
83 83
 	if ($toutes or $id_auteur !== $GLOBALS['visiteur_session']['id_auteur']) {
84 84
 		if ($dir = opendir(_DIR_SESSIONS)) {
85
-			$t = $_SERVER['REQUEST_TIME']  - (4*_RENOUVELLE_ALEA); // 48h par defaut
86
-			$t_short = $_SERVER['REQUEST_TIME']  - max(_RENOUVELLE_ALEA/4,3*3600); // 3h par defaut
85
+			$t = $_SERVER['REQUEST_TIME'] - (4 * _RENOUVELLE_ALEA); // 48h par defaut
86
+			$t_short = $_SERVER['REQUEST_TIME'] - max(_RENOUVELLE_ALEA / 4, 3 * 3600); // 3h par defaut
87 87
 			$t = time() - (4 * _RENOUVELLE_ALEA);
88 88
 			while (($f = readdir($dir)) !== false) {
89 89
 				$nb_files++;
90 90
 				if (preg_match(",^[^\d-]*(-?\d+)_\w{32}\.php[3]?$,", $f, $regs)) {
91
-					$f = _DIR_SESSIONS . $f;
91
+					$f = _DIR_SESSIONS.$f;
92 92
 					if (($actives and $regs[1] == $id_auteur) or ($t > filemtime($f))) {
93 93
 						spip_unlink($f);
94 94
 					}
95 95
 					// si il y a trop de sessions ouvertes, on purge les sessions anonymes de plus de 3H
96 96
 					// cf http://core.spip.org/issues/3276
97
-					elseif ($nb_files>$nb_max_files and !intval($regs[1]) and ($t_short > filemtime($f))) {
97
+					elseif ($nb_files > $nb_max_files and !intval($regs[1]) and ($t_short > filemtime($f))) {
98 98
 						spip_unlink($f);
99 99
 					}
100 100
 				}
@@ -170,9 +170,9 @@  discard block
 block discarded – undo
170 170
 	}
171 171
 
172 172
 	if (!isset($_COOKIE['spip_session'])
173
-		or !preg_match(',^' . $id_auteur . '_,', $_COOKIE['spip_session'])
173
+		or !preg_match(',^'.$id_auteur.'_,', $_COOKIE['spip_session'])
174 174
 	) {
175
-		$_COOKIE['spip_session'] = $id_auteur . '_' . md5(uniqid(rand(), true));
175
+		$_COOKIE['spip_session'] = $id_auteur.'_'.md5(uniqid(rand(), true));
176 176
 	}
177 177
 
178 178
 	// Maintenant on sait qu'on a des choses à écrire
@@ -203,7 +203,7 @@  discard block
 block discarded – undo
203 203
 	} else {
204 204
 		$fichier_session = fichier_session('alea_ephemere');
205 205
 		if (!ecrire_fichier_session($fichier_session, $auteur)) {
206
-			spip_log('Echec ecriture fichier session ' . $fichier_session, "session" . _LOG_HS);
206
+			spip_log('Echec ecriture fichier session '.$fichier_session, "session"._LOG_HS);
207 207
 			include_spip('inc/minipres');
208 208
 			echo minipres();
209 209
 			exit;
@@ -216,7 +216,7 @@  discard block
 block discarded – undo
216 216
 	// poser le cookie de session SPIP
217 217
 	include_spip('inc/cookie');
218 218
 	$duree = definir_duree_cookie_session($auteur);
219
-	spip_setcookie( 'spip_session', $_COOKIE['spip_session'], [
219
+	spip_setcookie('spip_session', $_COOKIE['spip_session'], [
220 220
 		'expires' => time() + $duree
221 221
 	]);
222 222
 	spip_log("ajoute session $fichier_session cookie $duree", "session");
@@ -225,8 +225,8 @@  discard block
 block discarded – undo
225 225
 	if (!function_exists('autoriser')) {
226 226
 		include_spip('inc/autoriser');
227 227
 	}
228
-	if (autoriser('ecrire','','',$auteur) and _DUREE_COOKIE_ADMIN) {
229
-		spip_setcookie('spip_admin', '@' . ($auteur['email'] ?: $auteur['login']), [
228
+	if (autoriser('ecrire', '', '', $auteur) and _DUREE_COOKIE_ADMIN) {
229
+		spip_setcookie('spip_admin', '@'.($auteur['email'] ?: $auteur['login']), [
230 230
 			'expires' => time() + max(_DUREE_COOKIE_ADMIN, $duree)
231 231
 		]);
232 232
 	} // sinon le supprimer ...
@@ -267,7 +267,7 @@  discard block
 block discarded – undo
267 267
 			$coef = 20;
268 268
 		}
269 269
 	}
270
-	return (int)(_RENOUVELLE_ALEA * $coef);
270
+	return (int) (_RENOUVELLE_ALEA * $coef);
271 271
 }
272 272
 
273 273
 /**
@@ -315,7 +315,7 @@  discard block
 block discarded – undo
315 315
 
316 316
 			// Renouveler la session avec l'alea courant
317 317
 			include($fichier_session);
318
-			spip_log('renouvelle session ' . $GLOBALS['visiteur_session']['id_auteur'], "session");
318
+			spip_log('renouvelle session '.$GLOBALS['visiteur_session']['id_auteur'], "session");
319 319
 			spip_unlink($fichier_session);
320 320
 			ajouter_session($GLOBALS['visiteur_session']);
321 321
 		}
@@ -347,7 +347,7 @@  discard block
 block discarded – undo
347 347
 		}
348 348
 	} else {
349 349
 		if ($change) {
350
-			spip_log("rejoue session $fichier_session " . $_COOKIE['spip_session'], "session");
350
+			spip_log("rejoue session $fichier_session ".$_COOKIE['spip_session'], "session");
351 351
 			if ($fichier_session) {
352 352
 				spip_unlink($fichier_session);
353 353
 			}
@@ -563,7 +563,7 @@  discard block
 block discarded – undo
563 563
 	}
564 564
 
565 565
 	// liste des sessions
566
-	$sessions = preg_files(_DIR_SESSIONS, '/' . $id_auteur . '_.*\.php$');
566
+	$sessions = preg_files(_DIR_SESSIONS, '/'.$id_auteur.'_.*\.php$');
567 567
 
568 568
 	// si on en a plus que la limite, supprimer les plus vieilles
569 569
 	// si ce ne sont pas des sessions anonymes car elles sont alors chacune differentes
@@ -642,12 +642,12 @@  discard block
 block discarded – undo
642 642
 	$auteur = preparer_ecriture_session($auteur);
643 643
 
644 644
 	// enregistrer les autres donnees du visiteur
645
-	$texte = "<" . "?php\n";
645
+	$texte = "<"."?php\n";
646 646
 	foreach ($auteur as $var => $val) {
647
-		$texte .= '$GLOBALS[\'visiteur_session\'][' . var_export($var, true) . '] = '
648
-			. var_export($val, true) . ";\n";
647
+		$texte .= '$GLOBALS[\'visiteur_session\']['.var_export($var, true).'] = '
648
+			. var_export($val, true).";\n";
649 649
 	}
650
-	$texte .= "?" . ">\n";
650
+	$texte .= "?".">\n";
651 651
 
652 652
 	return ecrire_fichier($fichier, $texte);
653 653
 }
@@ -677,7 +677,7 @@  discard block
 block discarded – undo
677 677
 		$repertoire = sous_repertoire(_DIR_SESSIONS, '', false, $tantpis);
678 678
 		$c = $_COOKIE['spip_session'];
679 679
 
680
-		return $repertoire . intval($c) . '_' . md5($c . ' ' . $GLOBALS['meta'][$alea]) . '.php';
680
+		return $repertoire.intval($c).'_'.md5($c.' '.$GLOBALS['meta'][$alea]).'.php';
681 681
 	}
682 682
 }
683 683
 
@@ -695,7 +695,7 @@  discard block
 block discarded – undo
695 695
  * @return string
696 696
  */
697 697
 function rejouer_session() {
698
-	return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
698
+	return '<img src="'.generer_url_action('cookie', 'change_session=oui', true).'" width="0" height="0" alt="" />';
699 699
 }
700 700
 
701 701
 
@@ -710,7 +710,7 @@  discard block
 block discarded – undo
710 710
 		return $res;
711 711
 	}
712 712
 
713
-	return $res = md5($GLOBALS['ip'] . (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
713
+	return $res = md5($GLOBALS['ip'].(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''));
714 714
 }
715 715
 
716 716
 
Please login to merge, or discard this patch.
ecrire/inc/cookie.php 2 patches
Indentation   +91 added lines, -91 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
@@ -52,62 +52,62 @@  discard block
 block discarded – undo
52 52
  *     cookie sécurisé ou non ?
53 53
  **/
54 54
 function spip_setcookie($name = '', $value = '', $options = []) {
55
-	static $to_secure_list = ['spip_session'];
56
-
57
-	if (!is_array($options)) {
58
-		// anciens paramètres :
59
-		# spip_setcookie($name = '', $value = '', $expire = 0, $path = 'AUTO', $domain = '', $secure = '')
60
-		$opt = func_get_args();
61
-		$opt = array_slice($opt, 2);
62
-		$options = []; # /!\ après le func_get_args (sinon $opt[0] référence la nouvelle valeur de $options !);
63
-		if (isset($opt[0])) {
64
-			$options['expires'] = $opt[0];
65
-		}
66
-		if (isset($opt[1])) {
67
-			$options['path'] = $opt[1];
68
-		}
69
-		if (isset($opt[2])) {
70
-			$options['domain'] = $opt[2];
71
-		}
72
-		if (isset($opt[3])) {
73
-			$options['secure'] = $opt[3];
74
-		}
75
-	}
76
-
77
-	$name = preg_replace('/^spip_/', $GLOBALS['cookie_prefix'] . '_', $name);
78
-
79
-	// expires
80
-	if (!isset($options['expires'])) {
81
-		$options['expires'] = 0;
82
-	}
83
-	if (!isset($options['path']) or $options['path'] === 'AUTO') {
84
-		if (defined('_COOKIE_PATH')) {
85
-			$options['path'] = _COOKIE_PATH;
86
-		} else {
87
-			$options['path'] = preg_replace(',^\w+://[^/]*,', '', url_de_base());
88
-		}
89
-	}
90
-	if (empty($options['domain']) and defined('_COOKIE_DOMAIN') and _COOKIE_DOMAIN) {
91
-		$options['domain'] = _COOKIE_DOMAIN;
92
-	}
93
-	if (in_array($name, $to_secure_list)) {
94
-		if (empty($options['secure']) and defined('_COOKIE_SECURE') and _COOKIE_SECURE) {
95
-			$options['secure'] = true;
96
-		}
97
-		if (empty($options['httponly'])) {
98
-			$options['httponly'] = true;
99
-		}
100
-	}
101
-	if (empty($options['samesite'])) {
102
-		$options['samesite'] = 'Lax';
103
-	}
104
-
105
-	#spip_log("cookie('$name', '$value', " . json_encode($options, true) . ")", "cookies");
106
-	$a = @setcookie($name, $value, $options);
107
-
108
-	spip_cookie_envoye(true);
109
-
110
-	return $a;
55
+    static $to_secure_list = ['spip_session'];
56
+
57
+    if (!is_array($options)) {
58
+        // anciens paramètres :
59
+        # spip_setcookie($name = '', $value = '', $expire = 0, $path = 'AUTO', $domain = '', $secure = '')
60
+        $opt = func_get_args();
61
+        $opt = array_slice($opt, 2);
62
+        $options = []; # /!\ après le func_get_args (sinon $opt[0] référence la nouvelle valeur de $options !);
63
+        if (isset($opt[0])) {
64
+            $options['expires'] = $opt[0];
65
+        }
66
+        if (isset($opt[1])) {
67
+            $options['path'] = $opt[1];
68
+        }
69
+        if (isset($opt[2])) {
70
+            $options['domain'] = $opt[2];
71
+        }
72
+        if (isset($opt[3])) {
73
+            $options['secure'] = $opt[3];
74
+        }
75
+    }
76
+
77
+    $name = preg_replace('/^spip_/', $GLOBALS['cookie_prefix'] . '_', $name);
78
+
79
+    // expires
80
+    if (!isset($options['expires'])) {
81
+        $options['expires'] = 0;
82
+    }
83
+    if (!isset($options['path']) or $options['path'] === 'AUTO') {
84
+        if (defined('_COOKIE_PATH')) {
85
+            $options['path'] = _COOKIE_PATH;
86
+        } else {
87
+            $options['path'] = preg_replace(',^\w+://[^/]*,', '', url_de_base());
88
+        }
89
+    }
90
+    if (empty($options['domain']) and defined('_COOKIE_DOMAIN') and _COOKIE_DOMAIN) {
91
+        $options['domain'] = _COOKIE_DOMAIN;
92
+    }
93
+    if (in_array($name, $to_secure_list)) {
94
+        if (empty($options['secure']) and defined('_COOKIE_SECURE') and _COOKIE_SECURE) {
95
+            $options['secure'] = true;
96
+        }
97
+        if (empty($options['httponly'])) {
98
+            $options['httponly'] = true;
99
+        }
100
+    }
101
+    if (empty($options['samesite'])) {
102
+        $options['samesite'] = 'Lax';
103
+    }
104
+
105
+    #spip_log("cookie('$name', '$value', " . json_encode($options, true) . ")", "cookies");
106
+    $a = @setcookie($name, $value, $options);
107
+
108
+    spip_cookie_envoye(true);
109
+
110
+    return $a;
111 111
 }
112 112
 
113 113
 /**
@@ -123,12 +123,12 @@  discard block
 block discarded – undo
123 123
  * @return bool
124 124
  **/
125 125
 function spip_cookie_envoye($set = '') {
126
-	static $envoye = false;
127
-	if ($set) {
128
-		$envoye = true;
129
-	}
126
+    static $envoye = false;
127
+    if ($set) {
128
+        $envoye = true;
129
+    }
130 130
 
131
-	return $envoye;
131
+    return $envoye;
132 132
 }
133 133
 
134 134
 /**
@@ -147,21 +147,21 @@  discard block
 block discarded – undo
147 147
  *     Préfixe des cookies de SPIP
148 148
  **/
149 149
 function recuperer_cookies_spip($cookie_prefix) {
150
-	$prefix_long = strlen($cookie_prefix);
151
-
152
-	foreach ($_COOKIE as $name => $value) {
153
-		if (substr($name, 0, 5) == 'spip_' && substr($name, 0, $prefix_long) != $cookie_prefix) {
154
-			unset($_COOKIE[$name]);
155
-			unset($GLOBALS[$name]);
156
-		}
157
-	}
158
-	foreach ($_COOKIE as $name => $value) {
159
-		if (substr($name, 0, $prefix_long) == $cookie_prefix) {
160
-			$spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
161
-			$_COOKIE[$spipname] = $value;
162
-			$GLOBALS[$spipname] = $value;
163
-		}
164
-	}
150
+    $prefix_long = strlen($cookie_prefix);
151
+
152
+    foreach ($_COOKIE as $name => $value) {
153
+        if (substr($name, 0, 5) == 'spip_' && substr($name, 0, $prefix_long) != $cookie_prefix) {
154
+            unset($_COOKIE[$name]);
155
+            unset($GLOBALS[$name]);
156
+        }
157
+    }
158
+    foreach ($_COOKIE as $name => $value) {
159
+        if (substr($name, 0, $prefix_long) == $cookie_prefix) {
160
+            $spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
161
+            $_COOKIE[$spipname] = $value;
162
+            $GLOBALS[$spipname] = $value;
163
+        }
164
+    }
165 165
 
166 166
 }
167 167
 
@@ -181,18 +181,18 @@  discard block
 block discarded – undo
181 181
  *
182 182
  **/
183 183
 function exec_test_ajax_dist() {
184
-	switch (_request('js')) {
185
-		// on est appele par <noscript>
186
-		case -1:
187
-			spip_setcookie('spip_accepte_ajax', -1);
188
-			include_spip('inc/headers');
189
-			redirige_par_entete(chemin_image('puce-orange-anim.gif'));
190
-			break;
191
-
192
-		// ou par ajax
193
-		case 1:
194
-		default:
195
-			spip_setcookie('spip_accepte_ajax', 1);
196
-			break;
197
-	}
184
+    switch (_request('js')) {
185
+        // on est appele par <noscript>
186
+        case -1:
187
+            spip_setcookie('spip_accepte_ajax', -1);
188
+            include_spip('inc/headers');
189
+            redirige_par_entete(chemin_image('puce-orange-anim.gif'));
190
+            break;
191
+
192
+        // ou par ajax
193
+        case 1:
194
+        default:
195
+            spip_setcookie('spip_accepte_ajax', 1);
196
+            break;
197
+    }
198 198
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -74,7 +74,7 @@  discard block
 block discarded – undo
74 74
 		}
75 75
 	}
76 76
 
77
-	$name = preg_replace('/^spip_/', $GLOBALS['cookie_prefix'] . '_', $name);
77
+	$name = preg_replace('/^spip_/', $GLOBALS['cookie_prefix'].'_', $name);
78 78
 
79 79
 	// expires
80 80
 	if (!isset($options['expires'])) {
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
 	}
158 158
 	foreach ($_COOKIE as $name => $value) {
159 159
 		if (substr($name, 0, $prefix_long) == $cookie_prefix) {
160
-			$spipname = preg_replace('/^' . $cookie_prefix . '_/', 'spip_', $name);
160
+			$spipname = preg_replace('/^'.$cookie_prefix.'_/', 'spip_', $name);
161 161
 			$_COOKIE[$spipname] = $value;
162 162
 			$GLOBALS[$spipname] = $value;
163 163
 		}
Please login to merge, or discard this patch.
ecrire/action/converser.php 1 patch
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Langue
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/cookie');
@@ -30,21 +30,21 @@  discard block
 block discarded – undo
30 30
  * @return void
31 31
  */
32 32
 function action_converser_dist() {
33
-	$update_session = false;
34
-	if (_request('arg') and spip_connect()) {
35
-		$securiser_action = charger_fonction('securiser_action', 'inc');
36
-		$securiser_action();
37
-		$update_session = true;
38
-	}
33
+    $update_session = false;
34
+    if (_request('arg') and spip_connect()) {
35
+        $securiser_action = charger_fonction('securiser_action', 'inc');
36
+        $securiser_action();
37
+        $update_session = true;
38
+    }
39 39
 
40
-	$lang = action_converser_changer_langue($update_session);
41
-	$redirect = rawurldecode(_request('redirect'));
40
+    $lang = action_converser_changer_langue($update_session);
41
+    $redirect = rawurldecode(_request('redirect'));
42 42
 
43
-	if (!$redirect) {
44
-		$redirect = _DIR_RESTREINT_ABS;
45
-	}
46
-	$redirect = parametre_url($redirect, 'lang', $lang, '&');
47
-	redirige_par_entete($redirect, true);
43
+    if (!$redirect) {
44
+        $redirect = _DIR_RESTREINT_ABS;
45
+    }
46
+    $redirect = parametre_url($redirect, 'lang', $lang, '&');
47
+    redirige_par_entete($redirect, true);
48 48
 }
49 49
 
50 50
 /**
@@ -56,23 +56,23 @@  discard block
 block discarded – undo
56 56
  * @return string
57 57
  */
58 58
 function action_converser_changer_langue($update_session) {
59
-	if ($lang = _request('var_lang')) {
60
-		action_converser_post($lang);
61
-	} elseif ($lang = _request('var_lang_ecrire')) {
62
-		if ($update_session) {
63
-			sql_updateq("spip_auteurs", array("lang" => $lang), "id_auteur = " . $GLOBALS['visiteur_session']['id_auteur']);
64
-			$GLOBALS['visiteur_session']['lang'] = $lang;
65
-			$session = charger_fonction('session', 'inc');
66
-			if ($spip_session = $session($GLOBALS['visiteur_session'])) {
67
-				spip_setcookie('spip_session', $spip_session, [
68
-					'expires' => time() + 3600 * 24 * 14
69
-				]);
70
-			}
71
-		}
72
-		action_converser_post($lang, 'spip_lang_ecrire');
73
-	}
59
+    if ($lang = _request('var_lang')) {
60
+        action_converser_post($lang);
61
+    } elseif ($lang = _request('var_lang_ecrire')) {
62
+        if ($update_session) {
63
+            sql_updateq("spip_auteurs", array("lang" => $lang), "id_auteur = " . $GLOBALS['visiteur_session']['id_auteur']);
64
+            $GLOBALS['visiteur_session']['lang'] = $lang;
65
+            $session = charger_fonction('session', 'inc');
66
+            if ($spip_session = $session($GLOBALS['visiteur_session'])) {
67
+                spip_setcookie('spip_session', $spip_session, [
68
+                    'expires' => time() + 3600 * 24 * 14
69
+                ]);
70
+            }
71
+        }
72
+        action_converser_post($lang, 'spip_lang_ecrire');
73
+    }
74 74
 
75
-	return $lang;
75
+    return $lang;
76 76
 }
77 77
 
78 78
 /**
@@ -83,17 +83,17 @@  discard block
 block discarded – undo
83 83
  * @return void
84 84
  */
85 85
 function action_converser_post($lang, $ecrire = false) {
86
-	if ($lang) {
87
-		include_spip('inc/lang');
88
-		if (changer_langue($lang)) {
89
-			spip_setcookie('spip_lang', $_COOKIE['spip_lang'] = $lang, [
90
-				'expires' => time() + 365 * 24 * 3600
91
-			]);
92
-			if ($ecrire) {
93
-				spip_setcookie('spip_lang_ecrire', $_COOKIE['spip_lang_ecrire'] = $lang, [
94
-					'expires' => time() + 365 * 24 * 3600
95
-				]);
96
-			}
97
-		}
98
-	}
86
+    if ($lang) {
87
+        include_spip('inc/lang');
88
+        if (changer_langue($lang)) {
89
+            spip_setcookie('spip_lang', $_COOKIE['spip_lang'] = $lang, [
90
+                'expires' => time() + 365 * 24 * 3600
91
+            ]);
92
+            if ($ecrire) {
93
+                spip_setcookie('spip_lang_ecrire', $_COOKIE['spip_lang_ecrire'] = $lang, [
94
+                    'expires' => time() + 365 * 24 * 3600
95
+                ]);
96
+            }
97
+        }
98
+    }
99 99
 }
Please login to merge, or discard this patch.
ecrire/action/cookie.php 1 patch
Indentation   +78 added lines, -78 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('inc/actions');
@@ -33,88 +33,88 @@  discard block
 block discarded – undo
33 33
  * @return void
34 34
  */
35 35
 function action_cookie_dist($set_cookie_admin = null, $change_session = null) {
36
-	$redirect_echec = $redirect = null;
37
-	$test_echec_cookie = null;
38
-	$url = "";
39
-	if (is_null($set_cookie_admin)) {
40
-		$set_cookie_admin = _request('cookie_admin');
41
-		$change_session = _request('change_session');
42
-		$test_echec_cookie = _request('test_echec_cookie');
36
+    $redirect_echec = $redirect = null;
37
+    $test_echec_cookie = null;
38
+    $url = "";
39
+    if (is_null($set_cookie_admin)) {
40
+        $set_cookie_admin = _request('cookie_admin');
41
+        $change_session = _request('change_session');
42
+        $test_echec_cookie = _request('test_echec_cookie');
43 43
 
44
-		// La cible de notre operation de connexion
45
-		$url = securiser_redirect_action(_request('url'));
46
-		$redirect = $url ? $url : generer_url_ecrire('accueil');
47
-		$redirect_echec = _request('url_echec');
48
-		if (!isset($redirect_echec)) {
49
-			if (strpos($redirect, _DIR_RESTREINT_ABS) !== false) {
50
-				$redirect_echec = generer_url_public('login', '', true);
51
-			} else {
52
-				$redirect_echec = $redirect;
53
-			}
54
-		}
55
-	}
44
+        // La cible de notre operation de connexion
45
+        $url = securiser_redirect_action(_request('url'));
46
+        $redirect = $url ? $url : generer_url_ecrire('accueil');
47
+        $redirect_echec = _request('url_echec');
48
+        if (!isset($redirect_echec)) {
49
+            if (strpos($redirect, _DIR_RESTREINT_ABS) !== false) {
50
+                $redirect_echec = generer_url_public('login', '', true);
51
+            } else {
52
+                $redirect_echec = $redirect;
53
+            }
54
+        }
55
+    }
56 56
 
57 57
 
58
-	// rejoue le cookie pour renouveler spip_session
59
-	if ($change_session == 'oui') {
60
-		$session = charger_fonction('session', 'inc');
61
-		$session(true);
62
-		spip_log("statut 204 pour " . $_SERVER['REQUEST_URI']);
63
-		http_status(204); // No Content
64
-		return;
65
-	}
58
+    // rejoue le cookie pour renouveler spip_session
59
+    if ($change_session == 'oui') {
60
+        $session = charger_fonction('session', 'inc');
61
+        $session(true);
62
+        spip_log("statut 204 pour " . $_SERVER['REQUEST_URI']);
63
+        http_status(204); // No Content
64
+        return;
65
+    }
66 66
 
67
-	// tentative de connexion en auth_http
68
-	if (_request('essai_auth_http') and !$GLOBALS['ignore_auth_http']) {
69
-		include_spip('inc/auth');
70
-		if (@$_SERVER['PHP_AUTH_USER']
71
-			and @$_SERVER['PHP_AUTH_PW']
72
-			and $auteur = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])
73
-		) {
74
-			auth_loger($auteur);
75
-			redirige_par_entete(parametre_url($redirect, 't', time(), '&'));
76
-		} else {
77
-			ask_php_auth(_T('info_connexion_refusee'),
78
-				_T('login_login_pass_incorrect'),
79
-				_T('login_retour_site'),
80
-				"url=" . rawurlencode($redirect),
81
-				_T('login_nouvelle_tentative'),
82
-				(strpos($url, _DIR_RESTREINT_ABS) !== false));
83
-		}
84
-	} else {
67
+    // tentative de connexion en auth_http
68
+    if (_request('essai_auth_http') and !$GLOBALS['ignore_auth_http']) {
69
+        include_spip('inc/auth');
70
+        if (@$_SERVER['PHP_AUTH_USER']
71
+            and @$_SERVER['PHP_AUTH_PW']
72
+            and $auteur = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])
73
+        ) {
74
+            auth_loger($auteur);
75
+            redirige_par_entete(parametre_url($redirect, 't', time(), '&'));
76
+        } else {
77
+            ask_php_auth(_T('info_connexion_refusee'),
78
+                _T('login_login_pass_incorrect'),
79
+                _T('login_retour_site'),
80
+                "url=" . rawurlencode($redirect),
81
+                _T('login_nouvelle_tentative'),
82
+                (strpos($url, _DIR_RESTREINT_ABS) !== false));
83
+        }
84
+    } else {
85 85
 
86
-		// en cas de login sur bonjour=oui, on tente de poser un cookie
87
-		// puis de passer au login qui diagnostiquera l'echec de cookie
88
-		// le cas echeant.
89
-		if ($test_echec_cookie == 'oui') {
90
-			spip_setcookie('spip_session', 'test_echec_cookie');
91
-			if ($redirect) {
92
-				$redirect = parametre_url(parametre_url($redirect_echec, 'var_echec_cookie', 'oui', '&'), 'url',
93
-					rawurlencode($redirect), '&');
94
-			}
95
-		} else {
86
+        // en cas de login sur bonjour=oui, on tente de poser un cookie
87
+        // puis de passer au login qui diagnostiquera l'echec de cookie
88
+        // le cas echeant.
89
+        if ($test_echec_cookie == 'oui') {
90
+            spip_setcookie('spip_session', 'test_echec_cookie');
91
+            if ($redirect) {
92
+                $redirect = parametre_url(parametre_url($redirect_echec, 'var_echec_cookie', 'oui', '&'), 'url',
93
+                    rawurlencode($redirect), '&');
94
+            }
95
+        } else {
96 96
 
97
-			$cook = isset($_COOKIE['spip_admin']) ? $_COOKIE['spip_admin'] : '';
98
-			// Suppression cookie d'admin ?
99
-			if ($set_cookie_admin == "non") {
100
-				if ($cook) {
101
-					spip_setcookie('spip_admin', $cook, [
102
-						'expires' => time() - 3600 * 24
103
-					]);
104
-				}
105
-			} // Ajout de cookie d'admin
106
-			else {
107
-				if ($set_cookie_admin and _DUREE_COOKIE_ADMIN) {
108
-					spip_setcookie('spip_admin', $set_cookie_admin, [
109
-						'expires' => time() + max(_DUREE_COOKIE_ADMIN, 2 * _RENOUVELLE_ALEA)
110
-					]);
111
-				}
112
-			}
113
-		}
114
-	}
97
+            $cook = isset($_COOKIE['spip_admin']) ? $_COOKIE['spip_admin'] : '';
98
+            // Suppression cookie d'admin ?
99
+            if ($set_cookie_admin == "non") {
100
+                if ($cook) {
101
+                    spip_setcookie('spip_admin', $cook, [
102
+                        'expires' => time() - 3600 * 24
103
+                    ]);
104
+                }
105
+            } // Ajout de cookie d'admin
106
+            else {
107
+                if ($set_cookie_admin and _DUREE_COOKIE_ADMIN) {
108
+                    spip_setcookie('spip_admin', $set_cookie_admin, [
109
+                        'expires' => time() + max(_DUREE_COOKIE_ADMIN, 2 * _RENOUVELLE_ALEA)
110
+                    ]);
111
+                }
112
+            }
113
+        }
114
+    }
115 115
 
116
-	// Redirection finale
117
-	if ($redirect) {
118
-		redirige_par_entete($redirect, true);
119
-	}
116
+    // Redirection finale
117
+    if ($redirect) {
118
+        redirige_par_entete($redirect, true);
119
+    }
120 120
 }
Please login to merge, or discard this patch.
ecrire/action/logout.php 1 patch
Indentation   +84 added lines, -84 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('inc/cookie');
@@ -34,70 +34,70 @@  discard block
 block discarded – undo
34 34
  *
35 35
  */
36 36
 function action_logout_dist() {
37
-	$logout = _request('logout');
38
-	$url = securiser_redirect_action(_request('url'));
39
-	// cas particulier, logout dans l'espace public
40
-	if ($logout == 'public' and !$url) {
41
-		$url = url_de_base();
42
-	}
43
-
44
-	// seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee)
45
-	if (isset($GLOBALS['visiteur_session']['id_auteur'])
46
-		and is_numeric($GLOBALS['visiteur_session']['id_auteur'])
47
-		// des sessions anonymes avec id_auteur=0 existent, mais elle n'ont pas de statut : double check
48
-		and isset($GLOBALS['visiteur_session']['statut'])
49
-	) {
50
-
51
-		// il faut un jeton pour fermer la session (eviter les CSRF)
52
-		if (!$jeton = _request('jeton')
53
-			or !verifier_jeton_logout($jeton, $GLOBALS['visiteur_session'])
54
-		) {
55
-			$jeton = generer_jeton_logout($GLOBALS['visiteur_session']);
56
-			$action = generer_url_action("logout", "jeton=$jeton");
57
-			$action = parametre_url($action, 'logout', _request('logout'));
58
-			$action = parametre_url($action, 'url', _request('url'));
59
-			include_spip("inc/minipres");
60
-			include_spip("inc/filtres");
61
-			$texte = bouton_action(_T('spip:icone_deconnecter'), $action);
62
-			$texte = "<div class='boutons'>$texte</div>";
63
-			$texte .= '<script type="text/javascript">document.write("<style>body{visibility:hidden;}</style>");window.document.forms[0].submit();</script>';
64
-			$res = minipres(_T('spip:icone_deconnecter'), $texte, '', true);
65
-			echo $res;
66
-
67
-			return;
68
-		}
69
-
70
-		include_spip('inc/auth');
71
-		auth_trace($GLOBALS['visiteur_session'], '0000-00-00 00:00:00');
72
-		// le logout explicite vaut destruction de toutes les sessions
73
-		if (isset($_COOKIE['spip_session'])) {
74
-			$session = charger_fonction('session', 'inc');
75
-			$session($GLOBALS['visiteur_session']['id_auteur']);
76
-			spip_setcookie('spip_session', $_COOKIE['spip_session'], [
77
-				'expires' => time() - 3600
78
-			]);
79
-		}
80
-		// si authentification http, et que la personne est loge,
81
-		// pour se deconnecter, il faut proposer un nouveau formulaire de connexion http
82
-		if (isset($_SERVER['PHP_AUTH_USER'])
83
-			and !$GLOBALS['ignore_auth_http']
84
-			and $GLOBALS['auth_can_disconnect']
85
-		) {
86
-			ask_php_auth(_T('login_deconnexion_ok'),
87
-				_T('login_verifiez_navigateur'),
88
-				_T('login_retour_public'),
89
-				"redirect=" . _DIR_RESTREINT_ABS,
90
-				_T('login_test_navigateur'),
91
-				true);
92
-
93
-		}
94
-	}
95
-
96
-	// Rediriger en contrant le cache navigateur (Safari3)
97
-	include_spip('inc/headers');
98
-	redirige_par_entete($url
99
-		? parametre_url($url, 'var_hasard', uniqid(rand()), '&')
100
-		: generer_url_public('login'));
37
+    $logout = _request('logout');
38
+    $url = securiser_redirect_action(_request('url'));
39
+    // cas particulier, logout dans l'espace public
40
+    if ($logout == 'public' and !$url) {
41
+        $url = url_de_base();
42
+    }
43
+
44
+    // seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee)
45
+    if (isset($GLOBALS['visiteur_session']['id_auteur'])
46
+        and is_numeric($GLOBALS['visiteur_session']['id_auteur'])
47
+        // des sessions anonymes avec id_auteur=0 existent, mais elle n'ont pas de statut : double check
48
+        and isset($GLOBALS['visiteur_session']['statut'])
49
+    ) {
50
+
51
+        // il faut un jeton pour fermer la session (eviter les CSRF)
52
+        if (!$jeton = _request('jeton')
53
+            or !verifier_jeton_logout($jeton, $GLOBALS['visiteur_session'])
54
+        ) {
55
+            $jeton = generer_jeton_logout($GLOBALS['visiteur_session']);
56
+            $action = generer_url_action("logout", "jeton=$jeton");
57
+            $action = parametre_url($action, 'logout', _request('logout'));
58
+            $action = parametre_url($action, 'url', _request('url'));
59
+            include_spip("inc/minipres");
60
+            include_spip("inc/filtres");
61
+            $texte = bouton_action(_T('spip:icone_deconnecter'), $action);
62
+            $texte = "<div class='boutons'>$texte</div>";
63
+            $texte .= '<script type="text/javascript">document.write("<style>body{visibility:hidden;}</style>");window.document.forms[0].submit();</script>';
64
+            $res = minipres(_T('spip:icone_deconnecter'), $texte, '', true);
65
+            echo $res;
66
+
67
+            return;
68
+        }
69
+
70
+        include_spip('inc/auth');
71
+        auth_trace($GLOBALS['visiteur_session'], '0000-00-00 00:00:00');
72
+        // le logout explicite vaut destruction de toutes les sessions
73
+        if (isset($_COOKIE['spip_session'])) {
74
+            $session = charger_fonction('session', 'inc');
75
+            $session($GLOBALS['visiteur_session']['id_auteur']);
76
+            spip_setcookie('spip_session', $_COOKIE['spip_session'], [
77
+                'expires' => time() - 3600
78
+            ]);
79
+        }
80
+        // si authentification http, et que la personne est loge,
81
+        // pour se deconnecter, il faut proposer un nouveau formulaire de connexion http
82
+        if (isset($_SERVER['PHP_AUTH_USER'])
83
+            and !$GLOBALS['ignore_auth_http']
84
+            and $GLOBALS['auth_can_disconnect']
85
+        ) {
86
+            ask_php_auth(_T('login_deconnexion_ok'),
87
+                _T('login_verifiez_navigateur'),
88
+                _T('login_retour_public'),
89
+                "redirect=" . _DIR_RESTREINT_ABS,
90
+                _T('login_test_navigateur'),
91
+                true);
92
+
93
+        }
94
+    }
95
+
96
+    // Rediriger en contrant le cache navigateur (Safari3)
97
+    include_spip('inc/headers');
98
+    redirige_par_entete($url
99
+        ? parametre_url($url, 'var_hasard', uniqid(rand()), '&')
100
+        : generer_url_public('login'));
101 101
 }
102 102
 
103 103
 /**
@@ -108,18 +108,18 @@  discard block
 block discarded – undo
108 108
  * @return string
109 109
  */
110 110
 function generer_jeton_logout($session, $alea = null) {
111
-	if (is_null($alea)) {
112
-		include_spip('inc/acces');
113
-		$alea = charger_aleas();
114
-	}
115
-
116
-	$jeton = md5($session['date_session']
117
-		. $session['id_auteur']
118
-		. $session['statut']
119
-		. $alea
120
-	);
121
-
122
-	return $jeton;
111
+    if (is_null($alea)) {
112
+        include_spip('inc/acces');
113
+        $alea = charger_aleas();
114
+    }
115
+
116
+    $jeton = md5($session['date_session']
117
+        . $session['id_auteur']
118
+        . $session['statut']
119
+        . $alea
120
+    );
121
+
122
+    return $jeton;
123 123
 }
124 124
 
125 125
 /**
@@ -133,13 +133,13 @@  discard block
 block discarded – undo
133 133
  * @return bool
134 134
  */
135 135
 function verifier_jeton_logout($jeton, $session) {
136
-	if (generer_jeton_logout($session) === $jeton) {
137
-		return true;
138
-	}
136
+    if (generer_jeton_logout($session) === $jeton) {
137
+        return true;
138
+    }
139 139
 
140
-	if (generer_jeton_logout($session, $GLOBALS['meta']['alea_ephemere_ancien']) === $jeton) {
141
-		return true;
142
-	}
140
+    if (generer_jeton_logout($session, $GLOBALS['meta']['alea_ephemere_ancien']) === $jeton) {
141
+        return true;
142
+    }
143 143
 
144
-	return false;
144
+    return false;
145 145
 }
Please login to merge, or discard this patch.