Valider eb8c3179 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Ticket #3923 : Notices PHP en moins et introduction d’une fonction charger_aleas().

Effectivement, l'alea_ephemere n'est pas stocké dans le fichier de cache des métas,
bien qu'il existe en base, et n'est donc pas forcément dans la globale 'meta'.
À différents endroits on le récupérait en base au besoin. on se fait une fonction
qui charge au besoin 'alea_ephemere' et 'alea_ephemere_ancien', si l'accès SQL est disponible.
On utilise cette fonction aux endroits qui le nécessitent. Cette fonction retourne
l'alea_ephemere courant par défaut.
parent 000fe411
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+5 −10
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -107,11 +107,8 @@ function action_logout_dist() {
 */
function generer_jeton_logout($session, $alea = null) {
	if (is_null($alea)) {
		if (!isset($GLOBALS['meta']['alea_ephemere'])) {
			include_spip('base/abstract_sql');
			$GLOBALS['meta']['alea_ephemere'] = sql_getfetsel('valeur', 'spip_meta', "nom='alea_ephemere'");
		}
		$alea = $GLOBALS['meta']['alea_ephemere'];
		include_spip('inc/acces');
		$alea = charger_aleas();
	}

	$jeton = md5($session['date_session']
@@ -125,7 +122,8 @@ function generer_jeton_logout($session, $alea = null) {

/**
 * Verifier que le jeton de logout est bon
 * il faut verifier avec alea_ephemere_ancien si pas bon avec alea_ephemere
 *
 * Il faut verifier avec alea_ephemere_ancien si pas bon avec alea_ephemere
 * pour gerer le cas de la rotation d'alea
 *
 * @param string $jeton
@@ -136,10 +134,7 @@ function verifier_jeton_logout($jeton, $session) {
	if (generer_jeton_logout($session) === $jeton) {
		return true;
	}
	if (!isset($GLOBALS['meta']['alea_ephemere_ancien'])) {
		include_spip('base/abstract_sql');
		$GLOBALS['meta']['alea_ephemere_ancien'] = sql_getfetsel('valeur', 'spip_meta', "nom='alea_ephemere_ancien'");
	}

	if (generer_jeton_logout($session, $GLOBALS['meta']['alea_ephemere_ancien']) === $jeton) {
		return true;
	}
+4 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -121,13 +121,13 @@ function info_maj($dir, $file, $version) {
	$p = substr("0123456789", intval($maj));
	$p = ',/' . $file . '\D+([' . $p . ']+)\D+(\d+)(\D+(\d+))?.*?[.]zip",i';
	preg_match_all($p, $page, $m, PREG_SET_ORDER);
	$m = array_pad($m, 5, 0);
	$page = $page_majeure = '';

	// branche en cours d'utilisation
	$branche = implode('.', array_slice(explode('.', $version, 3), 0, 2));

	foreach ($m as $v) {
		$v = array_pad($v, 5, 0);
		list(, $maj2, $min2, , $rev2) = $v;
		$branche_maj = $maj2 . '.' . $min2;
		$version_maj = $maj2 . '.' . $min2 . '.' . $rev2;
@@ -174,7 +174,9 @@ function info_maj($dir, $file, $version) {
 *     Contenu du fichier de cache de l'info de maj de SPIP.
 */
function info_maj_cache($nom, $dir, $page = '') {
	$re = '<archives id="a' . $GLOBALS['meta']["alea_ephemere"] . '">';
	include_spip('inc/acces');
	$alea_ephemere = charger_aleas();
	$re = '<archives id="a' . $alea_ephemere . '">';
	if (preg_match("/$re/", $page)) {
		return $page;
	}
+34 −4
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -98,13 +98,43 @@ function creer_uniqid() {
}

/**
 * Renouveller l'alea (utilisé pour sécuriser les scripts du répertoire `action/`)
 **/
function renouvelle_alea() {
 * Charge les aléas ehpémères s'il ne sont pas encore dans la globale
 *
 * Si les métas 'alea_ephemere' et 'alea_ephemere_ancien' se sont pas encore chargées
 * en méta (car elles ne sont pas stockées, pour sécurité, dans le fichier cache des métas),
 * alors on les récupère en base. Et on les ajoute à nos métas globales.
 *
 * @see touch_meta()
 * @return string Retourne l'alea éphemère actuel au passage
 */
function charger_aleas() {
	if (!isset($GLOBALS['meta']['alea_ephemere'])) {
		include_spip('base/abstract_sql');
		$GLOBALS['meta']['alea_ephemere'] = sql_getfetsel('valeur', 'spip_meta', "nom='alea_ephemere'");
		$aleas = sql_allfetsel(
			array('nom', 'valeur'),
			'spip_meta',
			sql_in("nom", array('alea_ephemere', 'alea_ephemere_ancien')),
			'', '', '', '', '',
			'continue'
		);
		if ($aleas) {
			foreach ($aleas as $a) {
				$GLOBALS['meta'][$a['nom']] = $a['valeur'];
			}
			return $GLOBALS['meta']['alea_ephemere'];
		} else {
			spip_log("aleas indisponibles", "session");
			return "";
		}
	}
	return $GLOBALS['meta']['alea_ephemere'];
}

/**
 * Renouveller l'alea (utilisé pour sécuriser les scripts du répertoire `action/`)
 **/
function renouvelle_alea() {
	charger_aleas();
	ecrire_meta('alea_ephemere_ancien', @$GLOBALS['meta']['alea_ephemere'], 'non');
	$GLOBALS['meta']['alea_ephemere'] = md5(creer_uniqid());
	ecrire_meta('alea_ephemere', $GLOBALS['meta']['alea_ephemere'], 'non');
+3 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -185,9 +185,9 @@ function _action_auteur($action, $id_auteur, $pass, $alea) {
	static $sha = array();
	if (!isset($sha[$id_auteur . $pass . $alea])) {
		if (!isset($GLOBALS['meta'][$alea]) and _request('exec') !== 'install') {
			include_spip('base/abstract_sql');
			$GLOBALS['meta'][$alea] = sql_getfetsel('valeur', 'spip_meta', "nom=" . sql_quote($alea));
			if (!($GLOBALS['meta'][$alea])) {
			include_spip('inc/acces');
			charger_aleas();
			if (empty($GLOBALS['meta'][$alea])) {
				include_spip('inc/minipres');
				echo minipres();
				spip_log("$alea indisponible");
+3 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -573,13 +573,10 @@ function ecrire_fichier_session($fichier, $auteur) {
 */
function fichier_session($alea, $tantpis = false) {

	if (!isset($GLOBALS['meta'][$alea])) {
		include_spip('base/abstract_sql');
		$GLOBALS['meta'][$alea] = sql_getfetsel('valeur', 'spip_meta', "nom=" . sql_quote($alea), '', '', '', '', '',
			'continue');
	}
	include_spip('inc/acces');
	charger_aleas();

	if (!$GLOBALS['meta'][$alea]) {
	if (empty($GLOBALS['meta'][$alea])) {
		if (!$tantpis) {
			spip_log("fichier session ($tantpis): $alea indisponible", "session");
			include_spip('inc/minipres');