AccueilAideRechercherIdentifiez-vousInscrivez-vous

Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
23 Mai 2012 à 04:13:14

Connexion avec identifiant, mot de passe et durée de la session
Rechercher
    avancée

News

Stats
8763 Messages dans 1087 Fils de discussion par 1002 Membres
Dernier membre: emilie
+  PHP Astux
|-+  NewsletTux v. 2
| |-+  NewsletTux 2 fr (fin du support)
| | |-+  [Réglé] v2.0.7 problème d'installation en UTF-8
Pages: [1] 2 3   Bas de page
Imprimer
Auteur Fil de discussion: [Réglé] v2.0.7 problème d'installation en UTF-8  (Lu 27727 fois)
Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« le: 26 Décembre 2007 à 22:43:03 »

Bonjour et Joyeux Noël à tous.

Salut Matthieu,
J'ai vu que tu étais passé en version 2.0.7 et je viens de télécharger la version complète de la zone de téléchargement.

Après installation sur mon site de test (après effacement complète de la version précédente, site et base), la version standard (ISO) s'installe sans problème. Je n'ai pas testé les autres pages.
Etant plutôt intéressé par l'installation en UTF-8, j'ai tout effacé et recommencé l'installation.


  • première constatation (plutôt un oubli): il manque le drapeau pour l'UTF-8 dans
Citation
img/newslettux-fr-UTF-8.png

  • seconde constatation: il est impossible de procéder à l'installation: le charset UTF-8 n'est pas reconnu
    Il faut remplacer la ligne 81 dans admin/install.php
Citation
      echo '   <li><a href="install.php?step=2&amp;charset=utf-8">UTF-8</a></li>'.CR;
    par
Code:
echo ' <li><a href="install.php?step=2&amp;charset=UTF-8">UTF-8</a></li>'.CR;
    (utf-8 est écrit en minuscule pour le charset: il n'a donc pas été reconnu chez moi pour l'installation)


Ce n'est qu'une information pour ceux qui ont un problème d'installation en UTF-8.

Maintenant, je vais faire quelques tests.

A+
« Dernière édition: 11 Février 2008 à 17:07:01 par Andy » Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #1 le: 26 Décembre 2007 à 23:43:31 »

Ah tiens, merci de me le signaler ... Je vais corriger ça. A noter également qu'il est possible d'installer en ISO8859-15 et de passer en UTF8 après dans la config (sous réserve que les templates soient en UTF-8).

Merci, je corrige le pack de suite.

EDIT : je ne comprends pas le coup du drapeau, logiquement le drapeau n'a de rapport qu'avec la langue, pas le Charset.
« Dernière édition: 26 Décembre 2007 à 23:46:28 par Matthieu » Journalisée

Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #2 le: 27 Décembre 2007 à 00:07:26 »

Le drapeau n'a pas d'influence sur l'installation, il n'est pas affiché sur la page de l'installation.

En regardant les propiétés du drapeau, le non est: newslettux-fr-UTF-8.png
J'ai simplement fait une copie du drapeau newslettux-fr.png que j'ai ensuite renommé.

J'ai fais les essais suivants:

  • Inscription d'un abonné, passage de l'abonné en Ecrivain, puis en Admin pour le repasser ensuite en Abonné
  • Envoie d'une lettre en HTML et TEXTE

Les mails réceptionnés ne sont pas au format UTF-8, les accents sont remplacés par la suite de symboles (à=à é=é etc..)
Je suis entrain de regarder le code dans write.php, mais j'ai un doute également à la ligne 37 de class.phpmailer.php

Code:
    var $CharSet           = "iso-8859-15";

Mais je regarderai plus tard.
Dans quelques heures, une grosse journée de travail m'attend.
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #3 le: 27 Décembre 2007 à 00:46:58 »

ça pourrait être en effet bien de la remplacer par
Code:
var $CharSet           = CHARSET;
(variable super globale définie au début de session)

Concernant le drapeau, j'ai trouvé l'erreur, c'est un résidu d'une version qui ne prenait pas en charge l'UTF8 (donc, pas de panique). J'ai corrigé la fonction GetLang dans functions.php pour dédoublonner les fichiers langues :

Code:
function GetLang($langdir)
{
$temp_langs = array();
$temp_lang = array();
$pattern = "(.+)+\.lang\.php";

if ($handle = opendir($langdir))
{
while (false !== ($file = readdir($handle)))
{
if (eregi($pattern, $file))
{
$langfiles[] = $file;
}
}
}
//print_r($langfiles);
//$langfiles = glob($langdir."*lang.php");

if (count($langfiles) > 0)
{
foreach ($langfiles as $lang) // ex. ../languages/common_fr.lang.php
{
$temp = '';
$temp = str_replace($langdir,"",$lang); // common_fr.lang.php
$temp = str_replace('-UTF-8',"",$lang); // common_fr.lang.php
$temp = str_replace(".lang.php","",$temp); // common_fr
$temp_lang = explode("_",$temp); // [0] common [1] fr
//print_r($temp_lang);

if (!array_key_exists($temp_lang[1],$temp_langs))
{
// add lang key
$temp_langs[$temp_lang[1]] = $temp_lang[0].";";
}
else
{
// update lang key
$temp_langs[$temp_lang[1]] .= $temp_lang[0].";";
}
}
//print_r($temp_langs);

// create final lang array only if pack complete (admin, client, common & install files)
$final_lang = array();

foreach($temp_langs as $lang => $files)
{
$files = RemoveLastSeparator($files, ";");
$temp_files = explode(";",$files);
$temp_files = array_unique($temp_files);

asort($temp_files); // alphabetical order
$files = join(';',$temp_files);
if ($files == 'admin;client;common;install')
{
// this lang is "complete"
$final_lang[] = $lang;
}
}
//print_r($final_lang);
return $final_lang;
}
else
{
return array();
}
};

et tout est rentré dans l'ordre.
J'ai aussi rectifié le charset comme marqué dans mon message ici.
Journalisée

Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #4 le: 27 Décembre 2007 à 22:26:44 »

Voila,
Mon doute sur la ligne 37 de lib/class.phpmailer.php se confirme et comme tu l'as écrit,
Après le remplacement de:
Citation
    var $CharSet           = "iso-8859-15";
par:
Code:
var $CharSet           = CHARSET;

Les newslettres sont bien envoyées au format UTF-8 en HTML et TEXTE.

Maintenant, il reste encore à régler le codage UTF-8 des envoies mails lorsqu'on change l'abonné de goupe.
Je vais jeter un oeil dans admin/subscribers.php car la fonction admin_fr-UTF-8.lang.php ne semble pas être appelée.

A+


Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #5 le: 27 Décembre 2007 à 23:54:07 »

Rectificatif:
admin_fr-UTF-8.lang.php est bien pris en compte, seul le mail n'est pas envoyé en UTF-8
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #6 le: 28 Décembre 2007 à 12:17:46 »

Maintenant, il reste encore à régler le codage UTF-8 des envoies mails lorsqu'on change l'abonné de goupe.
Je vais jeter un oeil dans admin/subscribers.php car la fonction admin_fr-UTF-8.lang.php ne semble pas être appelée.
A+

Qu'entends-tu par "changer de groupe" ? Le fait de le passer abonnné/écrivain/admin ?
Si oui, c'est au niveau de la ligne 477 de subscribers.php avec la fonction SendTextMail.(functions.php, ligne 1078). Mais elle est censée envoyer un mail en texte simple ...
Journalisée

Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #7 le: 28 Décembre 2007 à 12:49:13 »

faudrait essayer avec ceci :

Code:
function SendTextMail($recipient, $subject, $message, $sitename, $sender)
{
$headers = 'From: '.Disp($sitename).' <'.$sender.'>' . "\r\n";
$headers .='Reply-To: '.$sender."\r\n";
$headers .='Content-Type: text/plain; charset="'.CHARSET.'"'."\r\n";
$headers .='Content-Transfer-Encoding: 8bit';

$subject = str_replace("&rsquo;","'",$subject);
$subject = str_replace("&quot;",'"',$subject);
$message = str_replace("&rsquo;","'",$message);
$message = str_replace("&quot;",'"',$message);
return mail($recipient,$subject,$message,$headers);
};
« Dernière édition: 30 Décembre 2007 à 16:50:25 par Matthieu » Journalisée

Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #8 le: 28 Décembre 2007 à 20:53:41 »

Il s'agit effectivement du passage abonnné/écrivain/admin et du mail envoyé par la ligne 477 de subscribers.php

J'ai remplacé les lignes que tu as donné de la fonction SendTextMail dans functions.php, mais le résultat est le même,
Il y a d'ailleur une faute dans la ligne ( .$sender'. )
Citation
$headers .='Reply-To: '.$sender'."\r\n";

le texte réceptionné est le texte au format UTF-8 identique au texte de:
subscriber_newstaff_subject, subscribers_sendemail_writer, subscribers_sendemail_subscriber, de admin_fr-UTF-8.lang.php

Voici ce qui est réceptionné:
Citation
Sujet: Inscription de votre adresse au syst&egrave;me de mailing-list

Puis le texte:
Bonjour,
Un administrateur du site XXXXXX vous a inscrit dans le Staff de la newsletter de son site. Vous &egrave;tes Admin et pouvez acc&eacute;der &agrave; l'interface d'administration via l'adresse http://XXXXXXXXX/ en utilisant votre email comme login, ainsi que ce mot de passe : mm7MOvdXLI
A bient&ocirc;t !
Andy

Pour éviter de chercher trop longtemps, je me demande si je ne vais pas tout simplement remplacer les lignes:
subscriber_newstaff_subject, subscribers_sendemail_writer, subscribers_sendemail_subscriber, de admin_fr-UTF-8.lang.php
par les lignes:
subscriber_newstaff_subject, subscribers_sendemail_writer, subscribers_sendemail_subscriber, de admin_fr.lang.php
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #9 le: 30 Décembre 2007 à 16:50:11 »

et avec un décode ?

les headers spécifiés au dessus + ceci :
Code:
function SendTextMail($recipient, $subject, $message, $sitename, $sender)
{
$headers = 'From: '.Disp($sitename).' <'.$sender.'>' . "\r\n";
$headers .='Reply-To: '.$sender."\r\n";
$headers .='Content-Type: text/plain; charset="'.CHARSET.'"'."\r\n";
$headers .='Content-Transfer-Encoding: 8bit';

$subject = str_replace("&rsquo;","'",$subject);
$subject = str_replace("&quot;",'"',$subject);
$message = str_replace("&rsquo;","'",$message);
$message = str_replace("&quot;",'"',$message);

if (CHARSET == 'UTF-8')
{
$message = html_entity_decode($message);
}
return mail($recipient,$subject,$message,$headers);
};
PS : apostrophe en trop au niveau de sender corrigée
Journalisée

Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #10 le: 30 Décembre 2007 à 18:12:12 »

Ne fonctionne pas, les accents ont tous disparus

Voici ce qui est réceptionné:
Citation
Sujet: Inscription de votre adresse au syst&egrave;me de mailing-list

Puis le texte:
Bonjour,
Un administrateur du site XXXXXX vous a dsinscrit du Staff de la newsletter de son site. Vous tes  prsent Abonn et ne pouvez plus accder  l'interface d'administration de son site.
A bientt !
Andy

Si on retrouve les accents, il faudra également traiter le sujet:
Code:
if (CHARSET == 'UTF-8')
{
$subject= html_entity_decode($subject);
$message = html_entity_decode($message);
}

Pour comprende ce qui ce passe lors de l'envoi du mail, javais fais des essais avec decode et encode.

Avec le texte original (subscriber_newstaff_subject, subscribers_sendemail_writer, subscribers_sendemail_subscriber, de admin_fr-UTF-8.lang.php)

Puis en trichant un peu, en remplaçant les lignes de texte dans admin_fr-UTF-8.lang.php, (subscriber_newstaff_subject, subscribers_sendemail_writer, subscribers_sendemail_subscriber) par ceux venant de admin_fr.lang.php. (donc non codé UTF-8)

Voici ce qui est réceptionné:
Citation
Sujet: Inscription de votre adresse au système de mailing-list

Puis le texte:
Bonjour,
Un administrateur du site XXXXXX vous a désinscrit du Staff de la newsletter de son site. Vous êtes à présent Abonn&eacute; et ne pouvez plus accéder à l'interface d'administration de son site.
A bientôt !
Andy

Abonn&eacute; (Abonné) n'a pas été écrit correctement.
Reste à savoir pourquoi le codage utf-8 ne fonctionne pas lors de cet envoie.

Je continue à chercher ma solution, mais également de retrouver les accents avec ton code.

Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #11 le: 30 Décembre 2007 à 19:07:06 »

Je viens de tester la fonction d'inscription et désinscription suite au message de POVOF, car, je ne l'avait pas encore utilisée et n'ai pas eu de mails me signallant un disfonctionnement.

Les mails que j'ai reçu (toujours en UTF-8), sont tous sans les accents.

Je vais voir le code dans form-newslettux.php pour voir comment ça fonctionne, car chez moi l'inscription et la désinscription fonctionne correctement.
L'erreur doit venir de l'inclusion de form-newslettux.php dans la page de son site et l'accès à la base de donnée sql??
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #12 le: 30 Décembre 2007 à 23:59:53 »

Matthieu, je pense avoir trouvé, chez moi ça fonctionne.
A verifier!

J'ai remplacé ton code: fonction SendTextMail.(functions.php, ligne 1078).
Citation
   function SendTextMail($recipient, $subject, $message, $sitename, $sender)
   {
      $headers = 'From: '.Disp($sitename).' <'.$sender.'>' . "\r\n";
      $headers .='Reply-To: '.$sender."\r\n";
      $headers .='Content-Type: text/plain; charset="'.CHARSET.'"'."\r\n";
      $headers .='Content-Transfer-Encoding: 8bit';

      $subject = str_replace("&rsquo;","'",$subject);
      $subject = str_replace("&quot;",'"',$subject);
      $message = str_replace("&rsquo;","'",$message);
      $message = str_replace("&quot;",'"',$message);

      if (CHARSET == 'UTF-8')
      {
         $subject = html_entity_decode($subject);
         $message = html_entity_decode($message);
      }
      return mail($recipient,$subject,$message,$headers);
   };

Par:
Code:
function SendTextMail($recipient, $subject, $message, $sitename, $sender)
{
$headers = 'From: '.Disp($sitename).' <'.$sender.'>' . "\r\n";
$headers .='Reply-To: '.$sender."\r\n";
if (CHARSET == 'UTF-8')
{
$headers .='Content-Type: text/plain; charset="ISO-8859-15"'."\r\n";
}
else
{
$headers .='Content-Type: text/plain; charset="'.CHARSET.'"'."\r\n";
}
$headers .='Content-Transfer-Encoding: 8bit';

$subject = str_replace("&rsquo;","'",$subject);
$subject = str_replace("&quot;",'"',$subject);
$message = str_replace("&rsquo;","'",$message);
$message = str_replace("&quot;",'"',$message);

if (CHARSET == 'UTF-8')
{
$subject = html_entity_decode($subject);
$message = html_entity_decode($message);
}
return mail($recipient,$subject,$message,$headers);
};

Les accents sont également présents dans les mails d'inscriptions et de désinscriptions.
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #13 le: 31 Décembre 2007 à 01:58:08 »

tu envoies un mail en ISO-8859-15 avec un charset UTF-8 ? Ah oui, si tu décodes les accents ...
Je vais me pencher dessus ...
Journalisée

Andy
Modérateur Global
Membre Senior
*
Sexe: Homme
Messages: 482



« Répondre #14 le: 31 Janvier 2008 à 23:54:58 »

Je viens de tester le lien Voir cette lettre d'information sur le site... du mail reçu de ma newsletter (je ne l'avais pas encore testé en utf-8)

Sur la page du site (.../newslettux_rss.php?type=HTML&pid=1&nid=X), le texte n'est pas en utf-8

Je vais regarder le code et vous tient informé.
Journalisée

Gros Travaux de restaurations maison durant quelques mois. Accès à internet perturbé durant cette période.
Pages: [1] 2 3   Haut de page
Imprimer
Aller à:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines
Amber design by Bloc | XHTML | CSS