<?
/* ----------------------------------------------------------------------------
F O N C T I O N S
PHPMyRing (4.0) dernière modification du fichier [13-01-02]
---------------------------------------------------------------------------- */
# # # # # # # #
# Création des variables de configuration #
# # # # # # # #
// Renvoie un tableau $conf['var']
function config()
{
$link=connecte();
$res=requete("SELECT * FROM webring_conf WHERE idconf=1");
$nb=mysql_num_rows($res);
////mysql_close();
if ($nb=1)
{
$conf=mysql_fetch_array($res);
return $conf;
}
else
{
echo "<p>";
echo _("Erreur lors de la récupération des variables de configuration !");
echo "</p>";
}
unset($conn,$res,$nb,$rqt);
mysql_free_result($res);
mysql_close($link);
}
# # # # # # # #
# Vérification d'une adresse d'email #
# # # # # # # #
// Merci à Mikaël PIRIO ;)
function is_email($test)
{
$test=trim($test);
$ret=ereg('^([a-z0-9_]|\\-|\\.)+'.'@'.'(([a-z0-9_]|\\-)+\\.)+'.'[a-z]{2,4}$',$test);
if (ereg("win",strtolower(PHP_OS)))
{
return($ret);
}
else
{
if ($ret)
{
list($user,$domaine)=split("@",$test,2);
if (checkdnsrr($domaine,"MX"))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
# # # # # # # #
# Vérification d'une adresse Internet #
# # # # # # # #
function is_url($test)
{
$test = trim($test);
// 7 premiers caractères
$ok=ereg("^http://",$test);
return($ok);
}
# # # # # # # #
# Fonctions pour MySQL #
# # # # # # # #
// Connection
function connecte()
{
global $host, $login, $mdpSQL, $link;
$link=mysql_connect($host, $login, $mdpSQL)
or die ('<div class="message-info-actions">'.
_("Connexion à la base de données impossible").
'</div>');
return $link;
}
// Requete MySQL avec gestion d'erreur...
function requete($rqt)
{
global $base, $link;
mysql_select_db($base);
$res=mysql_query($rqt)
or
die ('<div class="message-info-actions">'.
_("<b>Erreur MySQL</b>").' : <br />'.
_("Requète").' : <code>'.$rqt.'</code><br />'.
_("Réponse").' : '.mysql_error().'
</div>');
// Obsolète
// $res=mysql_db_query($base,$rqt) or die ('<p>Erreur MySQL : <br>Requète :<b>'.$rqt.'</><br>Réponse :'.mysql_error().'</p>');
return($res);
}
# # # # # # # #
# Envoi d'un courrier #
# # # # # # # #
// Vous pouvez la modifier selon votre convenance !
function courrier($de,$a,$sujet,$body)
{
global $conf,$REMOTE_ADDR,$emailadm,$REQUEST_URI;
$body=stripcslashes($body);
$sujet=stripcslashes($sujet);
$date = date("D, j M Y H:i:s +0200");
$tt="From: ".$de."\n";
$tt.="Date: $date"."\n";
// $tt.="Reply-To:".$de."\n"; // pas std
$tt.="X-Mailer: PHP/".phpversion()." PHPMyRing ".$conf['version']."\n";
$tt.="X-Operating-System: ".PHP_OS."\n";
$tt.="X-Sender-IP: ".$REMOTE_ADDR."\n";
$tt.="X-URL: ".$conf['adresse_site'].$REQUEST_URI."\n";
$tt.="Mime-Version: 1.0\n";
$tt.="Content-Type: text/plain; charset="._("iso-8859-15");
return mail("$a","$sujet","$body",$tt);
$body=nl2br($body);
$tt=nl2br(htmlentities($tt));
/*if (print "<p><b><u>Courrier envoyé à l'adresse</u></b> : $a<br>
<b>En-tete</b> : $tt<br>
<b>Pour sujet</b> : $sujet<br>
<b>Texte du message</b> : $body<br></p>") return true; */
}
# # # # # # # #
# Recherche d'un texte dans une page #
# # # # # # # #
// La fonction retourne 0 si le fichier n'existe pas
// 1 contient la recherche
// 2 ne contient pas la recherche
// MERCI DANIEL !!!!!!! (http://hapedit.free.fr)
function Analyse($Koi,$Dans)
{
// Initialisation des variables
$contenu=""; // Le tampon
if ($fp=@fopen($Dans,"r")) // Ouverture du fichier
{
while (($fp) and (!feof($fp))) // Tant que la connexion est ouverte et l'on est pas à la fin du fichier
{
$contenu.=fread($fp, 1024); // On lit le bloc suivant
$taille=strlen($contenu); // Taille du tampon
if (($taille>4095) || (feof($fp)))
{
$res=ereg($Koi,$contenu); // Recherche
if ($res==true) break; // C'est bon, on a trouvé, arrete toi là !
$contenu=substr($contenu,3072); // Réduction du tampon
}
}
fclose($fp);
// interprétation du résultat
if ($res==true) return 1;
elseif ($res==false) return 2;
}
else
{
return 0;
}
}
# # # # # # # #
# Encodage des adresse d'email #
# # # # # # # #
// Cette fonction affiche un lien mailto et code l'adresse d'email
function codemail($e)
{
list($user,$domaine)=split("@",$e,2);
$sortie=". . . no spam. . . ". $user." . . . a r o b a s e . . . ".$domaine." . . . no spam";
return "<a href=\"mailto:$sortie\">$hide@address.com</a>";
}
# # # # # # # #
# Récupération du ou des emails du ou des administrateurs #
# # # # # # # #
function recupemail()
{
global $rqt,$conf;
if ($conf['mailadm']=="all")
{
// On va rechercher les mails des administrateurs....
$link=connecte();
$res=requete("SELECT emailadm FROM webring_adm");
while ($row=mysql_fetch_array($res))
{
$to.=$row['emailadm'];
$to.=",";
}
return $to;
}
else
{
return $conf['mailadm'];
}
unset($conn,$res,$rqt,$row);
mysql_free_result($res);
mysql_close($link);
}
# # # # # # # #
# Récupération des variables #
# # # # # # # #
function resolve($id_du_membre,$str)
{
$link=connecte();
global $res, $membre,$conf,$rqt;
$rqt = "SELECT email,webmaster,site_nom,pseudo,mdp,url ".
"FROM webring ".
"WHERE idsite='$id_du_membre'";
$res=requete($rqt);
$membre=mysql_fetch_array($res);
////mysql_close();
// Configuration
$conf=config();
$chemin=$conf['adresse_site']."/".$conf['dossierwr'];
$str=ereg_replace("#CHEMINDUWEBRING",$chemin,$str);
$str=ereg_replace("#SIGNATURE",StripSlashes($conf['signature']),$str);
$str=ereg_replace("#TYPEDEWEBRING",StripSlashes($conf['type']),$str);
$str=ereg_replace("#NOMDUWEBRING",StripSlashes($conf['nomwr']),$str);
$str=ereg_replace("#NOMDUSITE",StripSlashes($membre['site_nom']),$str);
$str=ereg_replace("#NOMDUWEBMASTER",$membre['webmaster'],$str);
$str=ereg_replace("#PSEUDODUMEMBRE",$membre['pseudo'],$str);
$str=ereg_replace("#MOTDEPASSEDUMEMBRE",$membre['mdp'],$str);
$str=ereg_replace("#URLDUSITE",$membre['url'],$str);
return $str;
mysql_close($link);
}
# # # # # # # #
# Génération du fichier Log #
# # # # # # # #
//Dans $chemin, mettre ../ ou rien pour accéder au dossier include
function addinlog($chemin,$action,$etat)
{
global $REMOTE_ADDR,$SCRIPT_NAME;
$date=date("d/m/Y @ H:i:s");
$texte="$date : $action ($REMOTE_ADDR in $SCRIPT_NAME) --> $etat<br />\n";
$fp=fopen($chemin."include/log","a+");
fwrite($fp,$texte);
fclose($fp);
}
# # # # # # # #
# Menu déroulant des langues #
# # # # # # # #
function menu_lang($chemin,$lang_sel)
{
global $PHP_SELF,$QUERY_STRING;
// Analyse du fichier /lang/langs changement le 30/04/05 => GNU/GetText
// fichier /locale/list
if ($fp=fopen($chemin."locale/list","r"))
{
echo "<form method=\"post\" action=\"".$PHP_SELF."?".urlencode($QUERY_STRING)."\" id=\"form_lang\">
<p>
<select name=\"lang_submit\" id=\"lang\" onchange=\"this.form.submit();\">
";
while (($fp) and (!feof($fp)))
{
$row=fgetcsv($fp,200,";");
if (!$row) break;
$lang=$row[0];
$langue=htmlspecialchars($row[1]);
if ($lang==$lang_sel) $selected="selected=\"selected\"";
echo " <option value=\"".$lang."\" $selected>$langue</option>
";
$selected="";
}
echo "
</select>
</p>
</form> ";
fclose($fp);
}
else
{
echo _("Aucune langue définie!");
}
/// On supprime la variable $lang
unset($lang);
}
# # # # # # # #
# Inclusion correcte de la langue #
# # # # # # # #
function InsertLang($chemin,$langue_par_defaut)
{
global $lang, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $L, $lang_submit, $gettext_domain, $locale, $conf;
// Vérification que la variable lang n'est pas déjà définie...
if ($lang_submit)
{
$lang=$lang_submit;
}
elseif (isset($HTTP_COOKIE_VARS['PHPMYRING_langue']))
{
$lang=$HTTP_COOKIE_VARS['PHPMYRING_langue'];
}
elseif ($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'])
{
// Il n'y a que 2 caractères dans ce qui suit
$lang=substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
}
else
{
$lang=$lang_par_defaut;
}
// Dans tous les cas, on
// supprime de l'ancien cookie
unset($HTTP_COOKIE_VARS['PHPMYRING_langue']);
// Vérification que la langue souhaitée existe
/* if ($fp=fopen($chemin."locale/list","r"))
{
while (($fp) and (!feof($fp)))
{
$row=fgetcsv($fp,200,";");
if (!$row) break;
if ($lang==$row[0]) return true;
else
{
// langue inconnue :-(
// Mise en place de la langue par défaut :)
$lang=$langue_par_defaut;
}
}
}*/
// définition d'un cookie
setcookie("PHPMYRING_langue","$lang",time()+3600*24*30);
/*
if ($lang_submit)
{
// suppression de l'ancien cookie (ne résoud pas le pb?!!??)
unset($HTTP_COOKIE_VARS['PHPMYRING_langue']);
// définition d'un cookie
setcookie("PHPMYRING_langue","$lang_submit",time()+3600*24*30);
$lang=$lang_submit;
}
else
{
// Récupération du cookie s'il existe...
if (isset($HTTP_COOKIE_VARS['PHPMYRING_langue']))
{
$lang=$HTTP_COOKIE_VARS['PHPMYRING_langue'];
}
else
{
// Recuperation de la langue du navigateur
$lang=substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
// récupération de la liste des langues disponibles.
if ($fp=fopen($chemin."locale/list","r"))
{
while (($fp) and (!feof($fp)))
{
$row=fgetcsv($fp,200,";");
if (!$row) break;
if ($lang==$row[0]) setcookie("PHPMYRING_langue","$lang",time()+3600*24*30);
else
{
// langue inconnue :-(
// Mise en place de la langue par défaut :)
$lang=$langue_par_defaut;
setcookie("PHPMYRING_langue","$lang",time()+3600*24*30);
}
}
}
}
}
//include ($chemin."lang/".$lang.".php"); // */
// Mise en place de GNU/GetText le 18/02/2005
$gettext_domain="phpmyring";
$locale=setlocale(LC_MESSAGES, $lang);
bindtextdomain($gettext_domain,$_SERVER["DOCUMENT_ROOT"]."/".$conf['dossierwr']."/locale");
textdomain($gettext_domain);
}
?>