Newer
Older
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
include_ecrire("inc_session"); # pour creer_uniq_id
include_ecrire('inc_minipres'); # charge lang et execute utiliser_lang
include_ecrire("inc_mail"); # pour envoyer_mail
include_ecrire("inc_acces"); # pour generer_htpass
include_local("inc-public-global"); # pour calculer la page
include_ecrire("inc_filtres"); # pour email_valide()
// Ce fichier est celui d'une balise dynamique qui s'ignore.
function spip_pass_passcookie($email, $param)
{
if (!email_valide($email) )
return _T('pass_erreur_non_valide', array('email_oubli' => htmlspecialchars($email)));
$smail = addslashes($email);
$res = spip_query("SELECT statut,pass FROM spip_auteurs WHERE email ='$smail'");
if (!$row = spip_fetch_array($res))
return _T('pass_erreur_non_enregistre', array('email_oubli' => htmlspecialchars($email)));
if ($row['statut'] == '5poubelle' OR $row['pass'] == '')
return _T('pass_erreur_acces_refuse');
$cookie = creer_uniqid();
$nom = $GLOBALS['meta']["nom_site"];
$url = $GLOBALS['meta']["adresse_site"];
spip_query("UPDATE spip_auteurs SET cookie_oubli = '$cookie' WHERE email ='$smail'");
if ( envoyer_mail($email,
("[$nom] " . _T('pass_oubli_mot')),
_T('pass_mail_passcookie',
array('nom_site_spip' => $nom,
'adresse_site' => $url,
'sendcookie' => generer_url_public('spip_pass', "$param=$cookie")))) )
return _T('pass_recevoir_mail');
else
return _T('pass_erreur_probleme_technique');
}
function formulaire_oubli_dyn($p, $oubli)
{
$message = '';
// au 3e appel la variable P est positionnee et oubli = mot passe.
// au 2e appel, P est vide et oubli vaut le mail a qui envoye le cookie
// au 1er appel, P et oubli sont vides
if (!$p) {
if ($oubli) $message = spip_pass_passcookie($oubli, 'p');
} else {
$p = addslashes($p);
$res = spip_query("SELECT login FROM spip_auteurs WHERE cookie_oubli='$p' AND statut<>'5poubelle' AND pass<>''");
if (!$row = spip_fetch_array($res))
$message = _T('pass_erreur_code_inconnu');
else {
if ($oubli) {
$mdpass = md5($oubli);
$htpass = generer_htpass($oubli);
spip_query("UPDATE spip_auteurs SET htpass='$htpass', pass='$mdpass', alea_actuel='', cookie_oubli='' WHERE cookie_oubli='$p'");
$login = $row['login'];
$message = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
"<p>" . _T('pass_rappel_login', array('login' => $login));
return array('formulaire_oubli', 0,
array('p' => $p,
'message' => $message,
'action' => generer_url_public('spip_pass')));
function spip_pass_dist()
{
global $p, $oubli;
install_debut_html( _T('pass_mot_oublie'));
inclure_balise_dynamique(formulaire_oubli_dyn($p, $oubli));
install_fin_html();
}
spip_pass_dist();