4 |
david |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
/***************************************************************************\
|
|
|
4 |
* SPIP, Systeme de publication pour l'internet *
|
|
|
5 |
* *
|
|
|
6 |
* Copyright (c) 2001-2005 *
|
|
|
7 |
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
|
|
|
8 |
* *
|
|
|
9 |
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
|
|
|
10 |
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
|
|
|
11 |
\***************************************************************************/
|
|
|
12 |
|
|
|
13 |
|
|
|
14 |
include ("ecrire/inc_version.php3");
|
|
|
15 |
include_ecrire("inc_presentation.php3"); # pour install_debut
|
|
|
16 |
include_ecrire("inc_session.php3"); # pour creer_uniq_id
|
|
|
17 |
include_ecrire("inc_mail.php3"); # pour envoyer_mail
|
|
|
18 |
include_ecrire("inc_acces.php3"); # pour generer_htpass
|
|
|
19 |
include_local("inc-public-global.php3"); # pour calculer la page
|
|
|
20 |
include_local ("inc-cache.php3"); # ici c'est pour tester la connexion SQL
|
|
|
21 |
include_ecrire("inc_lang.php3");
|
|
|
22 |
|
|
|
23 |
utiliser_langue_site();
|
|
|
24 |
utiliser_langue_visiteur();
|
|
|
25 |
|
|
|
26 |
// Ce fichier est celui d'une balise dynamique qui s'ignore.
|
|
|
27 |
|
|
|
28 |
function formulaire_oubli_dyn($p, $oubli)
|
|
|
29 |
{
|
|
|
30 |
|
|
|
31 |
$message = '';
|
|
|
32 |
|
|
|
33 |
// au 3e appel la variable P est positionnee par le script lui-meme
|
|
|
34 |
// et oubli = mot passe. Le choix du nom P est impose par pass_mail_passcookie
|
|
|
35 |
if ($p = addslashes($p)) {
|
|
|
36 |
$res = spip_query("SELECT * FROM spip_auteurs WHERE cookie_oubli='$p' AND statut<>'5poubelle' AND pass<>''");
|
|
|
37 |
if (!$row = spip_fetch_array($res))
|
|
|
38 |
$message = _T('pass_erreur_code_inconnu');
|
|
|
39 |
else {
|
|
|
40 |
if ($oubli) {
|
|
|
41 |
$mdpass = md5($oubli);
|
|
|
42 |
$htpass = generer_htpass($oubli);
|
|
|
43 |
spip_query("UPDATE spip_auteurs SET htpass='$htpass', pass='$mdpass', alea_actuel='',
|
|
|
44 |
cookie_oubli='' WHERE cookie_oubli='$p'");
|
|
|
45 |
|
|
|
46 |
$login = $row['login'];
|
|
|
47 |
$message = "<b>" . _T('pass_nouveau_enregistre') . "</b>".
|
|
|
48 |
"<p>" . _T('pass_rappel_login', array('login' => $login));
|
|
|
49 |
}
|
|
|
50 |
}
|
|
|
51 |
} else {
|
|
|
52 |
// si p absent, oubli vaut alors le mail au 2e appel, vide au 1e
|
|
|
53 |
if ($oubli) {
|
|
|
54 |
if ( email_valide($oubli) ) {
|
|
|
55 |
$email = addslashes($oubli);
|
|
|
56 |
$res = spip_query("SELECT * FROM spip_auteurs WHERE email ='$email'");
|
|
|
57 |
if ($row = spip_fetch_array($res)) {
|
|
|
58 |
if ($row['statut'] == '5poubelle' OR $row['pass'] == '')
|
|
|
59 |
$message = _T('pass_erreur_acces_refuse');
|
|
|
60 |
else {
|
|
|
61 |
$cookie = creer_uniqid();
|
|
|
62 |
spip_query("UPDATE spip_auteurs SET cookie_oubli = '$cookie' WHERE email ='$email'");
|
|
|
63 |
|
|
|
64 |
if ( envoyer_mail($email,
|
|
|
65 |
"[" . lire_meta("nom_site") .'] ' . _T('pass_oubli_mot'),
|
|
|
66 |
_T('pass_mail_passcookie',
|
|
|
67 |
array('nom_site_spip' => lire_meta("nom_site"),
|
|
|
68 |
'adresse_site' => lire_meta("adresse_site"),
|
|
|
69 |
'cookie' => $cookie))))
|
|
|
70 |
$message = _T('pass_recevoir_mail');
|
|
|
71 |
else
|
|
|
72 |
$message = _T('pass_erreur_probleme_technique');
|
|
|
73 |
}
|
|
|
74 |
}
|
|
|
75 |
else
|
|
|
76 |
$message = _T('pass_erreur_non_enregistre', array('email_oubli' => htmlspecialchars($oubli)));
|
|
|
77 |
} else {
|
|
|
78 |
$message = _T('pass_erreur_non_valide', array('email_oubli' => htmlspecialchars($oubli)));
|
|
|
79 |
}
|
|
|
80 |
}
|
|
|
81 |
}
|
|
|
82 |
return array('formulaire_oubli', 0, array('p' => $p, 'message' => $message));
|
|
|
83 |
}
|
|
|
84 |
|
|
|
85 |
install_debut_html(_T('pass_mot_oublie'));
|
|
|
86 |
inclure_balise_dynamique(formulaire_oubli_dyn($p, $oubli));
|
|
|
87 |
install_fin_html();
|
|
|
88 |
?>
|