Aller au contenu

sparh

Hubmaster
  • Compteur de contenus

    583
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par sparh

  1. salut, pas mal je viens de m'inscrire. on peux ajouter plusieurs site sur le même compte et il semble que ça gère aussi le changement d'ancre des liens. Merci pour l'info
  2. Yes, merci Ernestine c'est ta solution qui marche en plus c'est plus lisible et facile à modifier. captain_torche --> ta solution ne marchait pas. Merci à tous en tous cas
  3. 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
  4. 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
  5. 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
  6. Bonjour, non non je parle bien d'une requête du type : INSERT INTO `Table`(`colonne_un`) VALUES ('a&b') (colonne_un étant VARCHAR) Quand je récupère les données insérée j'ai tout jusqu'au &. Dans ce cas je n'ai que a ! Merci d'avance
  7. Bonjour, depuis ce matin je bloque la dessus : comment insérer une chaîne de caractère contenant & dans un champ de ma base de donnée ? J'ai trouvé set define off et set scan off mais je ne sait pas trop comment les faire fonctionner. Merci d'avance pour votre aide.
  8. Ouahou, merci pour cette réponse complète. Je vais donc faire des tests voir si je peux utiliser delegate et voir si ça accélère un peu. Encore merci à tous
  9. 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 ?
  10. 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
  11. 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
  12. Ok merci pour tes conseils, je vais continuer dans ce sens.
  13. 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
  14. 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
  15. Bonjour, je cherche à recharger certains contenus de mes pages via javascript. Au début j'utilisais load de jquery avec un settimout puis je me suis mis au setinterval mais peux être y'a t'il de meilleure technique ? D'autant que certains de mes utilisateurs se plaignent de ralentissement. Merci d'avance pour vos conseils
  16. 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
  17. Merci pour ces infos. Le truc c'est que maintenir un site ça demande du temps Je vais voir le netlinking pour voir si ça vaut le coup de rediriger.
  18. 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 ?
  19. 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
  20. Salut, je te conseille http://www.reglement.net/ , simple rapide et pas très cher. (j'ai bien sur utilisé et utilise encore leurs services)
  21. Bonjour, juste pour cloturer le sujet, en cherchant j'ai trouvé http://www.webmaster-hub.com/topic/21620-classe-php-gerant-le-mail/ qui renvoi sur PHP Mailer qui marche très bien.
  22. 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 ; }
  23. 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...