Aller au contenu

sparh

Hubmaster
  • Compteur de contenus

    584
  • Inscrit(e) le

  • Dernière visite

Messages postés par sparh

  1. Hello,

    alors j'ai tenté :


    $('#formulaire').submit(function() {
    $.ajax({
    type: "POST",
    url: "../Includes/Formulaires/verif_bon.php?ajax=oui&id=<?php echo $id_a_modifier ; ?>,
    data: "num_ordre="+$('#num_ordre').attr('value')+"&type="+$('#type').attr('value')+"&regie="+$('#regie').attr('value'
    ),
    success:function(data){
    $("#retour_message").empty().append(data);
    }
    });
    return false;
    });

    Avec ça je n'ai que la variable num_ordre qui est envoyé

    J'ai aussi essayé :


    function HTMLEncode(wText){
    if(typeof(wText)!="string"){
    wText=wText.toString();};
    wText=wText.replace(/&/g, "&") ;
    return wText;};

    $('#formulaire').submit(function() {
    $.ajax({
    type: "POST",
    url: "../Includes/Formulaires/verif_bon.php?ajax=oui&id=<?php echo $id_a_modifier ; ?>,
    data: "num_ordre="+HTMLEncode($('#num_ordre').attr('value'))+"&type="+HTMLEncode($('#type').attr('value'))+"&regie="+HTMLEncode($('#regie').attr('value'
    )),
    success:function(data){
    $("#retour_message").empty().append(data);
    }
    });
    return false;
    });

    La je retombe sur le problème initial c'est à dire :

    je souhaite enregistrer :

    num_ordre = 105

    type = bla bla bla & co

    regie = test & co

    Une fois la requête exécutée dans la base j'ai :

    num_ordre = 105

    type = bla bla bla

    regie = test

  2. Bonsoir et merci de votre intérêt.

    Alors voilà ma requête ajax :


    $('#formulaire').submit(function() {
    $.ajax({
    type: "POST",
    url: "../Includes/Formulaires/verif_bon.php?ajax=oui&id=<?php echo $id_a_modifier ; ?>,
    data: "num_ordre="+$('#num_ordre').attr('value')+"&type="+$('#type').attr('value')+"&regie="+$('#regie').attr('value'),
    success:function(data){
    $("#retour_message").empty().append(data);
    }
    });
    return false;
    });

    et la sql (avec mysql_real_escape_string sur chaque variable)


    $sql ="UPDATE interventions SET num_ordre='$num_ordre', type='$type', regie='$regie' WHERE num_db = '$id_a_modifier' ";

    Pendant un moment j'ai cru que c'était le & de séparation des variables envoyés par ajax, mais si je remplace par & les variables suivantes ne sont pas envoyées.

    _AT_Ernestine j'affiche déjà le résultat de ma requête : la requête sql s’exécute correctement sauf pour la variable qui contient un &.

    Exemple : je souhaite enregistrer :

    num_ordre = 105

    type = bla bla bla & co

    regie = test & co

    Une fois la requête exécutée dans la base j'ai :

    num_ordre = 105

    type = bla bla bla

    regie = test

  3. Bonjour et merci pour vos réponses.

    Alors le souci vient lors de l'insertion des donnée (je n'ai donc pas encore essayé de récupérer car je n'arrive même pas à insérer!)

    Le champ est en VARCHAR(50), la chaîne de caractère contient moins de 50 caractère

    Les données sont envoyés par POST en ajax et je fait un mysql_real_escape_string sur la variable envoyée.

    Quand je veux enregistrer la chaîne suivante : hkjhhkjh &ikl

    Dans ma base de donnée je retrouve : hkjhhkjh

    Je viens de faire sans passer par ajax et pas de souci j'ai bien la totalité de mes entregistrements avec les & :

    $sql = "UPDATE interventions SET proprietaire='ihkjh &hokhlkh',commentaire='jkljk commentaire & jkl' WHERE id='106'";

    Donc il semble que ce soit le POST en ajax qui pose problème

  4. Merci pour vos réponses,

    voilà ce que j'ai fait :


    $(function(){
    $('.information_trois').live('click',function() { popUp($(this).attr('href'),'elastic',500,600); return false; });
    $('.information_trois').live('hover',function() { $(this).jHelperTip({ trigger: 'hover', source: 'attribute', attrName: 'alt', oacity: 0.9, autoClose:true}); });
    });
    ------------------------------------------
    <a href="http://www.weplayflash.fr/coucou" class="information_trois" alt="Cliquez pour signaler un problème avec ce score.">Test lien 2</a>

    Et ça marche ;) donc merci à tous

    Par contre j'ai cherché la différence entre live() et delegate mais je n'ai pas bien compris ?

  5. Bonjour,

    donc voilà un exemple de code.

    Avec IE au bout d'un certain temps les onclick et onmouseover ne marche plus.

    Je dis bien au bout d'un certain temps, au début, les 5 6 premières itération de la boucle pas de souci.


    <script language="JavaScript" type="text/javascript">
    function maj_contenu2() {
    // tchat verical
    $.ajax({
    type: "GET",
    url: "test3.html",
    success:function(data){
    var message_ajax = $(".tchat_content");
    message_ajax.empty();
    message_ajax.append(data);
    }
    });
    }

    var boucle_generale = setInterval(maj_contenu2,3500);
    </script>
    --------------------------------------
    <div id="contenu" class="tchat_content">
    </div>

    Et le contenu affiché par test3.html


    <a href="http://www.weplayflash.fr" onclick="popUp(this.href,'elastic',500,600);return false;" onmouseover="javascript:$('.information_deux').jHelperTip({ trigger: 'hover', source: 'attribute', attrName: 'alt', oacity: 0.9, autoClose:true, })" class="information_deux" alt="Cliquez pour signaler un problème avec ce score.">Test lien 2</a><br /><br />

    Voilà, ce qui est bizarre c'est que plus il y a de contenu dans test3.html plus ça bug rapidement.

    Voici 2 pages si vous voulez tester

    http://www.weplayflash.fr/test.html

    http://www.weplayflash.fr/testa.html

    Merci d'avance

  6. Bonjour,

    je met à jour certains contenu de mon site via des requêtes ajax (jquery).

    Je me rend compte que sous IE les onclick ou onmouseover ne fonctionne plus une fois le contenu mis à jour.

    Le problème se pose qu'avec IE.

    J'ai cherché et trouvé 2-3 sujets similaires mais pas de réponse :

    http://forum.alsacreations.com/topic-5-50741-1.html

    http://stackoverflow.com/questions/771721/ie-not-allowing-onclick-event-on-dynamically-created-dom-a-element

    Quelqu'un aurait il une idée pour résoudre se problème ?

    Merci d'avance

  7. Salut,

    merci pour ta réponse je commence un tout petit peu à y voir plus clair.

    Donc si je comprends bien il faut limiter le nombre de requête faites par $.ajax ou $.get ?

    Déjà j'ai au maximum 2 setinterval par page.

    Voilà comment j'ai fait ma fonction :


    function mise_a_jour_general()
    {
    $.ajax({
    type: "GET",
    url: "ajax-messagerie.php?ajax=oui",
    success:function(data){
    var message_ajax = $("#messagerie_ajax");
    message_ajax.empty();
    message_ajax.append(data);
    }
    });


    type: "GET",
    url: "ajax_notification.php",
    success:function(data){
    var message_ajax = $("#notification_panel_liste");
    message_ajax.empty();
    message_ajax.append(data);
    }
    });

    $.ajax({
    type: "GET",
    url: "ajax_notification.php?nombre=oui",
    success:function(data){
    var message_ajax = $("#notification_panel_nombre");
    message_ajax.empty();
    message_ajax.append(data);
    }
    });

    $.ajax({
    type: "GET",
    url: "ajax-tchat.php?menu_horizontal=oui",
    success:function(data){
    var message_ajax = $("#tchat_ajax");
    message_ajax.empty();
    message_ajax.append(data);
    //$("#panel_vertical_tchat").adjustPanel();
    }
    });

    $.ajax({
    type: "GET",
    url: "ajax-tchat.php?menu_horizontal=non",
    success:function(data){
    var message_ajax = $("#tchat_content");
    message_ajax.empty();
    message_ajax.append(data);
    }
    });

    $.get(
    "ajax-dernieres-news.php", {}, function(data)
    {
    $('#records').empty(data).find("div");
    $('#records').append(data).find("div").vTicker({
    speed: 500,
    pause: 3500,
    showItems: 1,
    animation: 'fade',
    mousePause: true,
    height: 25,
    direction: 'down'
    });
    }
    );
    }
    var boucle_generale = setInterval(mise_a_jour_general, 19000); // refresh every 1000 milliseconds

    De cette manière je peux facilement arrêter ou relancer la fonction avec clearInterval.

    Est ce que je procède correctement ?

    Merci d'avance

  8. Salut et merci,

    mais la tu me parle des requêtes envoyées par php ce qui est aussi important.

    Moi ce que je cherche à optimiser c'est le javascript coté client.

    Donc je me demandais pour une boucle infinie (exemple : actualisation de certains contenus de la page toutes les 10s) :

    1 - Entre settimeout et setinterval lequel est le plus adapté, moins consommateur de ressource ?

    2 - Y'as t'il d'autre technique pour raffraichir automatiquement certains contenu de la page ?

    Merci d'avance

  9. Bonjour,

    j'aimerai me mettre à envoyer une newsletter mensuelle aux membres de mon site qui l'ont acceptés (Inscription à la newsletter mensuelle ? Oui - Non).

    Pour l'instant j'envoie des emails aux membres grâce à la class phpmailer (une centaine de mails par jour suite à des actions spécifique : validation inscription, suivi forum etc).

    Mon site est hébergé sur un dédié chez OVH et infogéré ici ;)

    Actuellement j'ai environ 5000 emails qui ont acceptés mais ça vas monter au fur et à mesure (il doit y avoir pas mal de déchet dans le tas aussi).

    Ma newsletter est mensuelle et ma base pas si importante que ça donc je me demande si passer par un prestataire externe vaut le coup ? Si je fais bien les choses ne pourrais-je pas le faire moi même ?

    Merci d'avance pour vos conseils

  10. Bonjour,

    je suis sur le point d'acheter un site exactement dans le même domaine que mon site principal.

    Je n'ai pas encore décidé quoi faire une fois le site acquis :

    - continuer à faire vivre le site en faisant une pub "intense" vers mon site principal avec notamment ajout de lien vers le site principal dans les textes.

    - faire de belles redirections, bien sur pour que les utilisateurs ne se perdent pas mais aussi sur les bon mots clés ;)

    Peux on améliorer le référencement d'un site en achetant et redirigeant avec des 301 ?

    Avez vous déjà testé cette technique ?

  11. Bonjour,

    voici une requête que j'utilise pour afficher les résultats enregistrés avant aujourd'hui:


    WHERE CURRENT_DATE > record.date

    avec un record.date au format 2010-04-09 23:54:01 (or je sais que CURRENT_DATE renvoi 2010-04-09).

    Il semble que ça marche mais je voulais être sur ?

    Au passage, savez vous si c'est possible directement en sql de récupérer la semaine précédente, le mois précédent etc ?

    Merci d'avance

  12. Si tu as mieux à proposer je suis preneur ;)


    // On definit les paramètres
    $smtp = new SMTP($smtp_serveur, $smtp_login, $smtp_passe, 25, $smtp_domain);


    // Contenu du mail (texte, html...) (txt , html, txt/html)
    $smtp->ContentType = 'html';

    // Envoie du mail
    $smtp->smtp_mail($to, $sujet, $message);

    // On vérifit que le mail a été envoyé correctement
    if(!$smtp->erreur){
    //echo '<div style="text-align:center; color:#008000;">Your mail has been send.</div>',"\r\n";
    return true ;
    }else{// Affichage d' erreur(s)
    //echo $smtp->erreur;
    return false ;
    }

  13. Bonjour et merci de me répondre.

    Pour être honnête je ne comprends pas grand chose à ce que tu dis!

    J'utilise une classe smtp :


    <?php
    /*******************************************************************************
    *
    * Nom de la source :
    * Class SMTP
    * Nom du fichier par défaut :
    * Class.SMTP.php
    * Auteur :
    * Nuel Guillaume alias Immortal-PC
    * Site Web :
    * http://immortal-pc.info/
    *
    *******************************************************************************/

    class SMTP {
    // Nom du domaine ou nom du serveur
    var $NomDuDomaine = '';

    // De Qui
    var $From = 'root_AT_localhost';// Adresse de l' expéditeur
    var $FromName = 'Root';// Nom de l' expéditeur
    var $ReplyTo = 'root_AT_localhost';// Adresse de retour
    var $org = 'Localhost'; // Organisation

    // A Qui
    var $To = '';
    // Utilisation : $Bcc = 'mail1,mail2,....';
    var $Bcc = '';// Blind Carbon Copy, c'est à dire que les adresses qui sont contenue ici seront invisibles pour tout le monde
    var $Cc = '';

    // Priorité
    var $Priority = 3;// Priorité accordée au mail (valeur allant de 1 pour Urgent à 3 pour normal et 6 pour bas)

    // Encodage
    var $ContentType = 'html';//Contenu du mail (texte, html...) (txt , html, txt/html)
    var $Encoding = '8bit'; // Ancienne valeur quoted-printable
    var $ISO = 'UTF-8';
    var $MIME = '1.0';// La version mime
    var $Encode = false;// Encodage necessaire ou pas
    var $CHARSET = '';

    // Confirmation de reception
    var $Confimation_reception = '';// Entrez l' adresse où sera renvoyé la confirmation

    // Le mail
    var $Sujet = '';
    var $Body = '';
    var $Body_txt = '';

    // Fichier(s) joint(s)
    var $File_joint = array();

    // Nombre tour
    var $Tour = 0;


    //**************************************************************************
    // Paramètre de connection SMTP
    //**************************************************************************
    var $Authentification_smtp = TRUE;

    var $serveur = '';// Serveur SMTP
    var $port = 25;// Port SMTP
    var $login_smtp = '';// Login pour le serveur SMTP
    var $mdp_smtp = '';// Mot de passe pour le serveur SMTP
    var $time_out = 10;// Durée de la connection avec le serveur SMTP
    var $tls = false;// Activation de la connection sécurisée (anciennement ssl)


    //**************************************************************************
    // Variables temporaires
    //**************************************************************************
    var $smtp_connection = '';// Variable de connection
    var $erreur = '';
    var $debug = false;

    //------------------------------------------------------------------------------

    //**************************************************************************
    // Fonction de déclaration de connection SMTP
    //**************************************************************************
    function SMTP($serveur='', $user='', $pass='', $port=25, $NomDuDomaine='', $debug=false){
    if($serveur){
    $this->serveur = $serveur;
    }
    if($user){
    $this->Authentification_smtp = true;
    $this->login_smtp = $user;
    $this->mdp_smtp = $pass;
    }
    $this->port = $port;
    if($NomDuDomaine){
    $this->NomDuDomaine = $NomDuDomaine;
    }
    $this->debug = $debug;
    }


    //**************************************************************************
    // Fonction de connection SMTP
    //**************************************************************************
    function Connect_SMTP(){
    // Definition du charset
    if(!$this->CHARSET){ $this->CHARSET = mb_internal_encoding(); }

    // Connection au serveur SMTP
    $this->smtp_connection = fsockopen($this->serveur, // Serveur
    $this->port, // Port de connection
    $num_erreur, // Numéros de l' erreur
    $msg_erreur, // Message d' erreur
    $this->time_out); // Durée de la connection en secs
    if(!$this->smtp_connection){// Vérification de la connection
    $this->erreur = 'Impossible de se connecter au serveur SMTP !!!<br />'."\r\n"
    .'Numéro de l' erreur: '.$num_erreur.'<br />'."\r\n"
    .'Message renvoyé: '.$msg_erreur.'<br />'."\r\n";
    return false;
    }

    // Suppression du message d' accueil
    $reponce = $this->get_smtp_data();
    // Debug
    if($this->debug){
    echo '<div style="color:#993300;">Connection</div>',"\r\n",str_replace("\r\n", '<br />', $reponce['msg']);
    }

    // On règle le timeout du serveur SMTP car parfois, le serveur SMTP peut être un peut lent à répondre
    // Windows ne comprend pas la fonction socket_set_timeout donc on vérifi que l' on travail sous Linux
    if(substr(PHP_OS, 0, 3) !== 'WIN'){
    socket_set_timeout($this->smtp_connection, $this->time_out, 0);
    }

    //**********************************************************************
    // Commande EHLO et HELO
    if($this->NomDuDomaine === ''){// On vérifit si le nom de domaine à été renseigné
    if($_SERVER['SERVER_NAME'] !== ''){
    $this->NomDuDomaine = $_SERVER['SERVER_NAME'];
    }else{
    $this->NomDuDomaine = 'localhost.localdomain';
    }
    }

    if(!$this->Commande('EHLO '.$this->NomDuDomaine, 250)){// Commande EHLO
    // Deusième commande EHLO -> HELO
    if(!$this->Commande('HELO '.$this->NomDuDomaine, 250, 'Le serveur refuse l' authentification (EHLO et HELO) !!!')){// Commande HELO
    return false;
    }
    }

    if($this->tls && !$this->Commande('STARTTLS', 220, 'Le serveur refuse la connection sécurisée ( STARTTLS ) !!!')){// Commande STARTTLS
    return false;
    }

    if($this->Authentification_smtp){// On vérifi si l' on a besoin de s' authentifier
    //******************************************************************
    // Authentification
    //******************************************************************
    if(!$this->Commande('AUTH LOGIN', 334, 'Le serveur refuse l' authentification (AUTH LOGIN) !!!')){
    return false;
    }


    //******************************************************************
    // Authentification : Login
    //******************************************************************
    $tmp = $this->Commande(base64_encode($this->login_smtp), 334, 'Login ( Nom d' utilisateur ) incorrect !!!', 0);
    if(!$tmp['no_error']){
    return false;
    }
    // Debug
    if($this->debug){
    echo '<div style="color:#993300;">Envoie du login.</div>',"\r\n",str_replace("\r\n", '<br />', $tmp['msg']);
    }


    //******************************************************************
    // Authentification : Mot de passe
    //******************************************************************
    $tmp = $this->Commande(base64_encode($this->mdp_smtp), 235, 'Mot de passe incorrect !!!', 0);
    if(!$tmp['no_error']){
    return false;
    }
    // Debug
    if($this->debug){
    echo '<div style="color:#993300;">Envoie du mot de passe.</div>',"\r\n",str_replace("\r\n", '<br />', $tmp['msg']);
    }

    }

    //**********************************************************************
    // Connecté au serveur SMTP
    //**********************************************************************
    return true;
    }


    //**************************************************************************
    // Fonctons de set
    //**************************************************************************
    function set_from($name, $email='', $org='Localhost'){
    $this->FromName = $name;
    if($this->Encode){
    $this->FromName = $this->encode_mimeheader(mb_convert_encoding($this->FromName, $this->ISO, $this->CHARSET), $this->ISO);
    }
    if(!empty($email)){
    $this->From = $email;
    }
    $this->org = $org;
    unset($name, $email, $org);
    }

    function set_encode($ISO, $CHARSET=''){
    $this->Encode = true;
    $this->ISO = $ISO;
    $this->CHARSET = $CHARSET;
    unset($ISO, $CHARSET);
    }


    //**************************************************************************
    // System d' encodage par Pierre CORBEL
    //**************************************************************************
    function encode_mimeheader($string){
    $encoded = '';
    $CHARSET = mb_internal_encoding();
    // Each line must have length <= 75, including `=?'.$this->CHARSET.'?B?` and `?=`
    $length = 75 - strlen('=?'.$this->CHARSET.'?B?') - 2;
    $tmp = mb_strlen($string, $this->CHARSET);
    // Average multi-byte ratio
    $ratio = mb_strlen($string, $this->CHARSET) / strlen($string);
    // Base64 has a 4:3 ratio
    $magic = floor(3 * $length * $ratio / 4);
    $avglength = $magic;

    for($i=0; $i <= $tmp; $i+=$magic) {
    $magic = $avglength;
    $offset = 0;
    // Recalculate magic for each line to be 100% sure
    do{
    $magic -= $offset;
    $chunk = mb_substr($string, $i, $magic, $this->CHARSET);
    $chunk = base64_encode($chunk);
    $offset++;
    }while(strlen($chunk) > $length);
    if($chunk){
    $encoded .= ' '.'=?'.$this->CHARSET.'?B?'.$chunk.'?='."\r\n";
    }
    }
    // Chomp the first space and the last linefeed
    return substr($encoded, 1, -2);
    }


    //**************************************************************************
    // Foncton d' ajout de pièce jointe
    //**************************************************************************
    function add_file($url_file){
    if(!$url_file){
    $this->erreur = 'Champs manquant !!!<br />'."\r\n";
    return false;
    }
    if(!($fp = _AT_fopen($url_file, 'a'))){
    $this->erreur = 'Fichier introuvable !!!<br />'."\r\n";
    return false;
    }
    fclose($fp);

    $file_name = explode('/', $url_file);
    $file_name = $file_name[count($file_name)-1];
    $mime = parse_ini_file('./mime.ini');
    $ext = explode('.', $file_name);
    $ext = $ext[count($ext)-1];

    if(IsSet($this->File_joint[$file_name])){
    $file_name = explode('_', str_replace('.'.$ext, '', $file_name));
    if(is_numeric($file_name[count($file_name)-1])){
    $file_name[count($file_name)-1]++;
    $file_name = implode('_', $file_name);
    }else{
    $file_name = implode('_', $file_name);
    $file_name .= '_1';
    }
    $file_name .= '.'.$ext;
    }
    $this->File_joint[$file_name] = array(
    'url' => $url_file,
    'mime' => $mime[$ext]
    );
    unset($file_name, $mime, $ext);
    }


    //**************************************************************************
    // Entêtes (Headers)
    //**************************************************************************
    function headers(){
    // Id unique
    $Boundary1 = '------------Boundary-00=_'.substr(md5(uniqid(time())), 0, 7).'0000000000000';
    $Boundary2 = '------------Boundary-00=_'.substr(md5(uniqid(time())), 0, 7).'0000000000000';
    $Boundary3 = '------------Boundary-00=_'.substr(md5(uniqid(time())), 0, 7).'0000000000000';

    $header = '';
    $No_body = 0;

    // Adresse de l'expéditeur (format : Nom <adresse_mail>)
    if(!empty($this->From)){
    $header .= 'X-Sender: '.$this->From."\n";// Adresse réelle de l'expéditeur
    }
    // La version mime
    if(!empty($this->MIME)){
    $header .= 'MIME-Version: '.$this->MIME."\n";
    }
    $header .= sprintf("Message-ID: <%s@%s>%s", md5(uniqid(time())), $this->NomDuDomaine, "\n")
    .'Date: '.date('r')."\n"
    .'Content-Type: Multipart/Mixed;'."\n"
    .' boundary="'.$Boundary1.'"'."\n"
    // Logiciel utilisé pour l' envoi des mails
    .'X-Mailer: PHP '.phpversion()."\n";
    // Adresse de l'expéditeur (format : Nom <adresse_mail>)
    if(!empty($this->From)){
    if(!empty($this->FromName)){
    $header .= 'From: "'.$this->FromName.'"';
    }else{
    $header .= 'From: ';
    }
    $header .= '<'.$this->From.">\n";
    }
    $header .= 'X-FID: FLAVOR00-NONE-0000-0000-000000000000'."\n";

    // Priorité accordée au mail (valeur allant de 1 pour Urgent à 3 pour normal et 6 pour bas)
    if(!empty($this->Priority)){
    $header .= 'X-Priority: '.$this->Priority."\n";
    }
    // To
    if(!empty($this->To)){// A
    $header .= 'To: '.$this->To."\n";
    }else{
    $No_body++;// Personne
    }
    // Cc
    if(!empty($this->Cc)){// Copie du mail
    $header .= 'Cc: '.$this->Cc."\n";
    }else{
    $No_body++;// Personne
    }
    // Bcc
    if(empty($this->Bcc)){// Blind Carbon Copy, c' est à dire que les adresses qui sont contenue ici seront invisibles pour tout le monde
    $No_body++;// Personne
    }
    // Sujet
    if(!empty($this->Sujet)){
    $header .= 'Subject: '.$this->Sujet."\n";
    }
    if(!empty($this->Confimation_reception)){// Adresse utilisée pour la réponse au mail
    $header .= 'Disposition-Notification-To: <'.$this->Confimation_reception.'>'."\n";
    }
    // ReplyTo
    if(!empty($this->ReplyTo) && $this->ReplyTo !== $this->From && $this->ReplyTo !== 'root_AT_localhost'){// Adresse utilisée pour la réponse au mail
    $header .= 'Reply-to: '.$this->ReplyTo."\n"
    .'Return-Path: <'.$this->ReplyTo.">\n";
    }
    if(!IsSet($_SERVER['REMOTE_ADDR'])){$_SERVER['REMOTE_ADDR'] = '127.0.0.1';}
    if(!IsSet($_SERVER['HTTP_X_FORWARDED_FOR'])){$_SERVER['HTTP_X_FORWARDED_FOR'] = '';}
    if(!IsSet($_SERVER['HTTP_USER_AGENT'])){$_SERVER['HTTP_USER_AGENT'] = 'Internet Explorer';}
    if(!IsSet($_SERVER['HTTP_ACCEPT_LANGUAGE'])){$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'Fr-fr';}
    $host = 'localhost';
    if(function_exists('gethostbyaddr') && $_SERVER['REMOTE_ADDR'] !== '127.0.0.1'){$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);}
    $header .= 'X-Client-IP: '.$_SERVER['REMOTE_ADDR']."\n"
    .'X-Client-PROXY: '.$_SERVER['HTTP_X_FORWARDED_FOR']."\n"
    .'X-Client-Agent: '.$_SERVER['HTTP_USER_AGENT']."\n"
    .'X-Client-Host: '.$host."\n"
    .'X-Client-Language: '.$_SERVER['HTTP_ACCEPT_LANGUAGE']."\n"
    .'Organization: '.$this->org."\n"
    ."\n\n\n"
    .'--'.$Boundary1."\n"
    .'Content-Type: Multipart/Alternative;'."\n"
    .' boundary="'.$Boundary3.'"'."\n"
    ."\n\n"
    .'--'.$Boundary3."\n";
    if($this->ContentType === 'txt' || $this->ContentType === 'txt/html'){
    $header .= 'Content-Type: Text/Plain;'."\r\n"
    .' charset="'.$this->ISO.'"'."\r\n"
    .'Content-Transfer-Encoding: '.$this->Encoding."\r\n"
    ."\r\n";
    if($this->ContentType === 'txt'){
    $header .= $this->Body."\r\n";
    }else{
    $header .= $this->Body_txt."\r\n";
    }
    }elseif($this->ContentType === 'html' || $this->ContentType === 'txt/html'){
    if($this->ContentType === 'txt/html'){
    $header .= '--'.$Boundary3."\r\n";
    }
    $header .= 'Content-Type: Text/HTML;'."\r\n"
    .' charset="'.$this->ISO.'"'."\r\n"
    .'Content-Transfer-Encoding: '.$this->Encoding."\r\n"
    ."\r\n"
    .'<html><head>'."\r\n"
    .'<meta http-equiv="Content-LANGUAGE" content="French" />'."\r\n"
    .'<meta http-equiv="Content-Type" content="text/html; charset='.$this->ISO.'" />'."\r\n"
    .'</head>'."\r\n"
    .'<body>'."\r\n"
    .$this->Body."\r\n"
    .'</body></html>'."\r\n"
    .'--'.$Boundary3.'--'."\r\n";
    }else{
    $header .= 'Content-Type: '.$this->ContentType.';'."\r\n"
    .' charset="'.$this->ISO.'"'."\r\n"
    .'Content-Transfer-Encoding: '.$this->Encoding."\r\n"
    ."\r\n"
    .$this->Body."\r\n";
    }
    $header .= "\n";

    // On joint le ou les fichiers
    if($this->File_joint){
    foreach($this->File_joint as $file_name => $file){
    $header .= '--'.$Boundary1."\n"
    .'Content-Type: '.$file['mime'].';'."\n"
    .' name="'.$file_name.'"'."\n"
    .'Content-Disposition: attachment'."\n"
    .'Content-Transfer-Encoding: base64'."\n"
    ."\n"
    .chunk_split(base64_encode(file_get_contents($file['url'])))."\n"
    ."\n\n";
    }
    }
    $header .= '--'.$Boundary1.'--';

    if($No_body === 3){
    $this->erreur = 'Le mail n' a pas de destinataire !!!';
    return false;
    }
    return $header;
    }


    //**************************************************************************
    // Envoie du mail avec le serveur SMTP
    //**************************************************************************
    function smtp_mail($to, $subject, $message, $header=''){
    // Pas de déconnection automatique
    $auto_disconnect = false;
    // On vérifi si la connection existe
    if(empty($this->smtp_connection)){
    if(!$this->Connect_SMTP()){// Connection
    $this->erreur .= 'Impossible d' envoyer le mail !!!<br />'."\r\n";
    return false;
    }
    $auto_disconnect = true;// Déconnection automatique activée
    }

    // On vérifit Que c' est le premier tour sinon on éfface les anciens paramètres
    if($this->Tour){
    if($this->Commande('RSET', 250, 'Envoie du mail impossible !!!')){
    $this->Tour = 0;
    }
    }

    //**********************************************************************
    // Variables temporairement modifiées
    if(!empty($to)){
    $this->To = $to;
    }
    if(!empty($subject)){
    if($this->Encode){
    $this->Sujet = $this->encode_mimeheader(mb_convert_encoding($subject, $this->ISO, $this->CHARSET), $this->ISO);
    }else{
    $this->Sujet = mb_encode_mimeheader($subject, $this->ISO);
    }
    }

    if(is_array($message)){
    $this->Body = $message[0];
    $this->Body_txt = $message[1];
    if($this->Encode){
    $this->Body = mb_convert_encoding($this->Body, $this->ISO, $this->CHARSET);
    $this->Body_txt = mb_convert_encoding($this->Body_txt, $this->ISO, $this->CHARSET);
    }
    }else{
    $this->Body = $message;
    if($this->Encode){
    $this->Body = mb_convert_encoding($this->Body, $this->ISO, $this->CHARSET);
    }
    }

    //**********************************************************************
    // Y a t' il un destinataire
    if(empty($this->To) && empty($header) && empty($this->Bcc) && empty($this->Cc)){
    $this->erreur = 'Veuillez entrer une adresse de destination !!!<br />'."\r\n";
    return false;
    }

    //**********************************************************************
    // Envoie des informations
    //**********************************************************************

    //**********************************************************************
    // De Qui
    if(!empty($this->From) && !$this->Tour){
    if(!$this->Commande('MAIL FROM:<'.$this->From.'>', 250, 'Envoie du mail impossible car le serveur n' accèpte pas la commande MAIL FROM !!!')){
    return false;
    }
    $this->Tour = 1;
    }

    //**********************************************************************
    // A Qui
    $A = array();
    if(!empty($this->To)){
    $A[0] = $this->To;
    }
    if(!empty($this->Bcc)){
    $A[1] = $this->Bcc;
    }
    if(!empty($this->Cc)){
    $A[2] = $this->Cc;
    }
    foreach($A as $cle => $tmp_to){
    if(substr_count($tmp_to, ',')){
    $tmp_to = explode(',', $tmp_to);
    foreach($tmp_to as $cle => $tmp_A){
    if(!$this->Commande('RCPT TO:<'.$tmp_A.'>', array(250,251), 'Envoie du mail impossible car le serveur n' accèpte pas la commande RCPT TO !!!')){
    return false;
    }
    }
    }else{
    if(!$this->Commande('RCPT TO:<'.$tmp_to.'>', array(250,251), 'Envoie du mail impossible car le serveur n' accèpte pas la commande RCPT TO !!!')){
    return false;
    }
    }
    }

    //**********************************************************************
    // On créer les entêtes ( headers ) si c' est pas fait
    if(empty($header)){
    if(!$header = $this->headers()){
    $this->erreur .= 'Impossible d' envoyer le mail !!!<br />'."\r\n";
    return false;
    }
    }


    //**********************************************************************
    // On indique que l' on va envoyer des données
    if(!$this->Commande('DATA', 354, 'Envoie du mail impossible car le serveur n' accèpte pas la commande DATA!!!')){
    return false;
    }


    //**********************************************************************
    // Envoie de l' entête et du message
    fputs($this->smtp_connection, $header);
    fputs($this->smtp_connection, "\r\n.\r\n");

    $reponce = $this->get_smtp_data();
    // Debug
    if($this->debug){
    echo '<div style="color:#993300;">Entête et message :<br />',"\r\n",'<div style="padding-left:25px;">',str_replace(array("\r\n","\n"), '<br />', $header),'<br />',"\r\n",$message,'</div>',"\r\n",'</div>',"\r\n",str_replace("\r\n", '<br />', $reponce['msg']);
    }
    if($reponce['code'] !== 250 && $reponce['code'] !== 354){
    $this->erreur = 'Envoie du mail impossible !!!<br />'."\r\n"
    .'Numéro de l' erreur: '.$reponce['code'].'<br />'."\r\n"
    .'Message renvoyé: '.$reponce['msg'].'<br />'."\r\n";
    return false;
    }


    //**********************************************************************
    // Variables temporairement modifiées
    if($to === $this->To){
    $this->To = '';
    }
    if($subject === $this->Sujet){
    $this->Sujet = '';
    }

    //**********************************************************************
    // Déconnection automatique
    //**********************************************************************
    if($auto_disconnect){// Auto déconnection ?
    $this->Deconnection_SMTP();// Déconnection
    }

    //**********************************************************************
    // Mail envoyé
    //**********************************************************************
    return true;
    }


    //**************************************************************************
    // Lecture des données renvoyées par le serveur SMTP
    //**************************************************************************
    function get_smtp_data(){
    $data = '';
    while($donnees = fgets($this->smtp_connection, 515)){// On parcour les données renvoyées
    $data .= $donnees;

    if(substr($donnees,3,1) == ' ' && !empty($data)){break;}// On vérifi si on a toutes les données
    }
    // Renvoie des données : array(Code, message complet)
    return array('code'=>(int)substr($data, 0, 3), 'msg'=>$data);
    }


    //**************************************************************************
    // Execution des commandes SMTP
    //**************************************************************************
    function Commande($commande, $bad_error, $msg_error='', $debug=1){
    if(!empty($this->smtp_connection)){
    fputs($this->smtp_connection, $commande."\n");
    $reponce = $this->get_smtp_data();
    // Debug
    if($this->debug && $debug){
    echo '<div style="color:#993300;">',htmlentities($commande),'</div>',"\r\n",str_replace("\r\n", '<br />', $reponce['msg']);
    }

    // Tableau de code valide
    if((is_array($bad_error) && !in_array($reponce['code'], $bad_error)) || (!is_array($bad_error) && $reponce['code'] !== $bad_error)){
    if($msg_error){
    $this->erreur = $msg_error.'<br />'."\r\n"
    .'Numéro de l' erreur: '.$reponce['code'].'<br />'."\r\n"
    .'Message renvoyé: '.$reponce['msg'].'<br />'."\r\n";
    }
    if(!$debug){
    return array('no_error'=>false, 'msg'=>$reponce['msg']);
    }else{
    return false;
    }
    }

    if(!$debug){
    return array('no_error'=>true, 'msg'=>$reponce['msg']);
    }else{
    return true;
    }
    }else{
    $this->erreur = 'Impossible d' éxecuter la commande <span style="font-weight:bolder;">'.$commande.'</span> car il n' y a pas de connection !!!<br />'."\r\n";
    if(!$debug){
    return array('no_error'=>false, 'msg'=>'');
    }else{
    return false;
    }
    }
    }


    //**************************************************************************
    // Fonction de déconnection SMTP
    //**************************************************************************
    function Deconnection_SMTP(){
    if(!empty($this->smtp_connection)){
    if(!$this->Commande('QUIT', 221, 'Impossible de se déconnecter !!!')){
    return false;
    }

    _AT_sleep(5);// On laisse 5 seconde au serveur pour terminer toutes les instructions
    if(!fclose($this->smtp_connection)){
    $this->erreur = 'Impossible de se déconnecter !!!<br />'."\r\n";
    return false;
    }
    return true;
    }
    $this->erreur = 'Impossible de se déconnecter car il n' y a pas de connection !!!<br />'."\r\n";
    return false;
    }
    }
    ?>

    J'ai regardé un peu mais n'étant pas un spécialiste du mail ?

×
×
  • Créer...