Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » SFORM » » Sform et fichiers joints  
2 pages [ 1 | 2 ]
AuteurSform et fichiers joints
BlackEagle
51    

BlackEagle
  Posté : 26-06-2005 23:31

Est il possible d'attacher un fichier joint par l'intermediaire du formulaire Sform.
Si oui pouvez vous m'indiquer comment je dois m'y prendre pour le réaliser.

Merci

  Profil  www  Citation   
Xargos
2035       

Xargos
  Posté : 27-06-2005 08:59

Oui... édite le fichier mod_extend-user.php (répertoire /modules/sform/extend-user/ )

Tu cherches l'endroit où le membre peut uploader don propre avatar.
=> $m -> add_upload(.......);

Ensuite, tu exploites... attention, ce n'est pas facile à maîtriser si tu ne connaîs pas bien les formulaires.

  Profil  E-mail  www  Citation   
BlackEagle
51    

BlackEagle
  Posté : 27-06-2005 13:29

Je ne m'y connais pas trop mais je vais essayer de me débrouiller.
Merci pour l'info.

  Profil  www  Citation   
BlackEagle
51    

BlackEagle
  Posté : 29-06-2005 19:34

J'aurais besoin d'un coup de main parceque je patauge completement depuis 2 jours.

Voici mon fichier formulaire.php


<?PHP
/************************************************************** **********/
/* SFORM Extender for NPDS V Contact Example                          & nbsp;  */
/* ===========================        &nbs p;              ;                     */
/*            &nb sp;            &nbs p;              ;                           & nbsp;    */
/* - 2004            &nb sp;            &nbs p;              ;        */
/*            &nb sp;            &nbs p;              ;                           & nbsp;    */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License.       */
/************************************************************************/ br />

// Récuperation du nom d'utilisateur sur le site par rapport au cookie
cookiedecode($user); 
$username $cookie[1]; 
if (
$username == ""{ 
$nom = 
"";
} else { 
$nom = $username;
} 
// Récupération de l'adresse email de l'utilisa teur si membre sur le site par rapport  au cookie
list($email,$femail) = mysql_fetch_row(mysql_query(
"SELECT email,femail FROM ".$NPDS_Prefix."users where uname='$username'"));

$m
->add_form_field_size(50);
$m
->add_title("Soumission de voitures");
$m
->add_field('nom', "Nom/Pseudo",$nom,'text',true,150,"","");
$m
->add_field('cars', "Nom du véhicule",$cars,'text',true,25,"","");
$m
->add_field('type', "Type de véhicule",$type,'text',false,25,"","");
  $m
->add_extra("<tr><td colspan=2> </td></tr>");
$m
->add_field('email', "Adresse de messagerie",$email,'text',true,255,"","email");
  $m
->add_extra("<tr><td colspan=2> </td></tr>");
 $m
->add_upload('B1', "Fichier à envoyer""30""");
  $m
->add_extra("<tr><td colspan=2> </td></tr>");

// ----------------------------------------------------------------
// CES CHAMPS sont indispensables --- Don't&nbs p;remove these fields
$m
->add_extra("<tr><td align=center colspan=2>"
);
// Reset bouton
$m
->add_field("","","R a z",'reset',false);
// Return bouton
$m
->add_extra(" -::- ");
$m
->add_extra("<a href=index.php>[ Retour ]</a>");
// Submit bouton
$m
->add_extra(" -::- ");
$m
->add_field("","","Soumettre",'submit',false);
$m
->add_extra("</td></tr>");
// ----------------------------------------------------------------
?>




Et mon fichier contact.php



<?PHP
/************************************************************** **********/
/* SFORM Extender for NPDS V Contact Example .                           * /
/* ===========================        &nbs p;              ;                     */
/*            &nb sp;            &nbs p;              ;                           & nbsp;    */
/* 2002 - 2004            &nb sp;            &nbs p;              ;        */
/*            &nb sp;            &nbs p;              ;                           & nbsp;    */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License.       */
/************************************************************************/ br />/* Dont modify this file is you dont know what you make            &nb sp;    */
/************************************************************************/ br />


global $ModPath$ModStart;
$sform_path="modules/sform/";
!include!_once($sform_path.
"sform.php");

global $m;
$m=new form_handler();
//********************
$m
->add_form_title("CONTACT");
$m
->add_form_method("post");
$m
->add_form_check("true");
$m
->add_mess(" * désigne un champ obligatoire < /font>");
$m
->add_submit_value("ok");
$m
->add_!url(!"modules.php");
$m
->add_field("ModStart","",$ModStart,'hidden',false);
$m
->add_field("ModPath","",$ModPath,'hidden',false);

/************************************************/
!include!($sform_path.
"upload/formulaire.php");
/************************************************/
// Manage the <form>
switch($ok) 
{

   case 'Soumettre':
      if (!$sformret) 
{
         $m
->make_response();
        
        
$limite = md5(uniqid(rand()));
  
 $message = $m
->aff_response("class=\"LIGNA\"","not_echo","");


   //lefichier 
 if ($B1<>
""{
 $attachement = 
"------=$limite\n";
 $attachement .= 
"!content-type:! application/octet-stream; name=\"$B1\"\n";
 $attachement .= 
"!content-transfer-encoding:!base_64\n";
 $attachement .
"!content-disposition:! attachment; filename=\"
$B1\"";
 $attachement .= chunk_split(base_64_encode(implode(
""
, file($B1))));
 
}

         global $notify_ema il;
         $message=
"<html><body>".$message."</body></html>";
         send_email($notify_emai l, $m
->title,$message.$attachement,"","","html");
         opentable();
         echo $B1; &nb sp;// verification du nom du fichier
         echo 
"<p align=\"center\">Votre demande est prise en compte.  Nous y répondrons au plus vite</p>< font color="#007700">"
;
         closetable();
         break;
      
} else {
         $ok=
"";
      
}

   default:
      echo $m
->print_form("class=\"LIGNA\"");
      break;
}
?>




Lorsque je lance mon formulaire, il m'envoye bien le mail mais le fichier n'est pas attaché au mail. Il apparait comme ceci à l'interieur :


------=7e55e2799f8919c5a0c84f18c0c3ceb3 !content-type:! application/octet-stream; name="/tmp/phpQuoPwI" !content-transfer-encoding:!base_64 PD8NCi8qIE1vZGlmaWV6IGxlcyBwYXJhbeh0cmVzIGQnYXBwZWwgZGUgbGEgZm9uY3Rpb24gc2Vs b24gdm9zIGJlc29pbnMNCg0KTkUgUEFTIEFKT1VURVIgREUgTElHTkVTIFZJREVTIEFVIERFQlVU...



Pouvez vous m'aider

  Profil  www  Citation   
developpeur
24560       
 

developpeur
  Posté : 29-06-2005 22:57

hexagone à fait un truc du genre. contact le

  Profil  E-mail  www  Citation   
Xargos
2035       

Xargos
  Posté : 30-06-2005 10:59

Le problème vient de >> $message.$attachement << dans la lifne d'envoi du mail, à mon avis.
Le fichier attaché est "concaténé" en texte à la fin du message.

Je pense que le problème ne vient pas de NPDS mais de la syntaxe de ta fonction d'envoi d'email. Essaye de lire des tutos à ce sujet sur internet, ou des scripts d'envoi de mails avec pièce jointe. Tu regardes quelle syntaxe ils utilisent et tu copies...

  Profil  E-mail  www  Citation   
hexagone
188     

hexagone
  Posté : 13-07-2005 13:10

Salut,

je ne me souviens pas avoir fait ca, mais bon, on ne sait jamais, j'vais y jeter un oeil...

de memoire par contre je peu te dire ca:

deja au niveau de SFORM, evite d'utiliser un Blob (B1) pour stocker un petit nom de fichier, utilise plutot une des variables de C1 a C8

Ensuite, d'apres le code que tu as mis, je pense que ce n'est pas l'envoie du mail, mais son contenu qui pose probleme.

je mettrais un exemple typique tout a l'heure si j'ai le temps, la j'ai trop la dalle

  Profil  www  Citation   
hexagone
188     

hexagone
  Posté : 13-07-2005 15:56

Re,

alors finalement, je pense qu'il y avait un peu des 2..
la fonction send_mail de NPDS qui pose kkes soucis, et peut etre le contenu du mail qui ne facilitait pas l'interpretation..
Mais la partie SFROM en elle meme me semble correcte..

enfin bref, voici un exemple "type" d'envoi de mail avec fichier attaché...





$to ="ma@mail.box";
$sujet = "Sujet du Mail";
$message = "Le Texte du Mail";
$chemin = "chemindufichier";
$fichier = "nomdefichier.typ";
//$reply = ;
//$from = ;



// On choisi généralement de construire une frontière générée aleatoirement
$boundary = "----="."_parties_".md5(uniqid(rand()));


//entete du message
{
//date de creation
$mail_mime = "Date: ".date("l j F Y, G:i")."\r\n";
// Version du format MIME utilisé
$mail_mime .= "!mime-version:! 1.0\r\n";
// Type de contenu. Ici plusieurs parties de type different "multipart/mixed"
// Avec un frontière définie par $boundary
$mail_mime .= "!content-type:! multipart/mixed; boundary=\"$boundary\"\r\n";
//termine l'entete avec un retour a la ligne obligatoire pour separer l'entete du corps
$mail_mime .= "\r\n";
}


//--------------------------------------------------
// Construction du message proprement dit
//--------------------------------------------------


{
//Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML
$texte = "This is a multi-part message in MIME format.\r\n";
$texte .= "Ceci est un message est au format MIME.\r\n";
}

//---------------------------------
// 1ère partie du message
// Le texte
//---------------------------------
{
// Chaque partie du message est séparé par une frontière (attention au --, ce n'est pas une erreur!)
$texte .= "--$boundary\r\n";
// Et pour chaque partie on en indique le type
$texte .= "!content-type:! text/plain; charset=\"iso-8859-1\"\r\n";
// Et comment il sera codé
$texte .= "!content-transfer-encoding:! 7bit\r\n";
//ligne vide indispensable entre type et texte
$texte .= "\r\n";
$texte .= $message."\r\n";
$texte .= "\r\n";
}

//---------------------------------
// 2nde partie du message
// Le fichier
//---------------------------------
{

// penser a convertir le contenu du fichier en une chaîne de caractère
// certe totalement illisible mais sans caractères exotiques
// et avec des retours à la ligne tout les 76 caractères
// pour être conforme au format RFC 2045
$contenu_fichier = chunk_split(base_64_encode(implode("", file($chemin.$fichier))));

// Ne pas oublier que chaque partie du message est séparé par une frontière
$attachement = "--$boundary\r\n";
// Et pour chaque partie on en indique le type
$attachement .= "!content-type:! application/octet-stream; name=\"$fichier\"\r\n";
// Et comment il sera codé
$attachement .= "!content-transfer-encoding:! base_64\r\n";
// Petit plus pour les fichiers joints
// Il est possible de demander à ce que le fichier
// soit si possible affiché dans le corps du mail
//$attachement .= "!content-disposition:! inline;";
//au cas ou on ne souhaite pas voir le fichier dans le corps
$attachement .= "!content-disposition:! attachment;";
$attachement .= " filename=\"$fichier\"\r\n";
// Il est indispensable d'introduire une ligne vide entre l'entête et le texte
$attachement .= "\r\n";
// C'est ici que l'on insère le code du fichier lu
$attachement .= $contenu_fichier . "\r\n";
$attachement .= "\r\n\r\n";
// on indique la fin par une nouvelle frontière
$attachement .= "--$boundary--\r\n";
}

//---------------------------------
// y a plus qu'a!
// mais on evite quand meme la fonction integrée a NPDS, sinon on perd la partie MIME
//---------------------------------
{
global $mail_fonction, $adminmail;
if (($mail_fonction==1) or ($mail_fonction=="")) {
$From_email=$adminmail;
if ($from!="") { $From_email=$from; }
$result=mail($to, $sujet, $texte.$attachement, "Reply-to: $reply\r\n!from:! $From_email\r\nX-Mailer: NPDS\r\n".$mail_mime);
} else {
$pos = strpos($adminmail, "@");
$tomail=substr($adminmail,0,$pos);
$result=email($tomail, $to, $sujet, $texte.$attachement, $tomail, "Reply-to: $reply\r\n!from:! $From_email\r\nX-Mailer: NPDS\r\n".$mail_mime);
}
}





et comme NPDS rajoute des caracteres ds le code, le fichier est ici

et si ca te pose toujours des problemes, recontacte moi par MI, je ne passe pas souvent par ce forum..

(faudrait ptetre ameliorer un poil la fonction integrée send_mail de NPDS...?)

+


Message édité par : hexagone


  Profil  www  Citation   
hexagone
188     

hexagone
  Posté : 19-07-2005 09:41

Salut,

j'ai vu tes fichiers

je crois qu'il y a une petite incomprehension, alors j'aimerais que tu me dises ce que tu voudrais exactement que ca fasse...

A qui doit etre envoyé le mail?
et surtout
Ou se trouve le fichier a attacher (serveur ou client)?

enfin bref, le fonctionnement de ton formulaire...

a+

  Profil  www  Citation   
BlackEagle
51    

BlackEagle
  Posté : 20-07-2005 17:20

Aalut,

Le mail et la piece jointe doivent arriver sur ma boite mail et le fichier à attacher se trouve sur le pc du membre ou du visiteur.

  Profil  www  Citation   
hexagone
188     

hexagone
  Posté : 26-07-2005 16:53

Salut,


bon, c'est bien ce que je pensais, la solution que je t'ai donné part du principe que le fichier est deja sur le serveur, ce qui n'est pas le cas...
mais maintenant je comprends pourquoi tu as mis "upload" en titre du sujet...


alors il faut reprendre un poil (un gros poil) le script.


avant de commencer, voici (il me semble) le fonctionnement classique d'un webmail, en 3 etapes a peu pres
1) selection destinataire, titre, corps du message, selection de fichier sur le client
2) upload et stockage du fichier sur le serveur (+ antivirus au passage pour certains webmail)
3) le serveur renvoie le mail au destinataire avec le contenu du fichier uploadé attaché


donc, il nous manque la partie upload...
je regarde ca, et je reposte ici si jai une solution..

au fait, quelle version de NPDS?


( au passage , tu ne prefererais pas que les utilisateurs utilisent un client mail classique? ce serait plus simple non? )



nb: scuze le temps de reponse, c'est les vacances


Message édité par : hexagone


  Profil  www  Citation   
BlackEagle
51    

BlackEagle
  Posté : 26-07-2005 20:16

Salut,

Y'as pas de soucis pour le temps de réponse, c'est déjà bien gentil de m'aider, et puis il faut profiter de ses vacances.

Je suis sous version NPDS Sable depuis la sortie officielle.

Pour le client mail classique, tu penses à outlook ou ce genre de logiciel ? J'y avais pensé mais je crois que ce n'est pas compatible avec tout les pc, ni tout les FAI (Ex AOL), et je trouve plus sympa que ce soit intégré dans le site.

Pour l'upload sur le site, il y a peut être une solution avec le script d'upload de dodi, car celui çi envoie le fichier sur le site.

  Profil  www  Citation   
hexagone
188     

hexagone
  Posté : 27-07-2005 11:26

oui,

par client mail "classique" je parlais d'outlook ou thunderbird, eudora...
mais pratiquement tous les fournisseurs de boite mail proposent aussi des webmail...

enfin c'est vrai que integré au site ca peut etre plus pratique...

et pour l'upload, il y a deja des solutions integrées aux forums, minisite, sujets....
je regarde ce que je peux faire..

  Profil  www  Citation   
Anonyme
19758  

Anonyme
  Posté : 21-05-2006 19:48

Bonjour,
Ce système m'interesse aussi. Y as-t-il eu une solution avec Sform ?

  Citation   
Achel_Jay
2689       
 

Achel_Jay
  Posté : 02-11-2006 22:58

idem, ca m'interresse aussi, faudrait que ca upload sur le server dans la zone du membre puis que ca envois le mail à partir du server smtp du server (mais bon ca qu on ait un server perso ou pas si y a un server smtp ca doit tourner)

  Profil  E-mail  www  Citation   
Aller à la page : [ 1 | 2 ]
  
Sauter à :

Temps : 0.0284 seconde(s)