Subversion Repositories Sites.tela-botanica.org

Compare Revisions

Ignore whitespace Rev 3 → Rev 4

/trunk/actu/formulaires/inc-login_public.php3
New file
0,0 → 1,168
<?php
 
if (!defined("_ECRIRE_INC_VERSION")) return; #securite
 
include(_FILE_CONNECT);
include_ecrire("inc_meta.php3");
include_ecrire("inc_session.php3");
include_ecrire("inc_filtres.php3");
 
global $balise_LOGIN_PUBLIC_collecte;
$balise_LOGIN_PUBLIC_collecte = array('url');
 
# retourner:
# 1. l'url collectee ci-dessus (args0) ou donnee en filtre (filtre0)
# 2. l'eventuel parametre de la balise (args1) fournie par
# calculer_balise_dynamique, en l'occurence le #LOGIN courant si l'on
# programme une <boucle(AUTEURS)>[(#LOGIN_PUBLIC{#LOGIN})]
 
function balise_LOGIN_PUBLIC_stat ($args, $filtres) {
return array($filtres[0] ? $filtres[0] : $args[0], $args[1], $args[2]);
}
 
function balise_LOGIN_PUBLIC_dyn($url, $login) {
 
if (!$url # pas d'url passee en filtr eou dans le contexte
AND !$url = _request('url') # ni d'url passee par l'utilisateur
) {
$link = new Link();
$link->delVar('var_erreur');
$link->delVar('var_login');
$url = $link->getUrl();
}
return login_explicite($login, $url);
}
 
function login_explicite($login, $cible) {
global $auteur_session;
 
$link = new Link();
$link->delVar('var_erreur');
$link->delVar('var_login');
$action = $link->getUrl();
 
if ($cible) {
$cible = ereg_replace("[?&]var_erreur=[^&]*", '', $cible);
$cible = ereg_replace("[?&]var_login=[^&]*", '', $cible);
} else {
if (ereg("[?&]url=([^&]*)", $action, $m))
$cible = urldecode($m[1]);
else
$cible = _DIR_RESTREINT ;
}
include_ecrire("inc_session.php3");
verifier_visiteur();
 
if ($auteur_session AND
($auteur_session['statut']=='0minirezo' OR $auteur_session['statut']=='1comite')) {
if (($cible != $action) && !headers_sent()
AND !$_GET['var_mode'])
redirige_par_entete($cible);
return http_href($cible, _T('login_par_ici'));
}
return login_pour_tous($login ? $login : _request('var_login'), $cible, $action);
}
 
function login_pour_tous($login, $cible, $action) {
global $ignore_auth_http, $php_module, $_SERVER, $_COOKIE;
 
// en cas d'echec de cookie, inc_auth a renvoye vers spip_cookie qui
// a tente de poser un cookie ; s'il n'est pas la, c'est echec cookie
// s'il est la, c'est probablement un bookmark sur bonjour=oui,
// et pas un echec cookie.
if (_request('var_echec_cookie'))
$echec_cookie = ($_COOKIE['spip_session'] != 'test_echec_cookie');
$auth_http = ($echec_cookie AND $php_module AND !$ignore_auth_http) ?
'spip_cookie.php3' : '';
// Attention dans le cas 'intranet' la proposition de se loger
// par auth_http peut conduire a l'echec.
if ($_SERVER['PHP_AUTH_USER'] AND $_SERVER['PHP_AUTH_PW'])
$auth_http = '';
 
// Le login est memorise dans le cookie d'admin eventuel
if (!$login) {
if (ereg("^@(.*)$", $_COOKIE['spip_admin'], $regs))
$login = $regs[1];
} else if ($login == '-1')
$login = '';
 
$erreur = '';
if ($login) {
$s = spip_query("SELECT * FROM spip_auteurs
WHERE login='" .addslashes($login) ."'");
$row = spip_fetch_array($s);
 
// Retrouver ceux qui signent de leur nom ou email
if (!$row AND !$GLOBALS['ldap_present']) {
if ($t = spip_fetch_array(
spip_query(
"SELECT * FROM spip_auteurs
WHERE (nom LIKE '" .addslashes($login) ."'
OR email LIKE '" .addslashes($login) ."')
AND login<>'' AND statut<>'5poubelle'"
))) {
$row = $t;
$login_alt = $login; # afficher ce qu'on a tape
$login = $t['login'];
}
}
 
if ((!$row AND !$GLOBALS['ldap_present']) OR
($row['statut'] == '5poubelle') OR
(($row['source'] == 'spip') AND $row['pass'] == '')) {
$erreur = _T('login_identifiant_inconnu',
array('login' => htmlspecialchars($login)));
$row = array();
$login = '';
@spip_setcookie("spip_admin", "", time() - 3600);
} else {
// on laisse le menu decider de la langue
unset($row['lang']);
}
}
if (!$row)
$row = array();
 
// afficher "erreur de mot de passe" si &var_erreur=pass
if (_request('var_erreur') == 'pass')
$erreur = _T('login_erreur_pass');
 
return array('formulaire_login', $GLOBALS['delais'],
array_merge(
array_map('texte_script', $row),
array(
'action2' => ($login ? 'spip_cookie.php3' : $action),
'erreur' => $erreur,
'action' => $action,
'url' => $cible,
'auth_http' => $auth_http,
'echec_cookie' => ($echec_cookie ? ' ' : ''),
'login' => $login,
'login_alt' => ($login_alt ? $login_alt : $login),
'self' => $GLOBALS["clean_link"]->getUrl()
)
)
);
 
}
 
// Bouton duree de connexion
 
function filtre_rester_connecte($prefs) {
$prefs = unserialize(stripslashes($prefs));
return $prefs['cnx'] == 'perma' ? ' ' : '';
}
 
// made in cherche_image_nommee. A partager.
 
function silogoauteur($id_auteur, $formats = array ('gif', 'jpg', 'png')) {
reset($formats);
while (list(, $format) = each($formats)) {
$d = _DIR_IMG . "auton$id_auteur.$format";
if (@file_exists($d)) return $d;
}
return '';
}
 
?>