©
. Document créé le 9 octobre 2010 , mis à jour le 9 octobre 2010.Savoir où l'on veut aller, c'est très bien. Mais il faut encore montrer qu'on y va. Emile Zola
Accueil du site > Astuces > SPIP > Accès webmestre incomplet
Après une mise à jour du site en version 2.1.2, certains remarqueront que l’installateur du site, le premier webmestre, qui a un ID_AUTEUR égal à 1, ne retrouve pas certains contrôles qui lui étaient jusque là accessibles.
Un nouveau champ dans la table spip_auteurs a vu le jour avec cette version de SPIP. Et pour une raison obscure, ce champ, qui devrait contenir la valeur ’oui’ pour ce premier webmestre, contient sa valeur par défaut d’installation : ’non’, privant par la même l’accès privilégé à certains modules faisant appel à la fonction autoriser(), telles que par exemple la restauration de la base, les raccourcis de maintenance de SPIP-Listes, etc.
Pour corriger, quelques secondes via phpMyAdmin ou un UPDATE SQL fera l’affaire.
Pour les réfractaires de la ligne de commande ou de l’administration SQL, voici un petit squelette à lancer sur votre site. Il ne fait qu’afficher les valeurs actuelles de l’auteur connecté, et pour l’auteur #1, le premier webmaster, un formulaire lui permet de modifier la valeur du champ webmestre.
Ne pas oublier de supprimer ce squelette de votre site après utilisation.
Attention : comme d’habitude, ce morceau de code sous licence GPL3 est distribué car potentiellement utile, mais SANS AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de commercialisation ou d’adaptation dans un but spécifique. Vous êtes seul responsable de ce que vous installez sur votre machine.
#HTTP_HEADER{"Cache-Control: no-store, no-cache, must-revalidate"}
#HTTP_HEADER{Pragma: no-cache}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR">
[<!--(#REM)
CP: www.quesaco.org
@license: GPL3
@version: Sat Oct 9 17:40:57 CEST 2010
Page à appeler dans le style
http://<server_addr>/?page=verifier_webmestre
-->]
<head>
<title>Vérification webmaster</title>
<INCLURE{fond=inc-head}>
<style type="text/css">
<!--
body {padding-top:1em}
h2 {border-bottom: 1px solid grey;
margin:0.5em auto 0.75em; width:100ex}
ul#session {text-align:left; margin:0 auto; width:120ex}
li {color:grey}
span.name {color:black; font-weight:700}
span.value {color:black}
#modif-webmestre {margin:1em auto; width:60ex}
div.submit {text-align:right}
-->
</style>
</head>
<body id="page_verifier_webmestre">
[(#SESSION{statut}|=={0minirezo}|non)
Svp, <a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]"
rel="nofollow" class='login_modal'>
identifiez-vous</a>
pour accéder à cette page.
</body></html>
<?php exit(-1); ?>
]
<?php
$id_auteur = '[(#SESSION{id_auteur})]';
$curr = '[(#SESSION{webmestre})]';
if(
($id_auteur == 1)
&& ($set = _request('webmestre'))
/* && ($curr != $set) */
)
{
$set = (($set == 'oui') ? 'oui' : 'non');
sql_update(
array('spip_auteurs')
, array('webmestre' =>sql_quote($set))
, 'id_auteur=1 LIMIT 1'
);
}
// requette SQL pour ne pas utiliser le cache interne
$webmestre = sql_getfetsel(
'webmestre'
, array('spip_auteurs')
, 'id_auteur='.sql_quote($id_auteur).' LIMIT 1');
?>
<h1>Information sur le compte <span class="value">#SESSION{nom}</span></h1>
<p><span style="font-weight:700">SPIP #EVAL{$GLOBALS['spip_version_branche']}
[ [<span style="color:grey">
(#EVAL{trim(version_svn_courante(_DIR_RACINE))})</span>]]</span>
code: #EVAL{$GLOBALS['spip_version_code']}
base: #EVAL{$GLOBALS['spip_version_base']}
@ #EVAL{date(DATE_RFC822)}
</p>
<h2>Informations du site</h2>
<ul id="session">
<li><span class="name">Nom du site</span> :
<span class="value">#NOM_SITE</span></li>
<li><span class="name">URL du site</span> :
<span class="value">#URL_SITE_SPIP</span></li>
<li><span class="name">Nom du site</span> :
<span class="value">#URL_SITE</span></li>
</ul>
<h2>Informations de session</h2>
[<!--(#REM)
Les données de la balise SESSION sont en cache.
Utiliser plutôt une boucle pour des données à jour :
-->]
<BOUCLE_a(AUTEURS){id_auteur=#SESSION{id_auteur}}{0,1}>
<ul id="session">
<li><span class="name">id_auteur</span> :
numéro interne unique de l’auteur:
<span class="value">#ID_AUTEUR</span></li>
<li><span class="name">nom</span> :
nom de signature de l’auteur:
<span class="value">#NOM</span></li>
<li><span class="name">email</span> :
l’adresse mail de l’auteur:
<span class="value">#EMAIL</span></li>
<li><span class="name">nom_site</span> :
nom/titre du site internet de l’auteur:
<span class="value">#NOM_SITE</span></li>
<li><span class="name">url_site</span> :
adresse http du site internet de l’auteur:
<span class="value">#URL_SITE</span></li>
<li><span class="name">login</span> :
identitifiant de connexion:
<span class="value">#LOGIN</span></li>
<li><span class="name">statut</span> :
0minirezo (administrateur ou administrateur restreint)
, 1comite (rédacteur), 6forum (visiteur):
<span class="value">#STATUT</span></li>
<li><span class="name">maj</span> :
date et heure de la dernière modification
des données de l’auteur:
<span class="value">#MAJ</span></li>
<li><span class="name">webmestre</span> :
<span class="value"><?php echo($webmestre); ?></span></li>
</ul>
<p><a href="http://www.spip.net/fr_article3979.html">
Cliquez sur ce lien pour en savoir plus sur
la balise SESSION ou la description des champs.</a></p>
[<!--(#REM)
Formulaire de modification
activé pour installateur
-->]
[(#ID_AUTEUR|=={1}|?{' '})
<h2>Modification webmestre pour auteur ID ##ID_AUTEUR</h2>
<form action="" id="modif-webmestre" method="post">
<fieldset>
<legend>Définir une valeur pour le champ webmestre : </legend>
<label>
<input type="radio" name="webmestre" value="oui"
<?php echo($webmestre=='oui'?'checked="checked"':''); ?> />
oui
</label>
<label>
<input type="radio" name="webmestre" value="non"
<?php echo($webmestre!='oui'?'checked="checked"':''); ?> />
non
</label>
</fieldset>
<div class="submit">
<input class="submit" type="submit" name="valider"
value="<:bouton_valider:>" />
</div>
</form>
]
</BOUCLE_a>
</B_a>
Pas d'auteur en ID #1 ?<br />
<//B_a>
</body>
</html>
Le fichier à télécharger si problème de copier/coller :
Vu que la durée de vie de ce squelette est probablement de l’ordre de la semaine, s’il n’est pas déjà obsolète, sa mise en plugin ne me semble pas indispensable.
Je le laisse ici pour exemple d’utilisation de requêtes PHP, d’un squelette temporaire.
Les forums sont fermés.