[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / ecrire / inc / cookie.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
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 //
16 // Appliquer le prefixe cookie
17 //
18 // http://doc.spip.org/@spip_setcookie
19 function spip_setcookie ($name='', $value='', $expire=0, $path='AUTO', $domain='', $secure='') {
20 // liste des cookies en httponly (a passer en define si besoin)
21 $httponly = in_array($name, explode(' ', 'spip_session'));
22
23 $name = preg_replace ('/^spip_/', $GLOBALS['cookie_prefix'].'_', $name);
24 if ($path == 'AUTO')
25 $path = defined('_COOKIE_PATH')?_COOKIE_PATH:preg_replace(',^\w+://[^/]*,', '', url_de_base());
26 if (!$domain AND defined('_COOKIE_DOMAIN'))
27 $domain = _COOKIE_DOMAIN;
28
29 #spip_log("cookie('$name', '$value', '$expire', '$path', '$domain', '$secure', '$httponly'");
30
31 $a =
32 ($httponly AND strnatcmp(phpversion(),'5.2.0') >= 0) ?
33 @setcookie ($name, $value, $expire, $path, $domain, $secure, $httponly)
34 : ($secure ?
35 @setcookie ($name, $value, $expire, $path, $domain, $secure)
36 : ($domain ?
37 @setcookie ($name, $value, $expire, $path, $domain)
38 : ($path ?
39 @setcookie ($name, $value, $expire, $path)
40 : ($expire ?
41 @setcookie ($name, $value, $expire)
42 :
43 @setcookie ($name, $value)
44 ))));
45
46 spip_cookie_envoye(true);
47
48 return $a;
49 }
50
51 function spip_cookie_envoye($set = '') {
52 static $envoye = false;
53 if($set)
54 $envoye = true;
55 return $envoye;
56 }
57
58 // http://doc.spip.org/@recuperer_cookies_spip
59 function recuperer_cookies_spip($cookie_prefix) {
60 $prefix_long = strlen($cookie_prefix);
61
62 foreach ($_COOKIE as $name => $value) {
63 if (substr($name,0,5)=='spip_' && substr($name,0,$prefix_long)!=$cookie_prefix) {
64 unset($_COOKIE[$name]);
65 unset($GLOBALS[$name]);
66 }
67 }
68 foreach ($_COOKIE as $name => $value) {
69 if (substr($name,0,$prefix_long)==$cookie_prefix) {
70 $spipname = preg_replace ('/^'.$cookie_prefix.'_/', 'spip_', $name);
71 $_COOKIE[$spipname] = $value;
72 $GLOBALS[$spipname] = $value;
73 }
74 }
75
76 }
77
78 // Idem faudrait creer exec/test_ajax, mais c'est si court.
79 // Tester si Ajax fonctionne pour ce brouteur
80 // (si on arrive la c'est que c'est bon, donc poser le cookie)
81
82 // http://doc.spip.org/@exec_test_ajax_dist
83 function exec_test_ajax_dist() {
84 switch (_request('js')) {
85 // on est appele par <noscript>
86 case -1:
87 spip_setcookie('spip_accepte_ajax', -1);
88 include_spip('inc/headers');
89 redirige_par_entete(chemin_image('puce-orange-anim.gif'));
90 break;
91
92 // ou par ajax
93 case 1:
94 default:
95 spip_setcookie('spip_accepte_ajax', 1);
96 break;
97 }
98 }
99 ?>