diff --git a/ecrire/inc_base.php3 b/ecrire/inc_base.php3 index 99ac326cd81dac37e04bebb8b65ded80707fa201..67855921cef01f426adfd9b2eabc45d34f96f671 100644 --- a/ecrire/inc_base.php3 +++ b/ecrire/inc_base.php3 @@ -60,6 +60,7 @@ function creer_base() { alea_actuel tinytext NOT NULL, alea_futur tinytext NOT NULL, prefs tinytext NOT NULL, + cookie_oubli tinytext NOT NULL, PRIMARY KEY (id_auteur), KEY login (login), KEY statut (statut))"; @@ -978,6 +979,10 @@ function maj_base() { spip_query("DROP TABLE spip_visites_referers"); } + if ($version_installee < 1.458) { + spip_query("ALTER TABLE spip_auteurs ADD cookie_oubli TINYTEXT NOT NULL"); + } + // // Mettre a jour le numero de version installee diff --git a/ecrire/inc_mail.php3 b/ecrire/inc_mail.php3 index 51bfe34c84a7d419ff3f04360e39fba1417de4fc..8eb4be6cc49d16607555fae43cb0a54474098b86 100644 --- a/ecrire/inc_mail.php3 +++ b/ecrire/inc_mail.php3 @@ -40,8 +40,8 @@ function envoyer_mail($email, $sujet, $texte, $from = "", $headers = "") { global $hebergeur, $queue_mails, $flag_wordwrap; if (!$from) $from = $email; - if (! email_valide ($email) ) return; - if ($email == "vous@fournisseur.com") return; + if (! email_valide ($email) ) return false; + if ($email == "vous@fournisseur.com") return false; $headers = "From: $from\n". "MIME-Version: 1.0\n". diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index b7929df7a281ac832a308f4092611420c367e6ee..5178b5977299a24f8b11b606ba6ef78af1e21727 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -12,11 +12,11 @@ define("_ECRIRE_INC_VERSION", "1"); // // version de la base -$spip_version = 1.457; +$spip_version = 1.458; // version de spip // (mettre a jour a la main et conserver la mention "CVS") -$spip_version_affichee = "1.4d8 CVS"; +$spip_version_affichee = "1.4d9 CVS"; // version de spip / tag if (ereg('Name: v(.*) ','$Name$', $regs)) $spip_version_affichee = $regs[1]; diff --git a/inc-formulaires.php3 b/inc-formulaires.php3 index 2289d1d7c21b9e9f44e3e70e87807fa5879c3dd1..72b14f90c0fface4b061655a9576bc3c8856688f 100644 --- a/inc-formulaires.php3 +++ b/inc-formulaires.php3 @@ -283,6 +283,9 @@ function formulaire_inscription() { global $mail_inscription; global $nom_inscription; + include_ecrire("inc_meta.php3"); + $inscriptions_ecrire = (lire_meta("autoriser_inscriptions") == "oui"); + if ($mail_inscription) { include_ecrire("inc_connect.php3"); $query = "SELECT * FROM spip_auteurs WHERE email='$mail_inscription'"; @@ -295,6 +298,7 @@ function formulaire_inscription() { $id_auteur = $row['id_auteur']; $statut = $row['statut']; + echo "<b>"; if ($statut == '5poubelle') { echo "Vous n'avez plus accès à ce site."; $ok = false; @@ -313,6 +317,7 @@ function formulaire_inscription() { spip_query("DELETE FROM spip_auteurs WHERE id_auteur=$id_auteur"); $ok = true; } + echo "</b>\n"; } if ($ok) { diff --git a/inc-forum.php3 b/inc-forum.php3 index 624d0a8182420069e6fa3df3b8bf788cecc88151..9751b6e6b3a2bb220cb50f2f890bd3b959330ea9 100644 --- a/inc-forum.php3 +++ b/inc-forum.php3 @@ -96,29 +96,23 @@ function decoder_hash_forum($email, $hash) { } -function forum_abonnement() { - global $HTTP_COOKIE_VARS; - $email = $HTTP_COOKIE_VARS['spip_forum_email']; - $hash = $HTTP_COOKIE_VARS['spip_forum_hash']; - - $row = decoder_hash_forum($email, $hash); - echo "<div class='spip_encadrer'>"; - if (!$row) { - echo ""; - echo "\nVotre e-mail d'inscription :<BR><INPUT TYPE='text' CLASS='forml' NAME='email_forum_abo' VALUE='$email' SIZE='14'>"; - echo "\n<BR>Votre mot de passe :<BR><INPUT TYPE='password' CLASS='forml' NAME='pass_forum_abo' VALUE='' SIZE='14'>"; - echo "\n<BR><FONT SIZE=2>Pour participer à ce forum, vous devez indiquer l'identifiant personnel qui vous a été fourni. Si vous l'avez oublié, ou si vous n'en n'avez pas encore, cliquez ci-dessous pour vous inscrire.</FONT>"; - echo "\n<BR>[<A HREF=\"#formulaire_forum\" onMouseDown=\"window.open('spip_pass.php3','myWindow','scrollbars=yes,resizable=yes,width=400,height=200')\">Recevoir votre identifiant</A>]<P>"; - echo ""; - } +function forum_abonnement($retour) { + if ($GLOBALS['auteur_session']) + return true; // autoriser le formulaire else { - $id_auteur = $row['id_auteur']; - $hash_email = calculer_action_auteur("email $email", $id_auteur); - echo "\nVous êtes identifié sous l'adresse e-mail : $email."; - echo "\n<INPUT TYPE='hidden' NAME='forum_id_auteur' VALUE='$id_auteur'>"; - echo "\n<INPUT TYPE='hidden' NAME='hash_email' VALUE='$hash_email'>"; - } - echo "</div><p>"; + include_local("inc-login.php3"); + $cible = new Link($retour); + + $message_login = propre("Pour participer à + ce forum, vous devez vous enregistrer au préalable. Merci + d'indiquer ci-dessous l'identifiant personnel qui vous a + été fourni.\n_ Si vous l'avez oublié, ou si + vous n'en avez pas encore, vous pouvez"). +' <script language="JavaScript"><!-- +document.write("<a href=\\"javascript:window.open(\\\'spip_pass.php3\\\', \\\'spip_pass\\\', \\\'scrollbars=yes,resizable=yes,width=740,height=580\\\'); void(0);\\""); +//--></script><noscript><a href=\'spip_pass.php3\' target=\'_blank\'></noscript>demander de nouveaux identifiants</a>.'; + login($cible, false, $message_login); + } } @@ -135,24 +129,21 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd $lien = substr($REQUEST_URI, strrpos($REQUEST_URI, '/') + 1); $retour = $HTTP_GET_VARS['retour']; - if ($retour) - $retour = $retour; - else + if (!$retour) $retour = rawurlencode($lien); + if ($forums_publics == "abo") // forums abo + $ret .= '<?php include("inc-forum.php3"); if (forum_abonnement($retour)) { ?'.'>'; + else + $ret .= '<?php { ?'.'>'; + $ret .= "\n<a name='formulaire_forum'></a>\n"; $ret .= "\n<FORM ACTION='$lien' METHOD='post'>"; - //$ret .= "\n<B>VOTRE MESSAGE...</B><p>"; if ($forums_publics == "pri") { $ret.= "Ce forum est modéré à priori : votre contribution n'apparaîtra qu'après avoir été validée par un administrateur du site.<P>"; } - if ($forums_publics == "abo") { - $ret.= '<?php include("inc-forum.php3"); forum_abonnement(); ?'.'>'; - } - - $ret .= "\n"; // recuperer le titre if (! $titre) { if ($id_parent) @@ -379,6 +370,8 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd else $ret .= "\n<p><DIV ALIGN='right'><INPUT TYPE='submit' NAME='Valider' CLASS='spip_bouton' VALUE='Valider ce choix'></DIV>"; $ret .= "</FORM>"; + + $ret .= '<?php } ?'.'>'; // fin forums abo return $ret; } diff --git a/inc-login.php3 b/inc-login.php3 index 770f1120fdd6de047c6169ae4ecc8d830ca89d17..ec3ee104fc02250b8c75189b02a06ce0ff1b5df3 100644 --- a/inc-login.php3 +++ b/inc-login.php3 @@ -37,16 +37,17 @@ function auth_http($cible, $essai_auth_http) { } function ouvre_login($titre) { - $retour .= debut_cadre_enfonce(); + $retour .= debut_cadre_enfonce("redacteurs-24.gif"); if ($titre) $retour .= gros_titre($titre); + $retour .= '<FONT size="2" FACE="arial,helvetica,sans-serif">'; return $retour; } function ferme_login() { - return fin_cadre_enfonce(); + return "</FONT>".fin_cadre_enfonce(); } -function login($cible, $prive = 'prive') { +function login($cible, $prive = 'prive', $message_login='') { $login = $GLOBALS['var_login']; $erreur = $GLOBALS['var_erreur']; $echec_cookie = $GLOBALS['var_echec_cookie']; @@ -60,9 +61,12 @@ function login($cible, $prive = 'prive') { include_ecrire("inc_session.php3"); verifier_visiteur(); - if ($auteur_session AND ! $logout) + if ($auteur_session AND ! $logout) { + $url = $cible->getUrl(); + @Header("Location: $url"); + echo "<a href='$url'>Vous êtes en registré... par ici...</a>\n"; return; - + } // initialisations $nom_site = lire_meta('nom_site'); @@ -107,15 +111,21 @@ function login($cible, $prive = 'prive') { echo ouvre_login ("$nom_site : accès à l'espace privé"); echo "<p>Pour accéder à l'espace privé de ce site, "; echo "vous devez entrer les codes d'identification qui vous ont été "; - echo "fournis lors de votre inscription."; + echo "fournis lors de votre inscription. "; + echo "Si vous l'avez oublié, ou si vous n'en avez pas encore, vous pouvez". +' <script language="JavaScript"><!-- +document.write("<a href=\\"javascript:window.open(\\\'spip_pass.php3\\\', \\\'spip_pass\\\', \\\'scrollbars=yes,resizable=yes,width=740,height=580\\\'); void(0);\\""); +//--></script><noscript><a href=\'spip_pass.php3\' target=\'_blank\'></noscript>demander de nouveaux identifiants</a>.'; } else { echo ouvre_login ("$nom_site : identification"); - echo "<p>Pour vous identifier sur ce site, "; - echo "vous devez entrer les codes qui vous ont été "; - echo "fournis lors de votre inscription."; + if (!$message_login) + $message_login = "Pour vous identifier sur ce site, + vous devez entrer les codes qui vous ont été + fournis lors de votre inscription."; + + echo "<br><font size='2'>$message_login</font><br>\n"; } - echo "<p> <p>"; if ($login) { // affiche formulaire de login en incluant le javascript MD5 @@ -127,18 +137,8 @@ function login($cible, $prive = 'prive') { this.session_password.value = \"\"; }'"; echo ">\n"; - // statut - if ($row['statut'] == '0minirezo') { - $icone = "redacteurs-admin-24.gif"; - } else if ($row['statut'] == '1comite') { - $icone = "redacteurs-24.gif"; - } - debut_cadre_enfonce($icone); if ($erreur) echo "<font color=red><b>$erreur</b></font><p>"; - echo "<table cellpadding=0 cellspacing=0 border=0 width=100%>"; - echo "<tr width=100%>"; - echo "<td width=100%>"; // si jaja actif, on affiche le login en 'dur', et on le passe en champ hidden echo "<script type=\"text/javascript\"><!--\n" . "document.write('Login : <b>$login</b> <br><font size=\\'2\\'>[<a href=\\'spip_cookie.php3?cookie_admin=non&url=".rawurlencode($clean_link->getUrl())."\\'>se connecter sous un autre identifiant</a>]</font>');\n" . @@ -163,34 +163,22 @@ function login($cible, $prive = 'prive') { echo "<input type='hidden' name='url' value='$url'>\n"; echo "<input type='hidden' name='session_password_md5' value=''>\n"; echo "<input type='hidden' name='next_session_password_md5' value=''>\n"; - echo "</td>"; - if ($logo) { - echo "<td width=10><img src='ecrire/img_pack/rien.gif' width=10></td>"; - echo "<td valign='top'>"; - echo "<img src='$logo'>"; - echo "</td>"; - } - echo "</tr></table>"; echo "<div align='right'><input type='submit' class='fondl' name='submit' value='Valider'></div>\n"; - fin_cadre_enfonce(); echo "</form>"; } - else { // demander seulement le login $url = $cible->getUrl(); $action = $clean_link->getUrl(); echo "<form name='form_login' action='$action' method='post'>\n"; - debut_cadre_enfonce("redacteurs-24.gif"); if ($erreur) echo "<font color=red><b>$erreur</b></font><p>"; echo "<label><b>Login (identifiant de connexion au site)</b><br></label>"; echo "<input type='text' name='var_login' class='formo' value=\"\" size='40'><p>\n"; echo "<input type='hidden' name='url' value='$url'>\n"; echo "<div align='right'><input type='submit' class='fondl' name='submit' value='Valider'></div>\n"; - fin_cadre_enfonce(); echo "</form>"; } @@ -210,8 +198,7 @@ function login($cible, $prive = 'prive') { } - echo "<p><font size='2' face='Verdana, Arial, Helvetica, sans-serif'>"; - echo "[<a href='$url_site'>retour au site public</a>]</font>"; + if ($prive) echo "[<a href='$url_site'>retour au site public</a>]"; echo ferme_login(); diff --git a/spip_pass.php3 b/spip_pass.php3 index 366ad377eb1e930266d1b4f5a9acf50abe212d6b..a45eac0a64dec903dc4d1aef2e4ae09e40ebbc14 100644 --- a/spip_pass.php3 +++ b/spip_pass.php3 @@ -1,89 +1,136 @@ <?php include ("ecrire/inc_version.php3"); +include_ecrire ("inc_connect.php3"); +include_ecrire ("inc_meta.php3"); +include_ecrire ("inc_presentation.php3"); +include_ecrire ("inc_session.php3"); +include_ecrire ("inc_filtres.php3"); +include_ecrire ("inc_texte.php3"); +include_ecrire ("inc_meta.php3"); +include_ecrire ("inc_mail.php3"); +include_ecrire ("inc_acces.php3"); + +include_local("inc-formulaires.php3"); + +$inscriptions_ecrire = (lire_meta("autoriser_inscriptions") == "oui") ; + +// y a t il des forums sur abonnement ? +function forums_sur_abo() { + if (lire_meta("forums_publics") == "abo") + return true; + else { + $res = spip_query ("SELECT * FROM spip_articles WHERE accepter_forum='abo'"); + if (mysql_num_rows($res)>0) + return true; + } +} -include_ecrire("inc_connect.php3"); -include_ecrire("inc_meta.php3"); -include_local ("inc-forum.php3"); - -?> - - - -<HTML> -<TITLE>Votre identifiant</TITLE> -<BODY BGCOLOR="#FFFFFF"> +// recuperer le cookie de relance +if ($p = addslashes($p)) { + $res = spip_query ("SELECT * FROM spip_auteurs WHERE cookie_oubli='$p' AND statut<>'5poubelle' AND pass<>'' AND login<>''"); + if (!$res OR $row = mysql_fetch_array($res)) { + if ($pass) { + $mdpass = md5($pass); + $htpass = generer_htpass($pass); + spip_query ("UPDATE spip_auteurs SET htpass='$htpass', pass='$mdpass', alea_actuel='', + cookie_oubli='' WHERE cookie_oubli='$p'"); + + $erreur = "Votre nouveau mot de passe a été pris en compte."; + } else { + install_debut_html("Nouveau mot de passe"); + echo "<p><br>"; + echo "<form action='spip_pass.php3' method='post'>"; + echo "<input type='hidden' name='p' value='$p'>"; + echo "Veuillez entrer votre nouveau mot de passe :<br>\n"; + echo "<input type='password' name='pass' value=''>"; + echo "</form>\n"; + install_fin_html(); + exit; + } + } + else + $erreur = "Ce code ne correspond à aucun des visiteurs ayant accès à ce site."; +} -<TABLE WIDTH=100% HEIGHT=80%> -<TR WIDTH=100% HEIGHT=80%> -<TD WIDTH=100% HEIGHT=80%> +// envoyer le cookie de relance mot de passe +if ($email_oubli) { + if (email_valide($email_oubli)) { + $email = addslashes($email_oubli); + $res = spip_query("SELECT * FROM spip_auteurs WHERE email ='$email'"); + if ($row = mysql_fetch_array($res)) { + if ($row['statut'] == '5poubelle') + $erreur = "Vous n'avez plus accès à ce site."; + else { + $cookie = creer_uniqid(); + spip_query("UPDATE spip_auteurs SET cookie_oubli = '$cookie' WHERE email ='$email'"); + + $nom_site_spip = lire_meta("nom_site"); + $adresse_site = lire_meta("adresse_site"); + + $message = "(ceci est un message automatique)\n\n"; + $message .= "Pour retrouver votre acc\xe8s au site\n"; + $message .= "$nom_site_spip ($adresse_site),\n"; + $message .= "Veuillez vous rendre \xe0 l'adresse suivante :\n\n"; + $message .= " <$adresse_site/spip_pass.php3?p=$cookie>\n\n"; + $message .= "Vous pourrez alors entrer un nouveau mot de passe\n"; + $message .= "et vous reconnecter au site."; + + if (envoyer_mail($email, "[$nom_site_spip] Oubli du mot de passe", $message)) + $erreur = "Vous allez recevoir un email vous indiquant comment retrouver votre accès au site."; + else + $erreur = "Problème de mail : l'email ne peut pas être envoyé."; + } + } + } + else + $erreur = "Cet email n'est pas valide !"; +} -<?php +// debut presentation +install_debut_html("Votre identifiant"); +echo "<p><br>"; -if (!$email) { - echo"\n<FORM ACTION='spip_pass.php3' METHOD='post'>"; - echo "<FONT FACE='verdana,arial,helvetica,sans-serif'>"; - echo "Indiquez votre adresse e-mail:"; - echo "<BR>\n<INPUT TYPE='text' NAME='email' VALUE=\"$email\" SIZE='25'><P>"; - echo "<P ALIGN='right'><INPUT TYPE='submit' NAME='Valider' VALUE='Valider'>"; - echo "</FONT>"; - echo "</FORM>"; -} +if ($erreur) + echo "<font color='red' size='+1'><b>$erreur</b></font>"; else { - $query = "SELECT * FROM spip_auteurs WHERE email='$email'"; - $result = spip_query($query); - $ok = true; - - if (mysql_num_rows($result) > 0) { - while($row = mysql_fetch_array($result)) { - $id_auteur = $row['id_auteur']; - $statut = $row['statut']; - } - if ($statut == '5poubelle') { - echo "<h4>Vous n'avez plus accès à ces forums.</h4>"; - $ok = false; + if ($inscription_ecrire || forums_sur_abo()) { + echo "<small>"; + if ($inscriptions_ecrire) { + echo propre ("L'espace privé de ce site est ouvert aux visiteurs, + après inscription. Votre identifiant vous permettra de consulter + les articles en cours de rédaction, de proposer des articles et de + participer aux forums internes aussi bien qu'aux forums publics sur abonnement."); + } else { + echo propre("Certains forums publics de ce site sont réservés aux + visiteurs enregistrés."); } - else if ($statut != '6forum') { - echo "<h4>Cette adresse e-mail est déjà enregistrée en tant que rédacteur ou - administrateur du site, vous pouvez donc utiliser votre mot de passe habituel.</h4>"; - $ok = false; - } - } + echo "\n<p>".propre ("Pour obtenir votre identifiant personnel, + indiquez ici votre nom et votre adresse email. Les codes vous + parviendront rapidement par courrier électronique."); - if ($ok) { - $pass = generer_pass_forum($email); - - $mdpass = md5($pass); - $query = "INSERT INTO spip_auteurs (nom, email, login, pass, statut) VALUES ('Auteur forum', '$email', '', '$mdpass', '6forum')"; - $result = spip_query($query); - - $nom_site = lire_meta("nom_site"); - $adresse_site = lire_meta("adresse_site"); - - $message = "(ceci est un message automatique)\n\n"; - $message .= "Bonjour\n\n"; - $message .= "Voici vos identifiants pour pouvoir participer aux forums\n"; - $message .= "du site \"$nom_site\" ($adresse_site) :\n\n"; - $message .= "- email : $email\n"; - $message .= "- mot de passe : $pass\n\n"; - if (envoyer_mail($email, "[$nom_site] Connexion au forum", $message)) { - echo "<FONT FACE='verdana,arial,helvetica,sans-serif'>"; - echo "Votre nouvel identifiant vient de vous être envoyé par email."; - echo "</FONT>"; - } - else { - echo "<FONT FACE='verdana,arial,helvetica,sans-serif'>"; - echo "Erreur : l'identifiant ne peut pas être envoyé."; - echo "</FONT>"; - } + formulaire_inscription(); } -} + echo "<p><br>"; + + gros_titre("Mot de passe oublié?"); + echo "<p>".propre("indiquez ci-dessous l'adresse email sous laquelle vous + vous êtes précédemment enregistré. Vous + recevrez un email vous indiquant la marche à suivre pour + récupérer votre accès."); + + echo '<form action="spip_pass.php3" method="post">'; + echo '<div align="right">'; + echo '<input type="text" name="email_oubli" value="">'; + echo ' <input type=submit name="oubli" value="Vite !" class="spip_bouton"></div></form>'; + + echo "</small>"; +} -?> -</TD></TR></TABLE> +echo "<p align='right'><a href='javascript:{if(window.opener) window.opener.location.href=window.opener.location.href;close();}'>Quitter cette fenêtre</a></p>"; +install_fin_html(); -</BODY> -</HTML> +?> \ No newline at end of file