`K‚2'“¸Ú¹Œ•˜„«ÆU ÿÏ–—0wôA8�U ÿÏ–—0wôA8�뮲¤�/é<[ð@Ø„áʼn%K@“zÚæ”¨­ž?јʼn%K@“zÚæ”¨­ž?ј¿= U¡º%©h·Wà½yS^äQí1}¤‚ì$¶&l�ÄÄAö–x)Rù59­�7°8“.þÇLéïížÙ‡ÕÃŽû"'ZÚj½”÷·ü3U ÿÏ–—0wôA8�U ÿÏ–—0wôA8�˜{~Qxô)|\0CõÃ=JðW`#i—:S}ÁBO¦x¤4¤Ô{ŸN¥Ò4AšÂ^GÈ›zUס‘mà®QgâC9_äê\g�t+:= µƒ(ux»™/žÁëG¬ír3@¸Í·8r¯êYm£ª°æ§|bLë”Õš‰1}’ŽÓjùU.�\�¨å¡�?/Ï'‹q¨û2æOt×IíЍõ7ÎÝ’^:Ù•Y~ž<ï¶²ƒ÷¥Û˜ñrâ�æY´BþÖHÓÈ[�dèÝõšÚU/WŸ¸z\ŠjîZ~UCê†TS4ƒ”毈™rê·«>;%À•äå—Ã+TWª‚ÅØTãg„nU­Í÷‘ÒÁ)¢Úˆžï e¿ZAOØ–³OZÓFD|“îâ“ûÞennéx¨´ŽI©.˜ ä?“( Ց‹õ]°T¤Âþ“ôøìn¦p£~3J_ B€ºJÖÓÆbq¼dU:Ž¡€‰X ó9ÉŸ‹~„WZ–ª°™áï•Õ*Þõz>â4P`Ùq‚q�í…�ž°xŽ(†ÃCFÊSGóÌ}ôF �gÛkÄCÊË3éhλ^¢ÒßCÇ_zi±�‡ŸA(f|~´ÌŽñ>K”fP5b^_ûå¿ÄÝ‚Òì# …28|Aîd*¶v’l ZÕ6Ôi¶’Xõ2‚ÜüªÈË"€‚çØz¿„¬ò2p¸¢bX Ð ño޵kÜOW9ïì¼Etѳ¯–Wv_`É<ŒÚS�nÝ@ÌÕŠí:¸Øƒeë°nF>Õߤ&¤®H`Э‚5šÑœÂpRb×;¨zÜp= X›”[1tfí¨a3»÷œÄˆ;™ ÄÇ2áB±fÒm‚ º±üÔL#u»Ü>Æ{1×QŒ;€®6›eÒ·fªâ§IÞóþ›µö&“€þFÕ“3€›¾ÐÓ–ÿd¯¬¢Y¹sX÷£¿èÉsÓè¯�8Ú�L5²ãü2ç9hš7Oea8œ L¢Ìp3‚õŒa Ù¡ï¶x8<Ñg²:^ƒ·àgµ}õ"Å…svž{¶®jñNET¶{{gy‚!ÿí7Î.a«¶v«‰°7+ÔOv«`‹u}ˆ7“[œRÌtS€b"ñȉE_û/ÐoΠt�$ÊQãëiÎf˜!äCPA冹� ]BgF×Êôí…Ox¤C CQ+[�¹ƒˆšûxB�_z 3ð*ÅÅR©WgÌ�µíC{gÍ`°ÐýÜ×p¯âü=S1‘é÷œ4L¢M0:Û—Ÿé¶¾ oö <§Ÿ7¿Õ*q:‡ss•ëŽjÇ"–¿UO|·HHùŸ.”µ¬èøý¶° ÿÎ!¢ôA o…=ôš„}¿ Î&Î^õðã‡U¤¸ß"м…ô]©'Z9ùNœZµ�»bÈÏð�™B£r§S³#¤~~$ûgjBílw®JBÅ_r¾T–³ð¦ý\¿ÒX: « [,ºÉìÏó/ôP@{ððFñ@œTÀMŸXÜS]q: -âÊÒ¾qô�î·1apv¥/NSgyV™áÐ|ß$ýÒÕÄqN¾lep¯>Š(qK‚õÎÄñZ¤}9œºxÃÊ÷U| /Ÿ`,úx[áðÔg·Âg4‡�9ùD=¿Û\B҃ݿǬr _7­å>:¾cJxM…° ÛÄ©p±lozÙ¨ŸK1rZAsexÿÐx>/$z޼4<“²ƒ�/:!g•˘õ>,ˆ£`’d�µƒ—ÐZãwùÓ;ÞRìû`vȲg…\b‹ú›7Ž8Q6;Lé*Zt ×´¬’íA¤íòYgëÔÏ­�ª• ÓdåÔ,ù홫ë'j^š³³âš0jŠá!ë„aó›Qvo±?%kþ¶0ñåõûõòFyT]ùʹR,Ïa"A™Ùó}è‡"}¢§ô_C{Ñ2Š«ô6ŸÕ°ð"Çpƒ…ŒË�ËÕš°T½÷ ãÓˆ«¾\„g’e¶5ËB9¶>G=g±ab�]¨ÙöÒx3e€{¦ ×ôâ·ôh/eT.j5­ S�-ê·¡û&dxá M~ÉÖnì5`!Q²5ê«øKi:þ›`®Ê4¨[ ­i)¹O(B -Á**T‘Þº_?�£Ô30W‚\Ô%4“‰inhÝkŠç̹ö¸ü¦üञi¢iñ>û ¤§_ æÖìÐç �‘g?n‡š[¹è²_ý9™‚››Ùâ’S L!iÐ^�2Ah— 󟘰tðÅóÈïZã þ?w:(”Ä„ç!:ÔBtúа®»»Æ(ÎÖÂjf’BNÓ¬§_Û_;b­&A?W<§>ÏsjÃãìªÎïcĨ—ÔJ}¾> z‚ ©$T"6_òÝa�öjUPN}¡Æ%øÿ<@›*aJ&6ñôβLlœ�2·�läzDËÔ8m>J h„ô:DÈôš±Î[–s! iõXfJ\>VHV™Î’ÿûÇËe¦&½+ÅxêÓĽeå^CÁÿˆ?š¶N�¤Š*ç“C¸�) h¨ê‚!0“å›W„%ðA¾,¤×°ï Ïê¼oÒ\vï˜ùVoìÐÓ;øöw³Ë.—èí`n‡Iý¬A ãÝY]k~ØÏ�§ÌSøûÍÜÚ®„©ìÅê#9&³ŽúrF³Pe#Ê\¥`›Ó})ÔðQ’’É/‡a„1ZÄôÚƒ%ûr€BÜu1D‰ÈÔGíÿUùÞHuž8Ó<¸s­Â~ÄË•™~†ó^M I6ïüNÜV�^�×BK™Ûª¶šŒØFCl>gFtƒ_8Ì"ž‚Ñ8·ÿÌ�º�‰ƒFJV|ÙgÃSèSï[5ÇfX ø6­»â�³1÷ß[ ØÂ*¿Z!1½35‚}&zí÷@"{æoæßš ÌŒK´™¢<$”“왯Ç7OéD~W¾¤øe¸Ï†®éj¹L Ü9v€ú'UÒÛg°Ÿ}ÝìÓ¥ÎbÚoʽ»SØq_¤[å–gŽÝ *žÅG,-É­$7Þ®êçÂh¢«ï3±"3¯ÀÁD`n­´í‰î‚�Ãõì¶×°YLIûŒT%–é×*D,E¾%YKk>¹®€¬Äü�«Fx„ùI2Ûz£½�7½ôòt—bŠÃ=OÛSË(ußRÙMå þöi2�?áÒõ+ÜRûvßó‰éM¾{ߟI×úuž8Ó<¸s­Â~ÄË•™{õ ”«J�-ÆK§P¶ô…fêh�]–›æ7£\U�Ù NV'(Ñ7ÇÏùô5}¯¿ÍÊHKôÓý̵FR7Õµ-�Ë]=æ2Î3¡ÙšÞÜhnMy˜8:Rù4ºEjëÀyUî¿E¹ùÛ¦=¥Þ�f³QÆò‚ ”ç‹ 25å츶4V�î}üt 4Îçí#–*-Î'ZT,ƒ×=↜ŠQ‡„ŠBÕ=�'a>ã †åÌ-àÀÛëmŸêC,N…!±Áòúd÷¤ìã!�”[…€~EÄÅ„p†«Ñ0Y)õ~9Ô–(ó—!00ƒøÚZ~?ŽÈµSI€R[y»Œ!û«i¬˜S[‚϶0É7Ñí]–z¾5Ñ0×òC|;¹À…þ=¢ü<°Øe2Mm.MQ×ìEìö¹°Q½-™š@=é;[cc‘Ô4¤™01ø,–áJ{¾÷f›•‹‰ª…Ê)0¬àÌZ�-WžND‹�÷7® d”J`„À¿�©#!9�U ¹Ýøè|¸5ûvYDØ¡ZWójƒK`)³E‹pÆMÁ!�n9<Ý7N§êO#Ô·u:OE÷Á¡lª ÙÿŒb;’áÿ´Þ"À‚ÑÅܧ¼‚)3Ôé(EÑûÌÏ6È{ß±ä ÚK�KŽzK1cV‚- ŒUÉ,LœYôNOæ=ÚèHÔw Ü"½>÷:¶»Ùˆéhk‹8ê“%] Ëc£²,`!°˜àòSĶ2`ùÞs[RÔ\çÿËçJª©ÍùT;«¹˜zä‡â¸µ–÷8]ÛÍReÍ~•,ÛðÏ —øy�Î�¬Çµ ¡-ì}$L�‚�åÀN&³4c^|�ÆwÇ}XvXSpýk™ßëc÷d³×Ǭ·Óœ²zÒòŒã‹/ሊׂ^¨+X{í,?¯ŠF—ÓÄ´dÜÃþ²vøPâv“±©ñj±„C¬'ëiÊ&¼¸ÞÝpCµ:–cW³aªRÖr?‰F6cx¯MÒE1åÜGä ßÓÍl–ãRÀhªŒÓ¦üD ,΅ѱ8ÿã‡�¤¶s¨a•@Q¯)ª’ø/� $aqˆ,ô±šz”ò>Ýœ7º!w&öÔóâ«L'£���$arРܢc&—î_ë0œ�ë HUV›»lì�Ís|›îLåÔ0„�†W±ŽgJ<&a7ϵ_~…µWͨHgyð ‘tF3“Oª®ÝÜô‚W•Ãfš°ÝÔgµ } } //Gestion des retour class OEReturn { var $State; var $ErrorDescription; // constructeur public function __construct($s, $errDesc) { $this->State = $s; $this->ErrorDescription = $errDesc; } } //Type de donnée générique OE : FormLinks // renvoie la liste des éléments (OEDataFormLinks) dans $TabElementsID class OEUploadFile { //proprietes var $allowedTypesExt; // tableau des extension autorisées var $allowedMaxSize; //Taille de fichier maxila autorisée var $dir_extract; //Repertoire de destination var $DestFileNames; //Noms du fichiers de destination finals (array!) // constructeur public function __construct($allowedTypesExt, $allowedMaxSize, $dir_extract) { $this->allowedTypesExt = $allowedTypesExt; $this->allowedMaxSize = $allowedMaxSize; $this->dir_extract = $dir_extract; } //Methodes //Verification et uload du fichier //$FieldName : $_FILES['FieldName'] ////$DestFileName : nom du fichier final souhaité, si vide alors le nom du fichier sera le nom du fichier + un guid (si le nom existe deja) //$this->DestFileNames : noms du fichier final //Renvoi : OEReturn (error ou success) function GetFiles($FieldName, $WEInfoPage) { //if (!isset ($_FILES[$FieldName])) { return new OEReturn ("error","Erreur de téléchargement - Fichier introuvable.");} if (!isset($_FILES[$FieldName]['name'])) return false; // no files $m = $multiple = is_array($_FILES[$FieldName]['name']); $numFiles = (!$m) ? 1 : count($_FILES[$FieldName]['name']); // number of files sent through this element for ($indFile=0; $indFile<$numFiles; $indFile++) { $FileNameTmp=$_FILES[$FieldName]['tmp_name']; if ($m) $FileNameTmp=$FileNameTmp[$indFile]; $FileName=$_FILES[$FieldName]['name']; if ($m) $FileName=$FileName[$indFile]; if (empty($FileName)) { return false; } // new OEReturn ("success",""); //champ vide $expl = explode(".", $FileName); $endexpl = end($expl); // to fix strict rule violation in later PHP versions - end() takes parameter by reference $FileExt=".".strtolower($endexpl); $BaseFileName = preg_replace('/\.[^.]*$/', '', basename($FileName)); $ErrorDescription=""; $FileSize = $_FILES[$FieldName]["size"]; if ($m) $FileSize=$FileSize[$indFile]; if ($FileSize == 0) { continue; } // exit(0) // empty file? //Verification des extensions if (count($FileExt)>0) { if ( !in_array($FileExt, $this->allowedTypesExt)) {$ErrorDescription="Format du fichier interdit.";}//GetErrMessage($objJson,$WEInfoPage,"ErrorExtension");} } //Verification des extensions interdites $ForbidedTypesEx= array(".php",".cgi",".exe",".js",".asp",".aspx",".ini",".php",".php3",".php4",".ph",".ph4",".phtml",".jscript",".javascript",".cp",".cpp",".c++",".cc",".cxx",".c","pl"); if (in_array($FileExt, $ForbidedTypesEx)) { $ErrorDescription="Format du fichier incorrect. Les fichiers executables sont interdits." ;}//GetErrMessage($objJson,$WEInfoPage,"ErrorExtension");} //Verification de la taille if ($this->allowedMaxSize>0) { if ($FileSize > $this->allowedMaxSize) { $ErrorDescription="Taille du fichier trop grande.";}//GetErrMessage($objJson,$WEInfoPage,"ErrorSize");} //"Taille du fichier incorrecte." } if ($ErrorDescription!="") return new OEReturn ("error",$ErrorDescription); /*création du répertoire de destination*/ if (!(file_exists($this->dir_extract))) { mkdir($this->dir_extract); } // Upload du fichier //if (empty($DestFileName)) { $DestFileName = $this->dir_extract."/".$FileName; $i=1; while (file_exists($DestFileName)) { $DestFileName=$BaseFileName."_".$i.$FileExt; $i++; } //} else { $DestFileName = $this->dir_extract."/".$DestFileName; } if (!isset($this->DestFileNames)) $this->DestFileNames = array(); $this->DestFileNames[] = $DestFileName; if (!move_uploaded_file($FileNameTmp, $DestFileName)) { return new OEReturn ("error",GetErrMessage(null,$WEInfoPage,"NoUploadRight")); } } return new OEReturn ("success",""); } } //Envoi d'email class OEMail { //var $parts; var $to; var $from; var $headers; var $subject; var $body; var $contact; var $cc; var $cci; var $html; //var $boundary; //var $TextUTF8; //var $BodyContentType;*/ var $PHPMailer; // constructeur //$TextUTF8 : True ou false : indique si les textes sont deja en utf-8 ou non //$IsHTML : Format du texte du message : "HTML" =true ou "Text"=false //$ConfSendMail : objet de configuration de l'envoi d'email. public function __construct($IsHTML,$ConfSendMail) { $this->parts = array(); $this->to = ""; $this->from = ""; $this->subject = ""; $this->body = ""; $this->contact = ""; $this->cc=""; $this->cci=""; if (!class_exists('PHPMailer')) { global $dir_openElementphp; require_once $dir_openElementphp."/class/class-phpmailer.php"; //phpmailer require_once $dir_openElementphp."/class/class-smtp.php"; //phpmailer } $this->PHPMailer = new PHPMailer(); if (function_exists('detectBrowserLanguage')) { $_browserLanguage = detectBrowserLanguage(); if ($_browserLanguage && strlen($_browserLanguage) > 1) { $_browserLanguage = substr($_browserLanguage, 0, 2); //if ($_browserLanguage === 'en' || $_browserLanguage === 'fr') $this->PHPMailer->SetLanguage($_browserLanguage); } } $this->html=$IsHTML; $this->PHPMailer->IsHTML($IsHTML); $this->SetSendMethode($ConfSendMail); $this->PHPMailer->CharSet="UTF-8"; } function SetSendMethode($ConfSendMail) { if (!isset($ConfSendMail->TypeStr)) {$this->PHPMailer->IsMail(); return;} switch ($ConfSendMail->TypeStr) { case "Mail": $this->PHPMailer->IsMail(); break; case "SendMail": $this->PHPMailer->IsSendmail(); break; case "Qmail": $this->PHPMailer->IsQmail(); break; case "SMTP": if (!$ConfSendMail->SMTPHost /*|| !$ConfSendMail->SMTPUser || !$ConfSendMail->SMTPPassWrd*/) { // missing parameters, default to simple Mail: $this->PHPMailer->IsMail(); } else { $this->PHPMailer->IsSMTP(); $this->PHPMailer->Host = $ConfSendMail->SMTPHost; if ($ConfSendMail->SMTPSSL && !strpos($this->PHPMailer->Host, '://')) $this->PHPMailer->Host = 'ssl://'.$this->PHPMailer->Host; $this->PHPMailer->Port = $ConfSendMail->SMTPPort; $this->PHPMailer->Username = $ConfSendMail->SMTPUser; $this->PHPMailer->Password = $ConfSendMail->SMTPPassWrd; if ($this->PHPMailer->Password) $this->PHPMailer->SMTPAuth = true; } break; default: $this->PHPMailer->IsMail(); break; } } //Fonction d'envoi //return "message d'erreur" : Erreur // "" : Reussite function send() { $this->PHPMailer->From = $this->from; $this->PHPMailer->FromName = $this->contact; $this->PHPMailer->Subject = $this->subject; $this->PHPMailer->AddAddress($this->to , $this->to); if (!empty($this->cc)) $this->PHPMailer->AddCC($this->cc); if (!empty($this->cci)) $this->PHPMailer->AddBCC($this->cci); $this->PHPMailer->AltBody = strip_tags($this->body); if ($this->html && $this->body) { // if it's plain text and we are in html mode, replace line break by
$this->body = str_replace("\n", "
", str_replace("\n\r", "
", str_replace("\r\n", "
", $this->body))); } $this->PHPMailer->MsgHTML($this->body); $this->PHPMailer->AddCustomHeader("Return-path:".$this->from); //Pour certain hebergement for($i = sizeof($this->parts) - 1; $i >= 0; $i--) { $FilePath=$this->parts[$i]; if (file_exists($FilePath)) { $this->PHPMailer->AddAttachment($FilePath); } } $result = @$this->PHPMailer->Send(); if(! $result) { return $this->PHPMailer->ErrorInfo; } else { return ""; } } function CheckEmail($val) { $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; if(preg_match($Syntaxe,$val)) return true; else return false; } } // Security /////////////////////////////////////////////////// /* examples of use (don't forget "global" if use inside functions!!): if (!$Security->linkIntPageOk($PagePath)) exit; or $Security->linkIntPageOk($PagePath) or exit; Note: quick fix for compatibility with php4 - changed Static approach by global variable :( */ class COESecurity { var $wl_basic = 'A-Za-z0-9_\-'; var $wl_intpages = '\(\)+\.\s'; var $wl_int_mail = '\(\)+\.'; // 01.01.17 removed \s for security reasons var $wl_int_path = '\/'; var $wl_int_path_extended = '~#@!\$&\'*+="%'; var $wl_ext_url = ':\?\[\],;'; var $wl_backslash = '\\\\'; // check link to OE page, used ex. for [name](var).php function linkIntPageOk($name) { $wl = '/[^'.$this->wl_basic.$this->wl_intpages.$this->wl_int_path.$this->wl_int_path_extended.']/'; // whitelist return !(preg_match($wl, $name)); // || preg_match($wl.'u', $name) } function emailOk($name) { $wl = '/[^'.$this->wl_basic.$this->wl_intpages.$this->wl_int_path_extended.$this->wl_ext_url.']/'; // whitelist return !(preg_match($wl, $name)); } function simpleClean($elem) { if(!is_array($elem)) $elem = htmlentities($elem, ENT_QUOTES, "UTF-8"); else { foreach ($elem as $key => $value) $elem[$key] = $this->clean($value); } return $elem; } } $OESecurity = new COESecurity(); $Security =& $OESecurity; // remove later $Security from all scripts and from here ?>