Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/histoire/ecrire/action/ |
<?php /***************************************************************************\ * SPIP, Système de publication pour l'internet * * * * Copyright © avec tendresse depuis 2001 * * Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribué sous licence GNU/GPL. * \***************************************************************************/ /** * Gestion de l'action cookie * * @package SPIP\Core\Inscription */ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/actions'); include_spip('inc/cookie'); /** * Cette fonction traite les cookies posés au moment de l'authentification standard * ou vérifie que l'authentification HTTP est correcte * * @global bool ignore_auth_http * @param string|null $set_cookie_admin * @param string|null $change_session * @return void */ function action_cookie_dist($set_cookie_admin = null, $change_session = null) { $redirect_echec = $redirect = null; $test_echec_cookie = null; $url = ''; if (is_null($set_cookie_admin)) { $set_cookie_admin = _request('cookie_admin'); $change_session = _request('change_session'); $test_echec_cookie = _request('test_echec_cookie'); // La cible de notre operation de connexion $url = securiser_redirect_action(_request('url')); $redirect = $url ?: generer_url_ecrire('accueil'); $redirect_echec = _request('url_echec'); if (!isset($redirect_echec)) { if (strpos($redirect, (string) _DIR_RESTREINT_ABS) !== false) { $redirect_echec = generer_url_public('login', '', true); } else { $redirect_echec = $redirect; } } } // rejoue le cookie pour renouveler spip_session if ($change_session == 'oui') { $session = charger_fonction('session', 'inc'); $session(true); spip_log('statut 204 pour ' . $_SERVER['REQUEST_URI']); http_response_code(204); // No Content return; } // tentative de connexion en auth_http if (_request('essai_auth_http') and !$GLOBALS['ignore_auth_http']) { include_spip('inc/auth'); if ( @$_SERVER['PHP_AUTH_USER'] and @$_SERVER['PHP_AUTH_PW'] and $auteur = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) ) { auth_loger($auteur); redirige_par_entete(parametre_url($redirect, 't', time(), '&')); } else { ask_php_auth( _T('info_connexion_refusee'), _T('login_login_pass_incorrect'), _T('login_retour_site'), 'url=' . rawurlencode($redirect), _T('login_nouvelle_tentative'), (strpos($url, (string) _DIR_RESTREINT_ABS) !== false) ); } } else { // en cas de login sur bonjour=oui, on tente de poser un cookie // puis de passer au login qui diagnostiquera l'echec de cookie // le cas echeant. if ($test_echec_cookie == 'oui') { spip_setcookie('spip_session', 'test_echec_cookie', [ 'httponly' => true, ]); if ($redirect) { $redirect = parametre_url( parametre_url($redirect_echec, 'var_echec_cookie', 'oui', '&'), 'url', rawurlencode($redirect), '&' ); } } else { $cook = $_COOKIE['spip_admin'] ?? ''; // Suppression cookie d'admin ? if ($set_cookie_admin == 'non') { if ($cook) { spip_setcookie('spip_admin', $cook, [ 'expires' => time() - 3600 * 24, 'httponly' => true, ]); } } // Ajout de cookie d'admin else { if ($set_cookie_admin and _DUREE_COOKIE_ADMIN) { spip_setcookie('spip_admin', $set_cookie_admin, [ 'expires' => time() + max(_DUREE_COOKIE_ADMIN, 2 * _RENOUVELLE_ALEA), 'httponly' => true, ]); } } } } // Redirection finale if ($redirect) { redirige_par_entete($redirect, true); } }