PhpMyNewsLetter 2.0

Support et annonces PhpMyNewsLetter.

Vous n'êtes pas identifié(e).

Annonce

Pour me permettre de mieux vous aider au mieux, merci d'être le plus précis possible en donnant :
- la version de phpmynewsletter utilisée
- votre hébergement : personnel, dédié, mutualisé
- votre hébergeur (OVH, free, Infomaniak, 1and1,...)
- votre OS : linux, windows
- version de PHP (5.3, 5.6, 7.0, hhvm...)
Toutes les réponses à mes questions qui sont sans retour de votre part seront considérées comme résolues !

#126 Re : Support général » [Résolu] phpmynewsletter 2.0.5 & php 7.2 ?? » 15-12-2018 22:09:30

Dans le fichier _loader.php à la racine de ton installation, tu mets ce code en remplacement du code existant :

<?php
include( 'include/config.php' );
if( $type_env=='dev' ) { 
	error_reporting(E_ALL);
	ini_set('display_errors',1);
} else {
	error_reporting(0);
	ini_set("display_errors",0);
}
ini_set('mail.add_x_header','Off');
$_SESSION['timezone'] = $timezone;
$popup = false;
$display_archive = false;
include( 'include/db/db_connector.inc.php' );
include_once( 'include/lib/pmn_fonctions.php' );
if( $type_serveur=='dedicated' ) {
	$cnx->query( "SET sql_mode = '';" );
}

Ca n'afficherra plus rien en 7.2  wink

#127 Re : Support général » [Résolu] phpmynewsletter 2.0.5 & php 7.2 ?? » 15-12-2018 22:09:30

Exactement !
Comme tu peux les désactiver.
Et les erreurs en warning n indiquent aucune incompatibilité

#128 Re : Support général » [Résolu] phpmynewsletter 2.0.5 & php 7.2 ?? » 15-12-2018 22:09:30

Bonjour Totorigolo56,

C'est plus compliqué que ça la verbosité !
Mais ton jugement est plutôt hatif, car si, pmnl est bien compatible php 7.x
Les warnings sont juste informatifs.
Par contre, si ça s'affiche maintenant ça veut dire que la verbosuté de ton php.ini a changé !

#129 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

Pour info le fichier index dans une directory n est pas obligatoire ça peut se gérer via htaccess

Le cron OVH fera l objet d un script en 2.0.6 mais c est complexe à gérer !!!

#130 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

Après moultes manipulations, je confirme le bug sur dédié et mutualisé !
Dans le fichier _loader.php, il manque un "=" qui générait une affectation plutot qu'un test !

if( $type_serveur=='dedicated' ) {
	$cnx->query( "SET sql_mode = '';" );
}

Je corrige l'ensemble et republierai une version complète après d'autres tests.

#131 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

Ouh que non ! Pas de tâhce cron disponible en dynamique en mutualisé !
Après il doit y avoir un souci de cache, ça se produit assez souvent, mais en vrai dédié, y'a jamais de problème.

#132 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

Bonjour,

J'ai réussi à reproduire le scénario qui plantait.
Les erreurs sont corrigées, il faut donc retélécharger l'archive complète et poser les fichiers en remplacement.
Sinon, les fichiers affectés sont :
/op.php
/include/globalconf.php

Si tu veux juste modifier ces 2 fichiers, faire un copier coller des sources ci-dessous :

op.php :

<?php
$op_true = array(
    'createConfig',
    'init',
    'preview',
    'SaveConfig',
    'saveGlobalconfig',
    'send_preview',
    'subscriber_add',
    'subscriber_del',
    'subscriber_del_temp',
    'val_subscriber_temp',
    'subscriber_import',
    'subscriber_mass_delete',
    'smtp_add',
    'smtp_del',
    'smtp_mod',
    'smtp_maj',
    'modifySender',
    'addSender',
    'delSender',
    'modifyUser',
    'addUser',
    'delUser'
);
if(in_array($op,$op_true)){
    switch($op){
        case 'SaveConfig':
            $save=saveModele($cnx,$_POST['list_id'],$row_config_globale['table_listsconfig'],$_POST['newsletter_name'],
                                  $_POST['from'],$_POST['from_name'],$_POST['subject'],$_POST['header'],$_POST['footer'],
                                  $_POST['subscription_subject'],$_POST['subscription_body'],$_POST['welcome_subject'],
                                  $_POST['welcome_body'],$_POST['quit_subject'],$_POST['quit_body'],$_POST['preview_addr']);
        break;
        case 'createConfig':
            $new_id=createNewsletter($cnx,$row_config_globale['table_listsconfig'],$_POST['newsletter_name'],$_POST['from'],
                                  $_POST['from_name'],$_POST['subject'],$_POST['header'],$_POST['footer'],
                                  $_POST['subscription_subject'],$_POST['subscription_body'],$_POST['welcome_subject'],
                                  $_POST['welcome_body'],$_POST['quit_subject'],$_POST['quit_body'],$_POST['preview_addr']);
            if($new_id > 0){
                $list_id=$new_id;
                $l='l';
            }
        break;
        case 'saveGlobalconfig':
            $smtp_host =(isset($_POST['smtp_host'])?$_POST['smtp_host']:'');
            $smtp_port =(isset($_POST['smtp_port'])?$_POST['smtp_port']:'');
            $smtp_auth =(isset($_POST['smtp_auth'])?$_POST['smtp_auth']:0);
            $smtp_login=(isset($_POST['smtp_login'])?$_POST['smtp_login']:'');
            $smtp_pass =(isset($_POST['smtp_pass'])?$_POST['smtp_pass']:'');
            $mod_sub   =(isset($_POST['mod_sub'])?$_POST['mod_sub']:0);
            $timezone  =(isset($_POST['timezone'])?$_POST['timezone']:'');
            $timer_ajax=(isset($_POST['timer_ajax'])?$_POST['timer_ajax']:10);
            $timer_cron=(isset($_POST['timer_cron'])?$_POST['timer_cron']:3);
            $free_id   =(isset($_POST['free_id'])?$_POST['free_id']:'');
            $free_pass =(isset($_POST['free_pass'])?$_POST['free_pass']:'');
            $key_dkim  =(isset($_POST['key_dkim'])?$_POST['key_dkim']:'');
            $nb_backup =(isset($_POST['nb_backup'])?$_POST['nb_backup']:5);
            $end_task  =(isset($_POST['end_task'])?$_POST['end_task']:0);
            $end_task_sms=(isset($_POST['end_task_sms'])?$_POST['end_task_sms']:0);
            $sub_validation_sms=(isset($_POST['sub_validation_sms'])?$_POST['sub_validation_sms']:0);
            $unsub_validation_sms=(isset($_POST['unsub_validation_sms'])?$_POST['unsub_validation_sms']:0);
            $alert_unsub=(isset($_POST['alert_unsub'])?$_POST['alert_unsub']:'');
            $loader    =(isset($_POST['loader'])?$_POST['loader']:1);
            $menu      =(isset($_POST['menu'])?$_POST['menu']:'hz');
            if(saveConfig($cnx,$_POST['table_config'],$_POST['admin_pass'],50,$_POST['base_url'],$_POST['path'],$_POST['language'],
                               $_POST['table_email'],$_POST['table_temp'],$_POST['table_listsconfig'],$_POST['table_archives'],
                               $_POST['sending_method'],$smtp_host,$smtp_port,$smtp_auth,$smtp_login,$smtp_pass,$_POST['sending_limit'],
                               $_POST['validation_period'],$_POST['sub_validation'],$_POST['unsub_validation'],$_POST['admin_email'],
                               $_POST['admin_name'],$_POST['mod_sub'],$_POST['table_sub'],$_POST['charset'],$_POST['table_track'],
                               $_POST['table_send'],$_POST['table_sauvegarde'],$_POST['table_upload'],$_POST['table_email_deleted'],
                               $_POST['table_senders'],$_POST['alert_sub'],$_POST['active_tracking'])){
                $configSaved=true;
                $row_config_globale = $cnx->SqlRow("SELECT * FROM $table_global_config");
            }else{
                $configSaved=false;
            }
            if($_POST['file']==1){
                $configFile =saveConfigFile($PMNL_VERSION,$_POST['db_host'],$_POST['db_login'],
                                            $_POST['db_pass'],$_POST['db_name'],
                                            $_POST['table_config'],$_POST['db_type'],
                                            $_POST['type_serveur'],$_POST['type_env'],
                                            $timezone, $_POST['code_mailtester'],
                                            $timer_ajax,$timer_cron,$free_id,$free_pass,
                                            $end_task,$end_task_sms,$sub_validation_sms,
                                            $unsub_validation_sms,$alert_unsub,
                                            $nb_backup,$key_dkim,$loader,$menu);
            }
            saveBounceFile($_POST['bounce_host'],$_POST['bounce_user'],$_POST['bounce_pass'],$_POST['bounce_port'],
                           $_POST['bounce_service'],$_POST['bounce_option'],$_POST['bounce_mail']);
            include("include/config.php");
            $row_config_globale = $cnx->SqlRow("SELECT * FROM $table_global_config");
        break;
        case 'subscriber_add':
            $add_addr = (empty($_POST['add_addr']) ? "" : $_POST['add_addr']);
            if(!empty($add_addr)&& validEmailAddress($add_addr) ){
                if(preg_match('/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/', $add_addr)){
                    $add_r=add_subscriber($cnx,$row_config_globale['table_email'],$list_id,$add_addr,$row_config_globale['table_email_deleted']);
                    if($add_r==0){
                        $subscriber_op_msg_a = "<h4 class='alert alert-danger'>".tr("ERROR_ADDING_SUBSCRIBER"," <b>$add_addr</b>").".</h4>";
                    }else if($add_r==-1){
                        $subscriber_op_msg_a = "<h4 class='alert alert-danger'>".tr("ERROR_ALREADY_SUBSCRIBER", "<b>$add_addr</b>").".</h4>";
                    }else if($add_r==2){
                        $subscriber_op_msg_a = "<h4 class='alert alert-success'>".tr("SUBSCRIBER_ADDED", "<b>$add_addr</b>").".</h4>";
                    }else if($add_r==3){
                        $subscriber_op_msg_a = "<h4 class='alert alert-danger'>".tr("SUBSCRIBER_WITH_MAIL_DELETED", "<b>$add_addr</b>")."</h4>";
                    }
                } else {
                    $subscriber_op_msg_a = "<h4 class='alert alert-danger'>".tr("ERROR_SUPPLY_VALID_EMAIL")."</h4>";
                }
            } else {
                $subscriber_op_msg_a = "<h4 class='alert alert-danger'>".tr("ERROR_SUPPLY_VALID_EMAIL")."</h4>";
            }
        break;
        case 'subscriber_del':
            $del_addr = (empty($_POST['del_addr']) ? "" : $_POST['del_addr']);
            $deleted = delete_subscriber($cnx,$row_config_globale['table_email'],$list_id,$del_addr,$row_config_globale['table_email_deleted'],'by_admin');
            if($deleted){
                $subscriber_op_msg_d = "<h4 class='alert alert-success'>".tr("SUBSCRIBER_DELETED","<b>$del_addr</b>")."</h4>";
            }else{
                $subscriber_op_msg_d = "<h4 class='alert alert-danger'>".tr("ERROR_DELETING_SUBSCRIBER","<b>$del_addr</b>")."</h4>";
            }
        break;
        case 'subscriber_del_temp':
            $del_tmpaddr  = (empty($_POST['TmpUserAdress']) ? "" : $_POST['TmpUserAdress']);
            $deleted_temp = delete_subscriber_tmp($cnx,$row_config_globale['table_temp'],$list_id,$del_tmpaddr,$row_config_globale['table_email_deleted'],'by_admin');
            if( $deleted_temp ){
                $subscriber_op_msg_dt =  "<h4 class='alert alert-success'>".tr("SUBSCRIBER_TEMP_DELETED")."</h4>";
            }else{
                $subscriber_op_msg_dt =  "<h4 class='alert alert-danger'>".tr("ERROR_DELETING_TEMP","<i>$del_tmpaddr</i>")."</h4>";
            }
        break;
        case 'val_subscriber_temp':
            $force_tmpaddr = (empty($_POST['TmpUserAdress']) ? "" : $_POST['TmpUserAdress']);
            if (!validEmailAddress($force_tmpaddr)) {
                $deleted_temp = delete_subscriber($cnx,$row_config_globale['table_temp'],$list_id,$force_tmpaddr,$row_config_globale['table_email_deleted'],'hard');
                $subscriber_op_msg_dt =  "<h4 class='alert alert-danger'>".tr("ERROR_ADDING_SUBSCRIBER_TEMP","<i>$force_tmpaddr</i>")."</h4>";
            } else {
                $added_temp = force_subscriber($cnx,$row_config_globale['table_temp'],$list_id,$force_tmpaddr,$row_config_globale['table_email'],unique_id($force_tmpaddr));
                if( $added_temp ){
                    $subscriber_op_msg_dt =  "<h4 class='alert alert-success'>".tr("SUBSCRIBER_TEMP_FORCE_ADDED")." : $force_tmpaddr</h4>";
                }else{
                    $subscriber_op_msg_dt =  "<h4 class='alert alert-danger'>".tr("ERROR_ADDING_SUBSCRIBER_TEMP","<i>$force_tmpaddr</i>")."</h4>";
                }
            }
        break;
        case 'subscriber_import':
            @set_time_limit(300);
            $import_file = (!empty($_FILES['import_file']) ? $_FILES['import_file'] : "");
            if (!empty($import_file) && $import_file != "none" && $import_file['size'] > 0 && is_uploaded_file($import_file['tmp_name'])){
                $tmp_subdir_writable = true;
                $open_basedir = @ini_get('open_basedir');
                if (!empty($open_basedir)){
                    $tmp_subdir="./upload/";
                    $local_filename = $tmp_subdir.basename($import_file['tmp_name']);
                    move_uploaded_file($import_file['tmp_name'], $local_filename);
                    $liste = fopen($local_filename, 'r');
                } else{
                    $liste = fopen($import_file['tmp_name'], 'r');
                }
                if($tmp_subdir_writable){
                    $tx_import = 0;
                    $tx_error  = 0;
                    while (!feof($liste)){    
                        $mail_importe = fgets($liste, 4096);
                        preg_match_all('/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/i', $mail_importe, $found_mails);
                        foreach ($found_mails[0] as $mail_importe){
                            if(strlen($mail_importe)==2){
                                // dummy and pretty function ;-) yeah !
                            }else{
                                $mail_importe = str_replace("'","",$mail_importe);
                                $mail_importe = str_replace('"',"",$mail_importe);
                                $mail_importe = strtolower(trim($mail_importe));
                                if(!empty($mail_importe)){
                                    $added=add_subscriber($cnx,$row_config_globale['table_email'],$list_id,$mail_importe,$row_config_globale['table_email_deleted']);
                                    if($added==-1){
                                        $subscriber_op_msg_i .= "<h4 class='alert alert-danger'>".tr("ERROR_ALREADY_SUBSCRIBER", "<b>$mail_importe</b>").".</h4>";
                                        $tx_error++;
                                    }elseif($added==2){
                                        $subscriber_op_msg_i .= "<h4 class='alert alert-success'>".tr("SUBSCRIBER_ADDED", "<b>$mail_importe</b>").".</h4>";
                                        $tx_import++;
                                    }elseif($added==0){
                                        $subscriber_op_msg_i .= "<h4 class='alert alert-danger'>".tr("ERROR_SQL") . "</h4>";
                                        $tx_error++;
                                    }elseif($added==3){
                                        $subscriber_op_msg_i .= "<h4 class='alert alert-danger'>".tr("EMAIL_ON_DELETED_LIST", "<b>$mail_importe</b>")."</h4>";
                                        $tx_error++;
                                    }
                                } else {
                                    $subscriber_op_msg_i .= "<h4 class='alert alert-danger'>".tr("INVALID_MAIL")." : ".$mail_importe."</h4>";
                                    $tx_error++;
                                }
                            }
                        }
                    }
                    $subscriber_op_msg_i .= "<h4 class='alert alert-success'><b>$tx_import ".tr("MAIL_ADDED")."</b></h4>";
                    $subscriber_op_msg_i .= "<h4 class='alert alert-danger'><b>$tx_error ".tr("MAIL_ADDED_ERROR")."</b></h4>";
                } else{
                    $subscriber_op_msg_i = "<h4 class='alert alert-danger'>".tr("ERROR_IMPORT_TMPDIR_NOT_WRITABLE")." !</h4>";
                }
            }else{
                $subscriber_op_msg_i = "<h4 class='alert alert-danger'>".tr("ERROR_IMPORT_FILE_MISSING")." !</h4>";
            }
        break;
        case 'subscriber_mass_delete':
            @set_time_limit(300);
            $import_file = (!empty($_FILES['import_file']) ? $_FILES['import_file'] : "");
            if (!empty($import_file) && $import_file != "none" && $import_file['size'] > 0 && is_uploaded_file($import_file['tmp_name'])){
                $tmp_subdir_writable = true;
                $open_basedir = @ini_get('open_basedir');
                if (!empty($open_basedir)){
                    $tmp_subdir="./upload/";
                    $local_filename = $tmp_subdir.basename($import_file['tmp_name']);
                    move_uploaded_file($import_file['tmp_name'], $local_filename);
                    $liste = fopen($local_filename, 'r');
                } else{
                    $liste = fopen($import_file['tmp_name'], 'r');
                }
                if($tmp_subdir_writable){
                    $tx_import = 0;
                    $tx_error  = 0;
                    while (!feof($liste)){    
                        $del_addr = fgets($liste, 4096);
                        preg_match_all('/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}/i', $del_addr, $found_mails);
                        foreach ($found_mails[0] as $del_addr){
                            if(strlen($del_addr)==2){
                                // dummy and pretty function ;-) yeah !
                            }else{
                                $del_addr = str_replace("'","",$del_addr);
                                $del_addr = str_replace('"',"",$del_addr);
                                $del_addr = strtolower(trim($del_addr));
                                if(!empty($del_addr)&&validEmailAddress($del_addr)){
                                    $deleted = delete_subscriber($cnx,$row_config_globale['table_email'],$list_id,$del_addr,$row_config_globale['table_email_deleted'],'by_admin');
                                    if($deleted == true){
                                        //$subscriber_op_msg_md = "<h4 class='alert alert-success'>".tr("SUBSCRIBER_DELETED","<b>$del_addr</b>")."</h4>";
                                        $tx_import++;
                                    }elseif($deleted == false){
                                        //$subscriber_op_msg_md = "<h4 class='alert alert-danger'>".tr("ERROR_DELETING_SUBSCRIBER","<b>$del_addr</b>")."</h4>";
                                        $tx_error++;
                                    }elseif($deleted == 5){
                                        $subscriber_op_msg_md = "<h4 class='alert alert-danger'>".tr("ERROR_DELETING_SUBSCRIBER_NOT_IN_LIST","<b>$del_addr</b>")."</h4>";
                                        $tx_error++;
                                    }
                                } else {
                                    $subscriber_op_msg_md .= "<h4 class='alert alert-danger'>".tr("INVALID_MAIL")." : ".$del_addr."</h4>";
                                    $tx_error++;
                                }
                            }
                        }
                    }
                    $subscriber_op_msg_md .= "<h4 class='alert alert-success'><b>$tx_import ".tr("MAIL_MASS_DELETED")."</b></h4>";
                    $subscriber_op_msg_md .= "<h4 class='alert alert-danger'><b>$tx_error ".tr("MAIL_ADDED_ERROR")."</b></h4>";
                } else{
                    $subscriber_op_msg_md = "<h4 class='alert alert-danger'>".tr("ERROR_IMPORT_TMPDIR_NOT_WRITABLE")." !</h4>";
                }
            }else{
                $subscriber_op_msg_md = "<h4 class='alert alert-danger'>".tr("ERROR_IMPORT_FILE_MISSING")." !</h4>";
            }
        break;
        case 'smtp_add':
            $smtp_name   =(isset($_POST['smtp_name'])?$cnx->CleanInput($_POST['smtp_name']):'');
            $smtp_url    =(isset($_POST['smtp_url'])?$cnx->CleanInput($_POST['smtp_url']):'');
            $smtp_user   =(isset($_POST['smtp_user'])?$cnx->CleanInput($_POST['smtp_user']):'');
            $smtp_pass   =(isset($_POST['smtp_pass'])?$cnx->CleanInput($_POST['smtp_pass']):'');
            $smtp_port   =(isset($_POST['smtp_port'])?$cnx->CleanInput($_POST['smtp_port']):'');
            $smtp_secure =(isset($_POST['smtp_secure'])?$cnx->CleanInput($_POST['smtp_secure']):'');
            $smtp_limite =(isset($_POST['smtp_limite'])?$cnx->CleanInput($_POST['smtp_limite']):'');
            if($smtp_limite==0 || $smtp_limite==''){
                $smtp_limite=1800;
            }
            $cpt_already_exist = $cnx->SqlRow('SELECT * FROM '.$row_config_globale['table_smtp'].' 
                                                WHERE smtp_url="'.$smtp_url.'" 
                                                  AND smtp_port="'.$smtp_port.'"
                                                  AND smtp_user="'.$smtp_user.'"
                                                  AND smtp_pass="'.$smtp_pass.'"');
            if($cpt_already_exist==0){
                if($cnx->query("INSERT INTO ".$row_config_globale['table_smtp']
                           ." (smtp_name,smtp_url,smtp_user,smtp_pass,smtp_port,smtp_secure,smtp_limite,smtp_used,smtp_date_create,smtp_date_update)
                            VALUES ( '$smtp_name','$smtp_url','$smtp_user','$smtp_pass','$smtp_port','$smtp_secure','$smtp_limite',0,NOW(),NOW() )")){
                    $smtp_manage_msg = "<h4 class='alert alert-success'>Serveur smtp ajouté correctement !</h4>";
                    $daylog = @fopen('logs/daylog-' . date("Y-m-d") . '.txt', 'a+');
                    $daylogmsg= date("Y-m-d H:i:s") . " : ajout serveur smtp : '$smtp_name','$smtp_url','$smtp_limite'\n";
                    fwrite($daylog, $daylogmsg, strlen($daylogmsg));
                    fclose($daylog);
                } else {
                    $smtp_manage_msg = "<h4 class='alert alert-danger'>Ajout du serveur smtp en erreur !</h4>";
                }
            } else {
                $smtp_manage_msg = "<h4 class='alert alert-danger'>Serveur smtp déjà connu !</h4>";
            }
        break;
        case 'smtp_del':
            if($cnx->query("DELETE FROM ".$row_config_globale['table_smtp']." WHERE smtp_id=$smtp_id")){
                $smtp_manage_msg = "<h4 class='alert alert-success'>Suppression correcte du serveur smtp !</h4>";
                $daylog = @fopen('logs/daylog-' . date("Y-m-d") . '.txt', 'a+');
                $daylogmsg= date("Y-m-d H:i:s") . " : suppression du serveur smtp $smtp_id\n";
                fwrite($daylog, $daylogmsg, strlen($daylogmsg));
                fclose($daylog);
                @unlink('logs/smtp-'.$smtp_id.'.txt');
            } else {
                $smtp_manage_msg = "<h4 class='alert alert-danger'>Suppression du serveur smtp en erreur !</h4>";
            }
        break;
        case 'smtp_mod':
        break;
        case 'smtp_maj':
            $smtp_id     =(isset($_POST['smtp_id'])?$cnx->CleanInput($_POST['smtp_id']):'');
            $smtp_url    =(isset($_POST['smtp_url'])?$cnx->CleanInput($_POST['smtp_url']):'');
            $smtp_user   =(isset($_POST['smtp_user'])?$cnx->CleanInput($_POST['smtp_user']):'');
            $smtp_pass   =(isset($_POST['smtp_pass'])?$cnx->CleanInput($_POST['smtp_pass']):'');
            $smtp_port   =(isset($_POST['smtp_port'])?$cnx->CleanInput($_POST['smtp_port']):'');
            $smtp_secure =(isset($_POST['smtp_secure'])?$cnx->CleanInput($_POST['smtp_secure']):'');
            $smtp_limite =(isset($_POST['smtp_limite'])?$cnx->CleanInput($_POST['smtp_limite']):'');
            if($cnx->query("UPDATE ".$row_config_globale['table_smtp']." 
            	                SET smtp_url='$smtp_url' , smtp_user='$smtp_user' , smtp_pass='$smtp_pass',
            	                    smtp_port='$smtp_port' , smtp_secure='$smtp_secure' , smtp_limite='$smtp_limite'
            	            WHERE smtp_id=$smtp_id")){
                $smtp_manage_msg = "<h4 class='alert alert-success'>Mise à jour correcte du serveur smtp !</h4>";
                $daylog = @fopen('logs/daylog-' . date("Y-m-d") . '.txt', 'a+');
                $daylogmsg = date("Y-m-d H:i:s") . " : mise à jour du serveur smtp $smtp_id\n";
                $daylogmsg .= "Nouveaux paramètres :\n HOST : $smtp_url\nUSER : $smtp_user\nPASS : *******\n$PORT : $smtp_port\nSECURE : $smtp_secure\LIMITE : $smtp_limite\n";
                fwrite($daylog, $daylogmsg, strlen($daylogmsg));
                fclose($daylog);
            } else {
                $smtp_manage_msg = "<h4 class='alert alert-danger'>Mise àjour du serveur smtp en erreur !</h4>";
            }
        break;
        default:
        break;
    }
} else{
    $op = '';
}

Et /include/globalconf.php :

<?php
if ($op == "saveGlobalconfig") {
	if ($configSaved) {
		echo "<h4 class='alert alert-success'>" . tr("GCONFIG_SUCCESSFULLY_SAVED") . ".</h4>";
		if ($_POST['file'] == 1 && !$configFile){
			echo "<h4 class='alert alert-danger'>" . tr("UNABLE_WRITE_CONFIG") .".</h4>";
		}
	} else {
		if ($configFile == -1){
			echo "<h4 class='alert alert-danger'>" . tr("UNABLE_WRITE_CONFIG") .".</h4>";
		} else if ($file == 1){
			echo "<h4 class='alert alert-danger'>" . tr("ERROR_WHILE_SAVING_CONFIGURATION") . "</h4>";
		}
	}
}

include 'include/lib/constantes.php';

echo "<form method='post' name='global_config' enctype='multipart/form-data'>";
echo "<header><h4 class='tabs_involved'>" . tr('GCONFIG_TITLE') . "</h4></header>
<div class='row'>
	<div class='col-md-10'>
		<div id='rootwizard'>
			<div class='navbar'>
				<div class='navbar-inner'>
					<div class='container'>
						<ul>
							<li><a href='#tab1' data-toggle='tab'>" . tr('INSTALL_DB_TITLE') . "</a></li>
							<li><a href='#tab2' data-toggle='tab'>" . tr('INSTALL_ENVIRONMENT') . "</a></li>
							<li><a href='#tab3' data-toggle='tab'>" . tr('INSTALL_MESSAGE_SENDING_TITLE') . "</a></li>
							<li><a href='#tab4' data-toggle='tab'>" . tr('BOUNCE') . "</a></li>
							<li><a href='#tab5' data-toggle='tab'>" . tr('GCONFIG_SUBSCRIPTION_TITLE') . "</a></li>
							<li><a href='#tab7' data-toggle='tab'>DKIM, SPF et DMARC</a></li>
							<li><a href='#tab6' data-toggle='tab'>" . tr('GCONFIG_MISC_TITLE') . "</a></li>
						</ul>
					</div>
				</div>
			</div>
			<div class='tab-content'>
				<div id='tab1' class='tab-pane'>
					<div class='module_content'>
						<h4>" . tr('GCONFIG_DB_TITLE'). "</h4>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_DB_HOST" ) . "</label>
								<input type='hidden' name='file' value='1'><input class='form-control' type='text' name='db_host' value='" . htmlspecialchars($hostname) . "' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_DB_DBNAME" ) . "</label>
								<input class='form-control' type='text' name='db_name' value='" . htmlspecialchars($database) . "' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("INSTALL_DB_TYPE" ) . "</label><br>
									<select name='db_type' class='selectpicker' data-width='auto'>
									<option value='mysql' selected>MySQL</option>
									</select>
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_LOGIN" ) . "</label>
									<input class='form-control' type='text' name='db_login' value='" . htmlspecialchars($login) . "' />
								</div>
							</div>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_PASSWD" ) . "</label>
									<input class='form-control' type='password' name='db_pass' value='" . htmlspecialchars($pass) . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_CONFIG_TABLE" ) . "</label>
									<input class='form-control' type='text' name='table_config' value='" . htmlspecialchars($table_global_config) . "' />
								</div>
							</div>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_MAIL" ) . "</label>
									<input class='form-control' type='text' name='table_email' value='" . htmlspecialchars($row_config_globale['table_email']) . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_TEMPORARY" ) . "</label>
									<input class='form-control' type='text' name='table_temp' value='" . htmlspecialchars($row_config_globale['table_temp']) . "' />
								</div>
							</div>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_NEWSCONFIG" ) . "</label>
									<input class='form-control' type='text' name='table_listsconfig' value='" . htmlspecialchars($row_config_globale['table_listsconfig']) . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_ARCHIVES" ) . "</label>
									<input class='form-control' type='text' name='table_archives' value='" . htmlspecialchars($row_config_globale['table_archives']) . "' />
								</div>
							</div>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_SUBMOD" ) . "</label>
									<input class='form-control' type='text' name='table_sub' value='" . htmlspecialchars($row_config_globale['mod_sub_table']) . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_TRACK" ) . "</label>
									<input class='form-control' type='text' name='table_track' value='" . htmlspecialchars($row_config_globale['table_tracking']) . "' />
								</div>
							</div>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_SEND" ) . "</label>
									 <input class='form-control' type='text' name='table_send' value='" . htmlspecialchars($row_config_globale['table_send']) . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_SV" ) . "</label>
									<input class='form-control' type='text' name='table_sauvegarde' value='" . htmlspecialchars($row_config_globale['table_sauvegarde']) . "' />
								</div>
							</div>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_UPLOAD" ) . "</label>
									<input class='form-control' type='text' name='table_upload' value='" . htmlspecialchars($row_config_globale['table_upload']) . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_DB_TABLE_MAIL_DELETED" ) . "</label>
									<input class='form-control' type='text' name='table_email_deleted' value='" . htmlspecialchars($row_config_globale['table_email_deleted']) . "' />
								</div>		
							</div>
							<div class='col-md-6'>
								<div class='form-group'><label>Table des expéditeurs</label>
									<input class='form-control' type='text' name='table_senders' value='" . htmlspecialchars($row_config_globale['table_senders']) . "' />
								</div>
							</div>
						</div>
					</div>
				</div>
				<div id='tab2' class='tab-pane'>
					<div class='module_content'>
						<h4>".tr("GCONFIG_MANAGE_ENVIRONMENT" ) . "</h4>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("INSTALL_SERVER_TYPE" ) . "</label><br>
									<select name='type_serveur' class='selectpicker' data-width='auto'>
									<option value='shared' " . ( $type_serveur=='shared'?'selected':'' ) . ">".tr("SHARED_SERVER" ) . "</option>
									<option value='dedicated' " . ( $type_serveur=='dedicated'?'selected':'' ) . ">".tr("DEDICATED_SERVER" ) . "</option>
									</select>
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'>
									<label>".tr("INSTALL_ENVIRONMENT" ) . "</label><br>
									<select name='type_env' class='selectpicker' data-width='auto'>
									<option value='dev' " .($type_env=='dev' ?'selected':'' ) . ">".tr("INSTALL_DEVELOPMENT" ) . "</option>
									<option value='prod' " . ( $type_env=='prod'?'selected':'' ) . ">".tr("INSTALL_PRODUCTION") ."</option>
									</select>
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("LOCAL_TIME_ZONE" ) . " : </label><br>
									<select name='timezone' class='selectpicker' data-width='auto'>
									" . $PAYS_WITH_OPTION ."
									</select>
								</div>
							</div>
						</div>
					</div>
				</div>
				<div id='tab3' class='tab-pane'>
					<div class='module_content'>
						<h4>" . tr("GCONFIG_MESSAGE_HANDLING_TITLE") . "</h4>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_ADMIN_NAME" ) . "</label>
									<input class='form-control' type='text' name='admin_name' size='30' value='" . htmlspecialchars($row_config_globale['admin_name']) . "' />
								</div>
							</div>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_ADMIN_MAIL" ) . "</label>
									<input class='form-control' type='text' name='admin_email' size='30' value='" . htmlspecialchars($row_config_globale['admin_email']) . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_CODE_MAILTESTER" ) . "</label>
									<input class='form-control' type='text' name='code_mailtester' size='30' value='" . ($code_mailtester!='' ? $code_mailtester : '') . "' />
								</div>
							</div>
						</div>
						<h4>" . tr("GCONFIG_TIMER_CROM_TIMER_AJAX") . "</h4>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_TIMER_AJAX" ) . ", ". tr("GCONFIG_SECONDES") ." (".tr("GCONFIG_TIME_FOR_EACH_LOOP" ) . ")</label>
									<input class='form-control' type='text' name='timer_ajax' size='30' value='" . ($timer_ajax!='' ? $timer_ajax : '10') . "' /></div>
								</div>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_NUM_LOOP" ) . "</label>
									<input class='form-control' type='text' name='sending_limit' size='3' value='".$row_config_globale['sending_limit']."' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>".tr("GCONFIG_TIMER_CRON" ) . ", ". tr("GCONFIG_SECONDES") ." (".tr("GCONFIG_TIME_FOR_EACH_SEND" ) . ")</label>
									<input class='form-control' type='text' name='timer_cron' size='30' value='" . ($timer_cron!='' ? $timer_cron : '3') . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-3'>
								<div class='form-group'><label>". tr("GCONFIG_ALERT_END_SCHEDUL_TASK" ) . " ?</label><br>";
								if($end_task=='0'||$end_task==''){
									echo "<input type='radio' name='end_task' value='0' checked='checked'>" . tr("NO") . "&nbsp;<input type='radio' name='end_task' value='1'>" . tr("YES" ) . "";
								}elseif($end_task=='1'){
									echo "<input type='radio' name='end_task' value='0'>" . tr("NO") . "&nbsp;<input type='radio' name='end_task' value='1' checked='checked'>" . tr("YES" ) . "";
								}
						echo "		</div>
							</div>";
						if(@$free_id!=''&&$free_pass!=''){
							echo "<div class='col-md-4'>
								<div class='form-group'><label>Recevoir un FREE sms de fin de tâche planifiée ?</label><br>";
								if($end_task_sms=='0'){
									echo "<input type='radio' name='end_task_sms' value='0' checked='checked'>" . tr("NO") . "&nbsp;<input type='radio' name='end_task_sms' value='1'>" . tr("YES" ) . "";
								}elseif($end_task_sms=='1'){
									echo "<input type='radio' name='end_task_sms' value='0'>" . tr("NO") . "&nbsp;<input type='radio' name='end_task_sms' value='1' checked='checked'>" . tr("YES" ) . "";
								}
								echo "</div>
							</div>";
						}
						echo "	<div class='col-md-3'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_CHARSET" ) . "</label><br>
									<select name='charset' class='selectpicker' data-width='auto'>";
									sort($locals);
									foreach ($locals as $local) {
										echo "<option value='$local'" . ($row_config_globale['charset'] == $local ? ' selected' : '') . ">$local</option>";
									}
						echo "			</select>
								</div>
							</div>
							<div class='col-md-2'>
								<div class='form-group'><label>Tracking ?</label><br>";
								if($row_config_globale['active_tracking']=='0'){
									echo "<input type='radio' name='active_tracking' value='0' checked='checked'>" . tr("NO") . "&nbsp;<input type='radio' name='active_tracking' value='1'>" . tr("YES" ) . "";
								}elseif($row_config_globale['active_tracking']=='1'){
									echo "<input type='radio' name='active_tracking' value='0'>" . tr("NO") . "&nbsp;<input type='radio' name='active_tracking' value='1' checked='checked'>" . tr("YES" ) . "";
								}
						echo "		</div>
							</div>
						</div>
						<h4>Configuration SMTP par défaut</h4>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SEND_METHOD" ) . "</label><br>
									<select name='sending_method' onChange='checkSMTP()' class='selectpicker' data-width='auto'>
										<option value='smtp' ";
										if ($row_config_globale['sending_method'] == "smtp") 
											echo "selected='selected'" ;
										echo ">SMTP</option>
										<option value='smtp_over_tls' ";
										if ($row_config_globale['sending_method'] == "smtp_over_tls") 
											echo "selected='selected'" ;
										echo ">SMTP TLS (port 587)</option>
										<option value='smtp_over_ssl' ";
										if ($row_config_globale['sending_method'] == "smtp_over_ssl") 
											echo "selected='selected'" ;
										echo ">SMTP SSL (port 465)</option>
										<option value='lbsmtp' ";
										if ($row_config_globale['sending_method'] == "lbsmtp") 
											echo "selected='selected' " ;
										echo ">Load Balancing SMTP</option>
										<option value='smtp_gmail_tls' ";
										if ($row_config_globale['sending_method'] == "smtp_gmail_tls")
											echo "selected='selected'" ;
										echo ">SMTP GMAIL TLS (port 587)</option>
										<option value='smtp_gmail_ssl' ";
										if ($row_config_globale['sending_method'] == "smtp_gmail_ssl") 
											echo "selected='selected'" ;
										echo ">SMTP GMAIL SSL (port 465)</option>
										<option value='php_mail' ";
										if ($row_config_globale['sending_method'] == "php_mail") 
											echo "selected='selected'" ;
										echo ">" . tr("GCONFIG_MESSAGE_SEND_METHOD_FUNCTION") . "</option>
										<option value='smtp_mutu_ovh' ";
										if ($row_config_globale['sending_method'] == "smtp_mutu_ovh") 
											echo "selected='selected'" ;
										echo ">SMTP ".tr("INSTALL_SHARED" ) . " OVH</option>
										<option value='smtp_mutu_1and1' ";
										if ($row_config_globale['sending_method'] == "smtp_mutu_1and1") 
											echo "selected='selected'" ;
										echo ">SMTP ".tr("INSTALL_SHARED" ) . " 1AND1</option>
										<option value='smtp_mutu_gandi' ";
										if ($row_config_globale['sending_method'] == "smtp_mutu_gandi") 
											echo "selected='selected'" ;
										echo ">SMTP ".tr("INSTALL_SHARED" ) . " GANDI</option>
										<option value='smtp_mutu_online' ";
										if ($row_config_globale['sending_method'] == "smtp_mutu_online") 
											echo "selected='selected'" ;
										echo ">SMTP ".tr("INSTALL_SHARED" ) . " ONLINE</option>
										<option value='smtp_mutu_infomaniak' ";
										if ($row_config_globale['sending_method'] == "smtp_mutu_infomaniak") 
											echo "selected='selected'" ;
										echo ">SMTP ".tr("INSTALL_SHARED" ) . " INFOMANIAK</option>
										<option value='smtp_one_com' ";
										if ($row_config_globale['sending_method'] == "smtp_one_com") 
											echo "selected='selected'" ;
										echo ">SMTP ONE.COM</option>
										<option value='smtp_one_com_ssl' ";
										if ($row_config_globale['sending_method'] == "smtp_one_com_ssl") 
											echo "selected='selected'" ;
										echo ">SMTP ONE.COM SSL</option>
									</select>
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_HOST" ) . "</label>
									<input class='form-control' type='text' name='smtp_host' value='".$row_config_globale['smtp_host']."' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_PORT" ) . "</label>
									<input class='form-control' type='text' name='smtp_port' value='".$row_config_globale['smtp_port']."' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_AUTH" ) . "</label><br>";
									if($row_config_globale['smtp_auth']=="0"){
										echo "<input type='radio' name='smtp_auth' value='0' checked='checked'>" . tr("NO") . "&nbsp;<input type='radio' name='smtp_auth' value='1'>" . tr("YES" ) . "";
									}elseif($row_config_globale['smtp_auth']=="1"){
										echo "<input type='radio' name='smtp_auth' value='0'>" . tr("NO") . "&nbsp;<input type='radio' name='smtp_auth' value='1' checked='checked'>" . tr("YES" ) . "";
									}
							echo "	</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_LOGIN" ) . "</label>
									<input class='form-control' type='text' name='smtp_login' value='" . ( $row_config_globale['smtp_login']!=''?$row_config_globale['smtp_login']:'' ) . "' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_MESSAGE_SMTP_PASSWORD" ) . "</label>
									<input class='form-control' type='password' name='smtp_pass' value='" . ( $row_config_globale['smtp_pass']!=''?$row_config_globale['smtp_pass']:'' ) . "' />
								</div>
							</div>
						</div>
					</div>
				</div>
				<div id='tab4' class='tab-pane'>
					<div class='module_content'>
						<h4>" . tr("GCONFIG_MANAGE_BOUNCE") . "</h4>
						" . tr("BOUNCE_WARNING") . "
						<div class='alert alert-danger'>".tr("ALERT_MAIL_BOUNCE" ) . "</div>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("MAIL_FOR_BOUNCE" ) . "</label>
								<input class='form-control' type='text' name='bounce_mail' id='bounce_mail' value='" . (!empty($bounce_mail) ? $bounce_mail: '') . "' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_HOST_MAIL" ) . "</label>
									<input class='form-control' type='text' name='bounce_host' id='bounce_host' value='" . (!empty($bounce_host) ? $bounce_host : 'localhost') . "' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("INSTALL_DB_LOGIN" ) . "</label>
									<input class='form-control' type='text' name='bounce_user' id='bounce_user' value='" . (!empty($bounce_user) ? $bounce_user : '') . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("INSTALL_DB_PASS" ) . "</label>
									<input class='form-control' type='password' name='bounce_pass' id='bounce_pass' value='" . (!empty($bounce_pass) ? $bounce_pass : '') . "' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_PORT" ) . "</label>
									<input class='form-control' type='text' name='bounce_port' id='bounce_port' value='" . (!empty($bounce_port) ? $bounce_port : '110') . "' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_SERVICE" ) . "</label>
									<input class='form-control' type='text' name='bounce_service' id='bounce_service' value='" . (!empty($bounce_service) ? $bounce_service : 'pop3') . "' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_SERVICE_OPTION" ) . "</label>
									<input class='form-control' type='text' name='bounce_option' id='bounce_option' value='" . (!empty($bounce_option) ? $bounce_option : 'notls') . "'>
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-3'>
								<input class='btn btn-success' type='button' name='action' id='TestBounce' value='".tr("GCONFIG_TEST_BOUNCE" ) . "' />
								<input type='hidden' name='bounce_token' id='bounce_token' value='$token'>
							</div>
							<div class='col-md-9'>
								<span id='RsBounce' align='center'>&nbsp;</span>
							</div>
						</div>
						<script>
						$('#TestBounce').click(function(){
							$('#RsBounce').html('".tr("GCONFIG_TRY_CONNECT" ) . "...');
							$.ajax({
								type:'POST',
								url: 'include/ajax/test_imap.php',
								data: {'bounce_host':$('#bounce_host').val(),'bounce_user':$('#bounce_user').val(),'bounce_pass':$('#bounce_pass').val(),'bounce_port':$('#bounce_port').val(),'bounce_service':$('#bounce_service').val(),'bounce_option':$('#bounce_option').val(),'token':$('#bounce_token').val()},
								cache: false,
								success: function(data){
									$('#RsBounce').html(data);
								}
							});
						});
						</script>";
					echo '	
					</div>
				</div>';
				echo "
				<div id='tab5' class='tab-pane'>
					<div class='module_content'>
						<h4>" . tr("GCONFIG_SUBSCRIPTION_TITLE") . "</h4>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_SUBSCRIPTION_CONFIRM_SUB" ) . "</label><br>
									<input type='radio' name='sub_validation'	 value='0' ";
									if (!$row_config_globale['sub_validation']) 
										echo "checked='checked'";
									echo "> " . tr("NO") . "
									&nbsp;<input type='radio' name='sub_validation' value='1' ";
									if ($row_config_globale['sub_validation']) 
										echo "checked='checked'";
									echo "> " . tr("YES") . "
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>". tr("GCONFIF_SUBSCRIPTION_VALIDATION_TIMEOUT") ."</label>
									<input class='form-control' type='text' name='validation_period' value='".$row_config_globale['validation_period']."' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_ALERT_SUB" ) . "</label><br>
									<input type='radio' name='alert_sub' value='0' ";
									if (!$row_config_globale['alert_sub']) 
										echo "checked='checked'";
									echo "> " . tr("NO") . "
									&nbsp;<input type='radio' name='alert_sub' value='1' ";
									if ( $row_config_globale['alert_sub'] || !isset($row_config_globale['alert_sub']) || $row_config_globale['alert_sub']=='' ) 
										echo "checked='checked'";
									echo "> " . tr("YES") ."
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("GCONFIG_SUBSCRIPTION_CONFIRM_UNSUB" ) . "</label><br>
									<input type='radio' name='unsub_validation' value='0' ";
									if (!$row_config_globale['unsub_validation']) 
										echo "checked='checked'";
									echo "> " . tr("NO") . "
									&nbsp;<input type='radio' name='unsub_validation' value='1' ";
									if ($row_config_globale['unsub_validation']) 
										echo "checked='checked'";
									echo "> " . tr("YES") ."
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>".tr("ALERT_UNSUB" ) . "</label><br>
									<input type='radio' name='alert_unsub' value='0' ";
									if ( @$alert_unsub==0 ) 
										echo "checked='checked'";
									echo " > " . tr("NO") . "
									&nbsp;<input type='radio' name='alert_unsub' value='1' ";
									if ( @$alert_unsub==1 || !isset($alert_unsub) || $alert_unsub=='' ) 
										echo "checked='checked'";
									echo " > " . tr("YES") ."</div>
								</div>
							</div>
						</div>";
						if( @$free_id!='' && $free_pass!='' ){
							echo "
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>Etre averti des nouvelles inscriptions par FREE sms ?</label><br>
									<input type='radio' name='sub_validation_sms' value='0' ";
									if ( @$sub_validation_sms==0 ) 
										echo "checked='checked'";
									echo " > " . tr("NO") . "
									&nbsp;<input type='radio' name='sub_validation_sms' value='1' ";
									if ( @$sub_validation_sms==1 || !isset($sub_validation_sms) || $sub_validation_sms=='' ) 
										echo "checked='checked'";
									echo " > " . tr("YES") . "
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>Etre averti d'une désinscription par FREE sms ?</label><br>
									<input type='radio' name='unsub_validation_sms' value='0' ";
									if ( @$unsub_validation_sms==0 ) 
										echo "checked='checked'";
									echo " > " . tr("NO") . "
									&nbsp;<input type='radio' name='unsub_validation_sms' value='1' ";
									if ( @$unsub_validation_sms==1 || !isset($unsub_validation_sms) || $unsub_validation_sms=='' ) 
										echo "checked='checked'";
									echo " > " . tr("YES") . "
								</div>
							</div>
						</div>";
						}
						echo "
					
				</div>";
				echo "
				<div id='tab6' class='tab-pane'>
					<div class='module_content'>
						<h4>" . tr("GCONFIG_MISC_TITLE") . "</h4>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>". tr("GCONFIG_MISC_ADMIN_PASSW" ) . " " . tr("GCONFIG_MISC_ADMIN_PASSW2") ."</label>
									<input class='form-control' type='password' name='admin_pass' value='' autocomplete='off' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>". tr("GCONFIG_MISC_BASE_URL" ) . " (Sans le / de fin !)</label>
									<input class='form-control' type='text' name='base_url' value='".$row_config_globale['base_url']."' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>". tr("GCONFIG_MISC_BASE_PATH" ) . "</label>
									<input class='form-control' type='text' name='path' value='".$row_config_globale['path']."' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>". tr("GCONFIG_MISC_LANGUAGE" ) . "</label>
									<br><select name='language' class='selectpicker' data-width='auto'>".getLanguageList($row_config_globale['language'] ) . "</select>
								</div>
							</div>
						</div>
						<h4>Présentation globale :</h4>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>Choix du menu :</label>
									<input type='radio' name='menu' value='hz' ";
									if (@$menu=='hz'||!isset($menu)||$menu=='') 
										echo "checked='checked'";
									echo "> horizontal
									&nbsp;<input type='radio' name='menu' value='vt' ";
									if (@$menu=='vt') 
										echo "checked='checked'";
									echo "> vertical
								</div>
							</div>
							<div class='col-md-6'>
								<div class='form-group'><label>Afficher le loader :</label>
									<input type='radio' name='loader' value='1' ";
									if (@$loader==1||!isset($loader)||$loader=='') 
										echo "checked='checked'";
									echo "> " . tr("YES") ."
									&nbsp;<input type='radio' name='loader' value='0' ";
									if (@$loader==0) 
										echo "checked='checked'";
									echo "> " . tr("NO") . "
								</div>
							</div>
						</div>
						<h4>Sauvegardes de la base de données :</h4>
						<div class='row'>
							<div class='col-md-6'>
								<div class='form-group'><label>Nombre de sauvegardes à conserver :</label>
									<input class='form-control' type='text' name='nb_backup' value='".@$nb_backup."' autocomplete='off' />
								</div>
							</div>
						</div>
						<h4>Paramètres SMS API (pour les titulaires de ligne FREE Mobile)</h4>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>Identifiant FREE</label>
									<input class='form-control' type='text' name='free_id' value='".@$free_id."' />
								</div>
							</div>
							<div class='col-md-4'>
								<div class='form-group'><label>Clé d'identification au service :</label>
									<input class='form-control' type='text' name='free_pass' value='".@$free_pass."' />
								</div>
							</div>
						</div>
						<div class='row'>
							<div class='col-md-12'>
								Ce service gratuit proposé par free est intégré dans PhpMyNewsLetter pour vous informer :<br>
								- des fins d'envois des messages planifiés (si option cochée et identifiants FREE renseignés)<br>
								- des nouvelles inscriptions (si option cochée et identifiants FREE renseignés)<br>
								- des désinscriptions (si option cochée et identifiants FREE renseignés)<br>
								Pour activer ce service, il faut que vous soyiez titulaire d'une ligne mobile FREE et que vous activiez le service dans votre espace personnel :<br>
								> Connexion sur <a href='https://mobile.free.fr/moncompte/' target='_blank'>FREE</a> > Gérer mon compte > Mes options > Notifications par SMS<br>
								<div align='center'><img src='css/NotifSMS-f9edd.png' /><br>&copy; <a href='https://www.freenews.fr/freenews-edition-nationale-299/free-mobile-170/nouvelle-option-notifications-par-sms-chez-free-mobile-14817'>Freenews</a></div>
								Vous renseignerez ici vos identifiants FREE (l'identifiant de connexion à votre compte) et la clé d'identification au service.<br>
								Ce n'est que lorsque ces identifiants auront été renseignés ET enregistrés que les options de notifications seront disponibles.<br>
								Les notifications seront adressées au seul numéro de mobile lié à ce compte
							</div>
						</div>
					</div>
				</div>
				<div id='tab7' class='tab-pane'>
					<div class='module_content'>
						<h4>Configuration des enregistrements DKIM, SPF et DMARC</h4>
						<div class='row'>
							<div class='col-md-4'>
								<div class='form-group'><label>Sélecteur de clé DKIM</label><br>
									<input class='form-control' type='text' name='key_dkim' id='key_dkim' value='".$key_dkim."' autocomplete='off' />
								</div>
							</div>
							<div class='col-md-4'>
								<br>Le sélecteur est la valeur avant le \"._domainkey\", exemple : <b>default</b>._domainkey.votresite.com
							</div>
						</div>
						<div class='row'>
							<div class='col-md-2'>
								<input class='btn btn-success' type='button' name='action' id='TestKeys' value='Tester les clés' />
								<input type='hidden' name='key_token' id='key_token' value='$token'>
							</div>
							<div class='col-md-1'>
							</div>
							<div class='col-md-9'>
								<span id='RsTestKeys'>&nbsp;</span>
							</div>
						</div>
						<script>
							$('#TestKeys').click(function(){
								$('#RsTestKeys').html('Test en cours...');
								$.ajax({
									type:'POST',
									url: 'include/ajax/test_dns.php',
									data: {'key_dkim':$('#key_dkim').val(),'token':$('#key_token').val()},
									cache: false,
									success: function(data){
										$('#RsTestKeys').html(data);
									}
								});
							});
						</script>
					</div>
				</div>
			</div>
		</div>
	</div>
	<div class='col-md-2'>
		<div class='content-box fixedBox'>
			<h4>" . tr( "ACTIONS" ) . " :</h4>
			<input type='hidden' name='op' value='saveGlobalconfig'>
			<input type='hidden' name='mod_sub' value='0'>
			<input type='hidden' name='token' value='$token' />
			<input type='submit' value='" . tr("GCONFIG_SAVE_BTN") . "' class='btn btn-success'>
		</div>
	</div>
</div>
</form>
<script>
	$(document).ready(function() { 
		$('#rootwizard').bootstrapWizard(); 
	})
</script>";

Ne pas hésiter à remonter les bugs de fonctionnement, et encore merci du signalement et de ta patience.

Arnaud

#133 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

Oui, j'ai bien compris, d'où ma réécriture de certains scripts.
Idéalement, tu bloques tes paramètres en les ajoutant manuellement aujourd'hui.
Une fois calés, moi je fais mes pages web, puis alors tu mettras à jour les pages php quand je le dirai.

#135 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

Pour information, je suis en train de reprendre la page de gestion globale pour les corrections.

#137 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

Non, ce n'est pas possible, car c'est une faute de syntaxe.
Ceci dit, je pense que la porte est ouvert chez PHP pour les bonnes idées, ça résoudrait le travail des développeurs du monde php...
Le problème est ailleurs il faut le chercher.

#138 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

Est-ce que les 3 lignes :
    $end_task_sms       = 0;
    $sub_validation_sms = 1;
    $unsub_validation_sms = 1;
sont renseignées dans le conf ?

Si erreur 500, se mettre en mode dev, rapporter l'erreur et se remettre en mode production après correction.

#139 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

maxcdn mouline ???
Tu peux essayer de cliquer ce lien et me dire :
https://maxcdn.bootstrapcdn.com/bootstr … rap.min.js

Les codes free n'ont aucun rapport avec les paramètres d'envoi donc oui c'est un autre onglet.

D'ailleurs est-ce que les valeurs de ces options sont bien envoyées par tous les navigateurs sur tous les OS sans que la page soit affichée? En tout cas j'ai testé avec firefox et chrome : même problème.

Pas compris le problème.

Une question : la version de phpmynewsletter installée est de quand ?

Si la question est : est ce que les valeurs que je ne vois pas sont bien envoyées dans le formulaire à la validation : c'est oui, car ce ne sont que des morceaux de page qui sont affichés ou cachés pour éviter d'avoir une page immense.
Je confirme que ça marche très bien chez moi.
As tu un bloqueur de pub ou quoi que ce soit altérant la page ?

#140 Re : Support général » blocage aprés la mise en service de la notification par SMS » 17-11-2018 21:17:45

Bonjour archeo,

Tu n'as rien loupé, et je ne comprends pas.
Toujours pareil, ça fonctionne parfaitement chez moi.
Les 3 lignes devraient être ainsi :

	$free_id            = 'xxxxxxxx';
	$free_pass          = 'xxxxxxxxxx';
	$end_task_sms       = 0;
	$sub_validation_sms = 1;
	$unsub_validation_sms = 1;

0 signifie non
1 signifie oui
$end_task_sms // pour envoyer un sms une fois l'envoi par tâche planifiée fini
$sub_validation_sms // pour envoyer un sms lors d'une inscription à la newsletter
$unsub_validation_sms // pour avertir d'une désinscription (sympa après une campagne !)

#141 Re : Support général » [Résolu] Mode d'envoi non défini ! » 14-11-2018 07:46:02

Bonjour,

Je confirme la fonction sendEmail :

function sendEmail($send_method, $to, $from, $from_name, $subject, $body, $auth = 0, 
                   $smtp_host = '', $smtp_login = '', $smtp_pass = '', $charset = 'UTF-8',
                   $secure = '', $port ='') {
    $mail          = new phpmailer();
    $mail->CharSet = $charset;
    $mail->PluginDir = "include/lib/";
    $mail->SMTPOptions = array(
            'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
            )
        );
    switch ($send_method) {
        case 'lbsmtp':
        case "smtp":
            $mail->IsSMTP();
            $mail->Host = $smtp_host;
            if ($auth) {
                $mail->SMTPAuth = true;
                $mail->Username = $smtp_login;
                $mail->Password = $smtp_pass;
            }
            if ($secure != '') {
                $mail->SMTPSecure = $secure;
            }
            if ($port != '') {
                $mail->Port = (int)$port;
            } else {
                $mail->Port = 25;
            }
            break;
        case "smtp_over_tls":
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'tls';
            $mail->Host = $smtp_host;
            $mail->Port = 587;
            $mail->IsHTML(true);
            $mail->Username = $smtp_login;
            $mail->Password = $smtp_pass;
            break;
        case "smtp_over_ssl":
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'ssl';
            $mail->Host = $row_config_globale['smtp_host'];
            $mail->Port = 465;
            $mail->IsHTML(true);
            $mail->Username = $smtp_login;
            $mail->Password = $smtp_pass;
            break;
        case "smtp_gmail":
        case "smtp_gmail_tls":
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'tls';
            $mail->Host = "smtp.gmail.com";
            $mail->Port = 587;
            $mail->Username = $smtp_login;
            $mail->Password = $smtp_pass;
            break;
        case "smtp_gmail_ssl":
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'ssl';
            $mail->Host = "smtp.gmail.com";
            $mail->Port = 465;
            $mail->IsHTML(true);
            $mail->Username = $smtp_login;
            $mail->Password = $smtp_pass;
            break;
        case "php_mail":
        case "php_mail_infomaniak":
            $mail->IsMail();
            break;
        case "smtp_mutu_ovh":
            $mail->IsSMTP();
            $mail->Port = 587;
            $mail->Host = 'ssl0.ovh.net';
            if ($auth) {
                $mail->SMTPAuth = true;
                $mail->Username = $smtp_login;
                $mail->Password = $smtp_pass;
            }
            break;
        case "smtp_mutu_1and1":
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'tls';
            $mail->Port = 465;
            $mail->Host = 'auth.smtp.1and1.fr';
            if ($auth) {
                $mail->SMTPAuth = true;
                $mail->Username = $smtp_login;
                $mail->Password = $smtp_pass;
            }
            break;
        case "smtp_mutu_gandi":
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'tls';
            $mail->Port = 587;
            $mail->Host = 'mail.gandi.net';
            if ($auth) {
                $mail->SMTPAuth = true;
                $mail->Username = $smtp_login;
                $mail->Password = $smtp_pass;
            }
            break;
        case "smtp_mutu_online":
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->Port = 587;
            $mail->Host = 'smtpauth.online.net';
            if ($auth) {
                $mail->SMTPAuth = true;
                $mail->Username = $smtp_login;
                $mail->Password = $smtp_pass;
            }
            break;
        case "smtp_mutu_infomaniak":
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'ssl';
            $mail->Port = 587;
            $mail->Host = 'mail.infomaniak.ch';
            if ($auth) {
                $mail->SMTPAuth = true;
                $mail->Username = $smtp_login;
                $mail->Password = $smtp_pass;
            }
            break;
        case "smtp_one_com":
            $mail->IsSMTP();
            $mail->SMTPAuth = false;
            $mail->Port = 25;
            $mail->Host = 'mailout.one.com';
            break;
        case "smtp_one_com_ssl":
            require_once(__DIR__.'/class.pop3.php');
            $pop = new POP3();
            $pop->Authorise("send.one.com", 465, 30, $smtp_login, $smtp_pass, 1);
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->Port = 465;
            $mail->SMTPSecure = 'ssl';
            $mail->Host = 'send.one.com';
            $mail->Username = $smtp_login;
            $mail->Password = $smtp_pass;
            break;
        default:
            die(tr("NO_SEND_DEFINITION"));
            break;
    }
    if (file_exists("DKIM/DKIM_config.php")) {
        include("DKIM/DKIM_config.php");
        $mail->DKIM_domain     = $DKIM_domain;
        $mail->DKIM_private    = $DKIM_private;
        $mail->DKIM_selector   = $DKIM_selector;
        $mail->DKIM_passphrase = $DKIM_passphrase;
        $mail->DKIM_identity   = $DKIM_identity;
    }
    $mail->ClearAllRecipients();
    $mail->ClearCustomHeaders();
    $mail->IsHTML(true);
    $mail->From     = $from;
    $mail->FromName = $from_name;
    $mail->AddAddress($to);
    $mail->XMailer = ' ';
    $mail->Subject = $subject;
    $mail->Body    = $body;
    if (!$mail->Send()) {
        echo $mail->ErrorInfo;
        return -2;
    }
    return true;
}

#142 Re : Support général » [Résolu] Mode d'envoi non défini ! » 14-11-2018 07:46:02

Bravo c est exactement ça !
Surtout bien être en mode prod pour les envois
Mon fils étant malade je ne suis pas disponible avant sa sieste cet après midi où je regarderai et validerai définitivement
Bon app !

#143 Re : Support général » [Résolu] Mode d'envoi non défini ! » 14-11-2018 07:46:02

Le message d erreur est normal puisque ça envoie le message d erreur avant le json donc ça fait un json mal formaté,
Si l inscription fonctionne tu peux repasser en mode production et le message disparaîtra wink

#144 Re : Support général » [Résolu] Mode d'envoi non défini ! » 14-11-2018 07:46:02

Le script embarque la configuration globale des paramètres définis dans phpmynewsletter.
Il faut se mettre en mode dévéloppeur (et me faire confiance, je l'ai écrit il me semble  big_smile  )
Ajouter une adresse mail qui est dans une liste de test pourquoui pas, mais il ne faut pas qu'elle ait déjà été ajoutée et supprimée. Sinon ça ne marchera pas.
Donc, mode développeur et recommencer.

#145 Re : Support général » [Résolu] Mode d'envoi non défini ! » 14-11-2018 07:46:02

Bonjour Archeo,

OK, donc se mettre en mode développeur pour afficher les erreurs et simuler une inscription avec une adresse mail bidon mais un vrai domaine, ex : je_fais_un_essai@gmail.com
Mode développeur : gestion > gestion globale > environnement > Environnement > développement.
Question : on est d'accord que le code mis en place pour l'inscription est bien celui de la liste des mails réels ? Donc pas une liste inexistante !
Le code est bien complet dans la page d'inscription, code obtenu sur l'icone à droite (gérer), puis aller en bas de la page au Code HTML de souscription ?
Ce n'est pas un code créé ou d'autre application ?

#147 Re : Support général » [Résolu] petit bug d'affichage dans la carte de geolocalisation (statistiques) » 10-11-2018 19:25:26

Le problème persiste car les lignes sont chargées à l ouverture des mails
Donc attendre la prochaine campagne
Et tu as compris avant que je ne résolve mais je ne comprends pas pourquoi c était comme ça !!!!
Donc attendre avant de considérer résolu

#148 Re : Support général » [Résolu] petit bug d'affichage dans la carte de geolocalisation (statistiques) » 10-11-2018 19:25:26

le fichier, ça doit ressembler à ça :

CREATE TABLE IF NOT EXISTS `pmn2_track` (
`id` int(10) unsigned NOT NULL,
  `hash` varchar(40) NOT NULL DEFAULT '',
  `subject` int(9) NOT NULL,
  `date` datetime NOT NULL,
  `open_count` smallint(3) NOT NULL,
  `ip` varchar(20) NOT NULL,
  `browser` varchar(150) NOT NULL,
  `version` varchar(150) NOT NULL,
  `platform` varchar(255) NOT NULL,
  `useragent` text NOT NULL,
  `devicetype` varchar(10) NOT NULL,
  `lat` decimal(10,8) NOT NULL,
  `lng` decimal(11,8) NOT NULL,
  `city` varchar(255) NOT NULL,
  `postal_code` varchar(255) NOT NULL,
  `region` varchar(255) NOT NULL,
  `country` varchar(255) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=129981 DEFAULT CHARSET=utf8;

phpmyadmin > base > table > onglet exporter > export personnalisé, dans sortie cocher "afficher les résultats", dans options spécifiques, cocher "structure" > exécuter en bas de page
et faire un copier coller du résultat avec l'icone de code

#149 Re : Support général » [Résolu] petit bug d'affichage dans la carte de geolocalisation (statistiques) » 10-11-2018 19:25:26

Bon...
Alors déjà un joli score d'ouverture  big_smile  big_smile

Par contre, cette ligne, je dirais plutôt qu'elle marque un vide à gauche.
Est-ce que tu pourrais faire un dump de la structure de la table [prefix]_track stp ? C'est à dire n'afficher que la structure depuis phpmyadmin via une simulation d'export de la table.

#150 Re : Retour d'expérience » Ma première vraie campagne : environ 2400 envois chez Haisoft » 20-01-2020 10:16:15

Ce que je voulais dire c est que tu étais en dessous de mes préconisations donc très bien
Passe à 1 toutes les 5 secondes peu importe le temps que ça prend !

Pied de page des forums

Propulsé par FluxBB