
sparh
Hubmaster-
Compteur de contenus
602 -
Inscrit(e) le
-
Dernière visite
Tout ce qui a été posté par sparh
-
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 ; }
-
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 ?
-
Bonjour, quand j'envoie des mails depuis mon site j'ai un problème d'encodage (l'utf8 ne passe pas) mais que dans l'objet des mails. éè se transforme en éÃÂ, par contre pas de souci dans le contenu. J'ai cherché et je ne comprends pas d'ou peut venir le problème. Voilà l'entête de mes mails: Delivered-To: test_AT_gmail.com Received: by 00.000.000.00 with SMTP id 2cs412274hbu; Thu, 25 Mar 2010 10:03:50 -0700 (PDT) Received: by 10.204.23.6 with SMTP id p6mr1739165bkb.67.1269536626204; Thu, 25 Mar 2010 10:03:46 -0700 (PDT) Return-Path: <contact_AT_monsite.fr> Received: from nxxxx1.ovh.net (nxxxx1.ovh.net [000.000.000.00]) by mx.google.com with ESMTP id 13si4036633bkj.22.2010.03.25.10.03.44; Thu, 25 Mar 2010 10:03:44 -0700 (PDT) Received-SPF: pass (google.com: domain of contact_AT_monsite.fr designates 000.000.000.00 as permitted sender) client-ip=000.000.000.00; Authentication-Results: mx.google.com; spf=pass (google.com: domain of contact_AT_monsite.fr designates 000.000.000.00 as permitted sender) smtp.mail=contact_AT_monsite.fr Received: from nxxxxxx.ovh.net ([000.000.000.00] helo=monsite.fr) by nsxxxxxxx.ovh.net with esmtpa (Exim 4.71) (envelope-from <contact_AT_monsite.fr>) id 1NuqSU-0000GD-Ue for contact_AT_monsite.fr; Thu, 25 Mar 2010 18:03:02 +0100 X-Sender: contact_AT_monsite.fr MIME-Version: 1.0 Message-ID: <4bcbe0800a7d21dedee71da2184ef3d4_AT_monsite.fr> Date: Thu, 25 Mar 2010 18:03:02 +0100 Content-Type: Multipart/Mixed; boundary="------------Boundary-00=_1fb5c030000000000000" X-Mailer: PHP 5.2.13 From: "Mon Site"<contact_AT_monsite.fr> X-FID: FLAVOR00-NONE-0000-0000-000000000000 X-Priority: 3 To: webmaster_AT_monsite.fr Subject: =?UTF-8?B?w4PCg8OCwqnDg8KDw4LCqEBAIHRlc3Q=?= X-Client-IP: 80.200.000.100 X-Client-PROXY: X-Client-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; fr; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 GTB6 (.NET CLR 3.5.30729) X-Client-Host: mol92-4-82-229-175-182.fbx.proxad.net X-Client-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 Organization: --------------Boundary-00=_1fb5c030000000000000 Content-Type: Multipart/Alternative; boundary="------------Boundary-00=_23fcf390000000000000" --------------Boundary-00=_23fcf390000000000000 Content-Type: Text/HTML; charset="UTF-8" Content-Transfer-Encoding: 8bit <html><head> <meta http-equiv="Content-LANGUAGE" content="French" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> Je vois Subject: =?UTF-8?B?w4PCg8OCwqnDg8KDw4LCqEBAIHRlc3Q=?= Mais je sais pas trop ce que c'est ? Si quelqu'un trouve le problème et peux m'aider. Merci d'avance
-
Bonsoir et merci mais je pense que je m'étais mal exprimé. Enfin j'ai fini par trouver une solution en faisant une fonction. function compare_score($score,$score_comparaison,$type_de_tri) { if($type_de_tri == 'croissant') // 2 { if($score < $score_comparaison) return true ; } elseif($type_de_tri == 'decroissant') //type 0 et 1 { if($score > $score_comparaison) return true ; } else { return false ; } }
-
Bonjour, je sais pas si mon titre est clair mais voià ce que je souhaite faire et je ne sait pas 1 si c'est possible 2 quelle syntaxe utiliser <?php if$ordre == 'croissant') { $signe = '>' ; } elseif($ordre == 'decroissant') { $signe = '<' ; } // et la ce que je veux faire if($var1 $signe $var2) { ... } Savez vous si c'est possible ? Merci d'avance
-
Bonjour, je galère depuis plusieurs jours sur ce problème, fusionner 2 tableaux associatifs, exemple: Mes 2 tableaux: tablo_membre Array ( [0] => Array ( [id] => 1 [pseudo] => jimmy [point] => 13 [id_parrain] => 0 ) [1] => Array ( [id] => 2 [pseudo] => jhon [point] => 0 [id_parrain] => 0 ) ) tablo_score Array ( [0] => Array ( [score_final] => 18 ) [1] => Array ( [score_final] => 0 ) ) et ce que j'aimerai avoir Array ( [0] => Array ( [id] => 1 [pseudo] => jimmy [point] => 13 [id_parrain] => 0 [score_final] => 18 ) [1] => Array ( [id] => 2 [pseudo] => jhon [point] => 0 [id_parrain] => 0[score_final] => 0 ) ) J'ai testé array_merge, array_combine et plein d'autre fonctions sans trouver alors si vous pouviez m'aider ce serait génial! Merci d'avance
-
Bonsoir, je comprends pas ce que je faisait mal mais génial, ça marche. merci bien à tous les deux.
-
Bonjour et merci captain, le tuto et bookmarké, merci. jcaron, avec \b j'arrive bien à modifier que les mots entier. Mais le problème de preg_replace c'est qu'il fait attention à la casse. Est il possible d'éviter ce problème ? De plus je lis dans le manuel php qu'on peu utiliser la variable limit dans preg_replace pour limiter le nombre de remplacement à effectuer mais je n'arrive pas à l'utiliser (je suis bien en php 5), une idée ?
-
Bonsoir, j'essaie de faire une fonction php qui ajoute un lien sur un mot dans une chaîne, jusqu'ici ça va. Il faut respecter la casse et ne remplacer QUE les mots entiers Voilà ma fonction function add_lien_dans_description($chaine,$mot_interdit) { if($mot_interdit = '0') { $sql='SELECT keyword,url_k FROM keywords WHERE ORDER BY id ASC'; } else { $sql='SELECT keyword,url_k FROM keywords WHERE keyword <> "'.$mot_interdit.'" ORDER BY id ASC'; } $req=mysql_query($sql) or die('Erreur SQL ! <br>'.$sql.'<br>'.mysql_error()); while($data = mysql_fetch_array($req)) { $in[] = ' '.$data['keyword'].''; ; $out[] = ' <a href="'.$url_site.'/'.stripslashes($data['url_k']).'.html" >'.stripslashes($data['keyword']).'</a> '; } mysql_free_result($req); // str_ireplace ne prends pas en compte la casse $chaine = str_ireplace($in, $out, $chaine); return $chaine ; } Donc j'ai mis un espace devant le mot à remplacer mais ça ne suffit pas, et si je met un espace après le mot à rechercher, tout les mots suivi d'une virgule ou d'un point ne seront pas pris en compte. Exemple: $chaine = 'Webmaster hub le forum des webmasters'; $mot_rechercher = 'web'; $rendu = '<a href="le_lien">Web</a>master Hub le forum des <a href="le_lien">web</a>masters' Alors que dans ce cas la il ne devrait pas y avoir de remplacement. Je cherche depuis quelque temps sans trouver, alors si jamais vous pourriez m'aider ce serai génial. Merci d'avance
-
En fait moi c'est d'un point de vue plus général/long terme que j'ai un problème. Avec des résultats personnalisé on laisse Google choisir ce qui pour lui devrai nous intéresser mais comme je l'ai dit dans le premier post, quid de la curiosité et de l'innovation ? Toutes nos actions/achats/clics ne suivent pas forcément une logique, or avec un tel système la diversité des résultats va en prendre un coup!
-
Merci pour cette réponse "Le métier de SEO est loin d'être mort" --> je suis tout à fait d'accord mais il a bien changé: aujourd'hui le référencement (pour moi) c'est améliorer le trafic d'un site, or comme tu le dis, tout le trafic d'un site ne vient pas des moteurs de recherche, donc pour moi le SEO est bien plus large que Search Engine Optimisation (optimisation onpage et offpage, réseau sociaux, SEM, emailling, utilisabilité du site...), y'a t'il un mot qui défini ce métier ? Sinon je suis assez d'accord avec toi sauf pour la personnalisation des résultats qui n'est à mon goût pas une bonne chose pour la diversité et la concurrence sur le web (les gros sites vont obtenir encore plus de visibilité).
-
Bonjour, les annonces de Google pleuvent, trois ont retenu mon attention et j'aimerai savoir ce que vous en pensez: Les résultats naturels ne représentent plus que 21% d'une page de SERP (source) = recherche universelle qui prends plus de place Personnalisation des résultats activées par défaut recherche temps réel Suite à ces annonces certains parlent de la fin du métier de SEO; d'autre, (comme moi) pensent au contraire que le métier de SEO est de plus en plus important dans la stratégie WEB d'une société, et vous ? Ce qui m'interpelle le plus c'est la recherche personnalisée activée par défaut (ie: dorénavant que l'on est un compte Google ou pas les résultats d'une requête varient en fonction de votre historique web). Je ne comprends pas l'intérêt de Google, les utilisateurs seront surement content sur le court terme mais sur le long terme ça fait carrément peur, en effet la 1ère page de résultats sera monopolisée par les sites favoris de l'utilisateur. Quid de la pensée unique ou de l'innovation ? Bref avec une telle fonctionnalité les utilisateurs iront voir de moins en moins de site. On peu faire l'analogie avec la Une d'un journal qui personnaliserai les articles affichés en fonction des intérêt du lecteur, sur le court terme ok, mais que fais t''on de la curiosité qui fait découvrir (lire/cliquer) des choses auxquelles on aurait pas pensé au départ (avant de faire la recherche/acheter le journal). Voilà, je me pose des questions sur l'avenir du métier de SEO mais aussi de la recherche en général ou même d'internet et j'aimerai savoir ce que vous en pensez, si vous avez des avis ou si ça vous laisse indifférent ? ps: il y a aussi l'interview du PDG de Google qui fait un peu peur sur la gestion des données personnelles du plus grand moteur de rcecherche: "Si vous faites quelque chose que personne ne doit savoir, peut-être devriez-vous commencer par ne pas le faire. " (source)
-
personnalisation des résultats google
sparh a répondu à slender - Forum : Techniques de Référencement
On a Google Webmaster Tool qu, je pense donne des résultats sans prendre en compte la personnalisation. -
Amélioration des performances et référencement
sparh a répondu à sparh - Forum : Les fondations d'un site
Merci oui je suis au courant de GG Caféine Je me doute qu'un mutu ne vaudra jamais un dédié. Mais ce que j'aimerai savoir c'est: 1- si les modifs que j'ai fait sont vraiment utiles 2- si ça peu avoir un impact sur mon référencement (je parle d'impact positif comme négatif) Suivant vos réponse et les graphs que j'aurai dans Google Webmaster Tool onglet Lab > Performance (depuis ce matin) j'appliquerai les modifs à tous mes sites. -
Amélioration des performances et référencement
sparh a répondu à sparh - Forum : Les fondations d'un site
Salut Captain, lol, je l'avoue j'ai fait un copié collé d'un article que j'ai trouvé en cherchant "activer gzip mutualisé ovh". Sinon des remarques sur ce que j'ai fait (utile / pas utile), et surtout par rapport à ma question: impacte sur le référencement ? -
Amélioration des performances et référencement
sparh a ajouté un sujet dans Les fondations d'un site
Bonjour, j'ai décidé de travailler sur le temps de chargement de mes sites, n'y connaissant pas grand chose j'ai essayé de suivre les indications données ici: />http://developer.yahoo.com/performance/rules.html Voici ce que j'ai mis en place: fichier .htaccess (gzip) j'ai ajouté SetEnv REGISTER_GLOBALS 0 SetEnv ZEND_OPTIMIZER 1 SetEnv MAGIC_QUOTES 0 # Activer le filtre SetOutputFilter DEFLATE # Netscape 4.x crée quelques problèmes… BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 en ont encore d’autres BrowserMatch ^Mozilla/4\.0[678] no-gzip # IE se déguise en Netscape, mais OK BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # On ne compresse pas les images: le sont déjà SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary # Pour que les proxies ne transmettent pas un mauvais contenu Header append Vary User-Agent env=!dont-vary CSS J'ai tous mis dans un fichier CSS (au lieu de 4) je l'appelle avec link (avant j'utilisais _AT_import) php flush() ajout de </head> <?php flush(); ?> <body Javascript Tous les js dans un seul master file (au lieu de 8 avant) Avec ce site http://webwait.com/ j'ai testé à chaque étape et mes moyennes s'améliores à chaque fois (plutôt bon signe). Ma question: Ce que j'ai fait semble avoir réelement amélioré la vitesse de chargement de mes pages MAIS j'ai un peu peur qu'il y ai un impact négatif sur mon référencement (ce qui m'inquiette en particulier c'est gzip et flush()). qu'en pensez vous ? Au cas ou ça peu servir, je suis en mutualisé chez OVH. Merci d'avance -
En fait je cherche des tutoriaux, des sites explicatifs... Je cherche mais je ne trouve vraiment pas grand chose sur le sujet!
-
Merci je vais faire le tour des prestataires que vous me conseillez. Cependant je ne vends rien, l'objectif de ma neewsletter est de : - créer un lien entre les utilisateurs et le site - fidéliser les utilisateurs Pensez vous que ça soit rentable de faire ce genre d'action (je travaille sur le long terme) ? ps: _AT_Gorapat , à ce jour je n'envoi pas de newsletter
-
Dans la catégorie qui me concerne et que je surveille régulièrement on trouve plein de site spammy sur Dmoz Je ne prends vraiment plus cet annuaire au sérieux, c'est dommage. ps: mon site était validé puis il a disparu au profit de site très très bizarre!
-
Bonjour, J'envoie actuellement très peu de mail (100 à 500 par mois), et tous partent avec la fonction mail de php. Je souhaite commencer à envoyer des newsletter mais je n'y connais strictement rien dans ce domaine. Je me doute que je ne peu pas faire une boucle et envoyer mes mail via mail de php sous peine d'être blacklisté. Bref je cherche des informations pour apprendre à envoyer une newsletter proprement. Infos : J'ai une base de 3-4000 contacts en opt-in (ils on coché la case: je souhaite recevoir une newsletter) et je souhaiterai envoyer une newsletter une fois par mois. Je suis en mutualisé chez ovh Etant un particulier je n'ai que très peu de budget à engager par contre je suis prêt à apprendre et à y passer le temps qu'il faudra Je ne suis pas pressé je souhaite faire les choses proprement Merci d'avance pour vos conseils
-
Bonjour, merci pour vos réponses j'audit et j'optimise actuellement mes sites. Mais les ralentissement étaient bien du à des pics de trafic réel, je le sais car: - pic des revenus publicitaire - effet de buz (1er sur un gros mot clé dans Google) - confirmation sur GG Analytics Merci en tous cas pour vos conseils
-
Salut, en effet parfois (forte affluence) le temps de chargement est largement supérieur à quelque secondes, il arrive même que ça finisse par renvoyer une erreur 500! Les sites sont vieux (2-3 ans) et je n'ai jamais eu ce problème seulement récemment avec des pics d'affluences. Je travaille actuellement sur l'optimisation des pages et des requêtes mais je ne suis pas sur que ça suffise.
-
Bonsoir, Je commence à avoir des problèmes de ralentissement quand il y a un fort trafic sur mes sites. Je me demandais donc s'il fallait que je passe sur un serveur dédié, mais ça coute très cher: location du serveur + infogérance ! Bref je ne veux pas me lancer là dedans si ce n'est pas nécessaire. Ma question: comment savoir si il faut passer en dédié ou non ? nombre de visites, pages vues, bande passante ? Merci d'avance