Bonjour,
J'ai repéré ce que je crois être un bug (v 1.6). Je voulais faire un site SPIP dont la partie publique est protégé par un .htaccess/.htpasswd. Problème, SPIP ne me donne plus accès à la partie privée : j'ai droit à une page m'indiquant « Connexion refusée » avec en dessous le lien « [réessayer] ».
En furetant dans les fichier, j'ai réperé le bout de code qui aboutit à cet affichage dans inc_auth.php3 :
// Peut-etre sommes-nous en auth http?
if ($PHP_AUTH_USER && $PHP_AUTH_PW) {
if (verifier_php_auth()) {
$auth_login = $PHP_AUTH_USER;
$auth_pass_ok = true;
$auth_can_disconnect = true;
}
else // normalement on n'arrive pas la sauf changement de mot de passe dans la base...
if ($PHP_AUTH_USER != 'root') // ... mais quelques serveurs forcent cette valeur
{
$auth_login = '';
echo "<p><b>"._T('info_connexion_refusee')."</b></p>";
echo "[<a href='../spip_cookie.php3?essai_auth_http=oui'>"._T('lien_reessayer')."</a>]";
exit;
}
$PHP_AUTH_PW = '';
$_SERVER['PHP_AUTH_PW'] = '';
$HTTP_SERVER_VARS['PHP_AUTH_PW'] = '';
}
Le premier if ne devrait-il pas s'écrire plutôt :
if (lire_meta('creer_htpasswd ') == 'oui' && $PHP_AUTH_USER && $PHP_AUTH_PW) {
ou quelque chose du genre ?
Cordialement