Wikini

DiscussionsActionEcrivezMoi

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-54-196-52-45.compute-1.amazonaws.com
L'action ecrivez moi à pour but de proposer un outil très simple d'envoi d'email.
Par Nicephore17


Présentation


Il suffit d'appeler ecrivez moisur une page et voilà ce qui va se passer:


L'expéditeur n'a pas accès à l'adresse email du destinataire.
Cette action utilise la fonction Mail() de PHP.
Cette action et - en quelque sorte - la même chose que ActionMailToUser mais vu d'une autre façon.


Limitations




Discussion

J'allais dire que c'était une chouette idée mais je trouve que la deuxième limitation est vraiment gênante, il faudrait trouver une solution à ça... Le plus sécuritaire c'est que le mail soit autorisé uniquement quand le propriétaire est la dernière personne à avoir édité la page mais ce n'est pas pratique du tout... Sur ce point on verra plus tard car là j'ai vraiment aucune idée réalisable simplement
Enfin... quelques remarques rapides tout de même sur le code:
Sinon en gros le reste a l'air ok -- LordFarquaad

Tu es en train de dire que je progresse... :D. Je m'occupe d'abord de la version 1.5 de ActionNewTextSearch et je reviens ici après, merci de tes conseil. Quand le code d'Action Ecrivez Moi sera assez stable (ce qui ne devrait pas tarder) je penserais au look, mettre tout ça dans un tableau me semble indispensable.... et félicitations pour ton travail sur les classes WikiNi.
-- Nicephore17

Humm, j'ai essayé de télécharger ton action sur ton site mais l'archive est corrompue que ce soit à partir de Firefox ou de IE. Soit tu as eu un pb lors de l'upload (le fichier fait 1964 octets) soit ton ActionAttach ne fonctionne pas correctement. -- OlivierB

Mince, cela vient probablement d'un problème au niveau du codage de l'ASCII... Je suis sous Mac et j'avoue que je sais pas comment régler ce souci... :( mail moi et je te l'envoie si tu veux

Je viens de sortir la version 0.2 qui - entre autre - ne permet plus l'envoi de mails vide. J'envisage aussi de récupérer l'adresse IP de utilisateur non authentifié dans le but de décourager les abus. -- Nicephore17


Proposition pour la confidentialité/sécurité


On pourrait décomposer cette action en deux parties:

Principe:


Pour sécuriser un peu plus....

Bon... je vais continuer à réfléchir à ça avant de recommencer à coder. Sinon je le laisse sans sécu, ça dépend aussi du public du wiki en question...
-- Nicephore17


Code source version 0.2



<?php
/*
Copyright  2004  Nicolas FORGEARD-GRIGNON
nicephore17 **at** adminrezo.net

v0.2 - 19/12/2004
       Impossible d'envoyer des mails vides
v0.1 - 11/12/2004
       Initial release

All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


INFORMATIONS D'UTILISATION
*/

// Empeche l'execution php en direct
if ( !defined('WIKINI_VERSION') ) {die ("Désolé, vous ne pouvez pas accéder directement à cette fonctionnalité."); };

// Charge les informations de base
if ( !defined('ECRIVEZMOI_VERSION') ) { define('ECRIVEZMOI_VERSION','0.2'); };
$prefixe $this->config['table_prefix'];

// Qui donc est propriétaire de la page? (Le destinataire)
$ToName $this->GetPageOwner();

// Récupération des information sur l'expéditeur
if ($FromName $this->GetUser()){
  
$MailFromAdd $this->LoadSingle('SELECT email FROM '.$prefixe.'users WHERE name ="'.$FromName['name'].'"');     
  
$LigneDe '===Vous êtes:==='.$FromName['name'].' ('.$MailFromAdd['email'].')""<input type="hidden" name="from" value="'.$MailFromAdd['email'].'"/>""==[[ParametresUtilisateur Modifier cette adresse]]== ';
}else{
  
$LigneDe '===Vous êtes:=== ""<input type="text" name="from" />""==(Entrez votre adresse email ci-dessus)== ';
};

// Affichage du titre de la page
echo $this->Format('====Envoyer un mail à '.$ToName.'====----==[Fonctionne avec ""EcrivezMoi"" v'.ECRIVEZMOI_VERSION.']== --- ---');
                   
// Si le courrier n'a pas encore été envoyé...
if (!$_POST['envoyer']){
  
// Mise en place du forumlaire
  
echo $this->FormOpen();
    echo 
$this->Format($LigneDe);
    echo 
$this->Format('===Objet:===');
    echo (
'<input type="text" name="objet" value="" size="58em" />');
    echo 
$this->Format('---===Corps du texte:===');
    echo (
'<textarea name="corps" cols="55" rows="8"></textarea>');
    echo (
'<br /><input type="submit" name="envoyer" value="envoyer" />');
  echo 
$this->FormClose();
} else {
  
//Controle contenu non vide
  
if ($_POST['from'] AND $_POST['objet'] AND $_POST['corps']) {
    
//Traitement de l'expedition du messages
    
$MailToAdd $this->LoadSingle('SELECT email FROM '.$prefixe.'users WHERE name ="'.$ToName.'"');
    
$MailSent mail($MailToAdd['email'],'['.$this->config['wakka_name'].'] '.htmlspecialchars($_POST['objet']),htmlspecialchars($_POST['corps']),'from: '.$FromName['name'].'<'.htmlspecialchars($_POST['from']).'>');
    
// Information pour l'expéditeur
    
if ($MailSent) {
      echo 
$this->Format('//Votre message pour '.$ToName.' à bien été expédié, merci.//');
    
//En cas d'erreur...  
    
}else{ 
      echo 
$this->Format('//Désolé, votre message n\'a pas pu être envoyé//');
    };  
  } else {
    echo 
$this->Format('//Désolé, vous devez remplir tous les champs du formulaire. Votre email n\'a pas été envoyé.//');
  };
};
?>

Changelog ? -- LordFarquaad
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]