9d71e8b985c34c8cc1b3a9818025e8691e2905d3
[velocampus/web/www.git] / www / ecrire / action / cookie.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2011 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 include_spip('inc/actions');
16 include_spip('inc/cookie');
17
18 // http://doc.spip.org/@action_cookie_dist
19 function action_cookie_dist() {
20
21 // La cible de notre operation de connexion
22 $url = securiser_redirect_action(_request('url'));
23 $redirect = $url ? $url : generer_url_ecrire('accueil');
24 $redirect_echec = _request('url_echec');
25 if (!isset($redirect_echec)) {
26 if (strpos($redirect,_DIR_RESTREINT_ABS)!==false)
27 $redirect_echec = generer_url_public('login','',true);
28 else
29 $redirect_echec = $redirect;
30 }
31
32 // rejoue le cookie pour renouveler spip_session
33 if (_request('change_session') == 'oui') {
34 $session = charger_fonction('session', 'inc');
35 $session(true);
36 spip_log("statut 204 pour " . $_SERVER['REQUEST_URI']);
37 http_status(204); // No Content
38 return;
39 }
40
41 // tentative de connexion en auth_http
42 if (_request('essai_auth_http') AND !$GLOBALS['ignore_auth_http']) {
43 include_spip('inc/auth');
44 if (@$_SERVER['PHP_AUTH_USER']
45 AND @$_SERVER['PHP_AUTH_PW']
46 AND lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']))
47 redirige_par_entete($redirect);
48 else ask_php_auth(_T('info_connexion_refusee'),
49 _T('login_login_pass_incorrect'),
50 _T('login_retour_site'),
51 "url=".rawurlencode($redirect),
52 _T('login_nouvelle_tentative'),
53 (strpos($url,_DIR_RESTREINT_ABS)!==false));
54 }
55
56 // en cas de login sur bonjour=oui, on tente de poser un cookie
57 // puis de passer au login qui diagnostiquera l'echec de cookie
58 // le cas echeant.
59 if (_request('test_echec_cookie') == 'oui') {
60 spip_setcookie('spip_session', 'test_echec_cookie');
61 redirige_par_entete(parametre_url(parametre_url($redirect_echec,'var_echec_cookie','oui','&'),'url',rawurlencode($redirect),'&'));
62 }
63
64 $cook = isset($_COOKIE['spip_admin']) ? $_COOKIE['spip_admin'] : '';
65 // Suppression cookie d'admin ?
66 if (_request('cookie_admin') == "non") {
67 if ($cook)
68 spip_setcookie('spip_admin', $cook, time() - 3600 * 24);
69 }
70 // Ajout de cookie d'admin
71 else if (isset($set_cookie_admin)
72 OR $set_cookie_admin = _request('cookie_admin')) {
73 spip_setcookie('spip_admin', $set_cookie_admin,
74 time() + 14 * 24 * 3600);
75 }
76
77 // Redirection finale
78 redirige_par_entete($redirect, true);
79 }
80
81 ?>