
le 24/01/2005 à 18:33
SYSTEME DE GESTiON DES SMiLiES
Je tiens à préciser que c'est une exclu pour http://www.lephpfacile.com ...
merci pour tout
LA GLOBULE.
merci pour tout

<form action="./message_traitement.php" method="post" name="formulaire">
...
<b>Message :</b>
<input type="text" name="texte" maxlength="150" size="25" onchange="setPosCurseur()" onclick="setPosCurseur()">';
<html>
<head>
<title>Smilies</title>
<SCRIPT TYPE="text/javascript">
var g_posCurseur;
function setPosCurseur()
{
g_posCurseur = getPosCurseur(formulaire.texte);
}
function getPosCurseur(oTextArea)
{
var sAncienTexte = oTextArea.value;
var oRange = document.selection.createRange();
var sAncRangeTexte = oRange.text;
var sMarquer = String.fromCharCode(28)+String.fromCharCode(29)+String.fromCharCode(30);
oRange.text = sAncRangeTexte + sMarquer; oRange.moveStart('character', (0 - sAncRangeTexte.length - sMarquer.length));
var sNouvTexte = oTextArea.value;
oRange.text = sAncRangeTexte;
for (i=0; i <= sNouvTexte.length; i++)
{
var sTemp = sNouvTexte.substring(i, i + sMarquer.length);
if (sTemp == sMarquer)
{
var cursorPos = (i - sAncRangeTexte.length);
return cursorPos;
}
}
}
function insereChaine(sChaine)
{
if (typeof(g_posCurseur)=='undefined')
{
formulaire.texte.value+=sChaine;
}
else
{
var firstPart = formulaire.texte.value.substring(0, g_posCurseur);
var secondPart = formulaire.texte.value.substring(g_posCurseur,formulaire.texte.value.length);
formulaire.texte.value = firstPart + sChaine + secondPart;
}
}
</SCRIPT>
</head>
<body>
<center>
<form action="./message_traitement.php" method="post" name="formulaire">
<b>Auteur :</b>
<input type="text" name="auteur" size="25">
<b>Message :</b>
<input type="text" name="texte" maxlength="150" size="25" onchange="setPosCurseur()" onclick="setPosCurseur()">';
<input type="submit" value="Poster" size="10">
</form>
<?
/*fichier inclu qui affiche la liste des smilies et crée les liens JavaScript pour les insérer à l'endroit du curseur (voir ci-dessous le code de smilies.txt)*/
include('./smilies.txt');
?>
</center>
</body>
</html>
<b>Pour ajouter un smiley à votre message, cliquez dessus.</b>
<?
$path = "./smilies/";
$dossier = opendir ($path);
while ($fichier = readdir ($dossier)) {
if ($fichier != "." && $fichier != ".." && $fichier != "index.php") {
$tableau[] = $fichier;
}
}
closedir ($dossier);
echo '<center>';
sort($tableau);
for($i=0;$i<count($tableau);$i++){
/*les valeurs que l'on souhaite afficher*/
$image=$tableau[$i];
echo "<a href=\"javascript:insereChaine(':".$tableau[$i].":')\"><img src=\"".$path.$tableau[$i]."\" align=\"absMiddle\" border=\"0\" alt=\"".$tableau[$i]."\" title=\"".$tableau[$i]."\"></a> ";
}
echo '</center>';
?>
<?
if (isset($_POST['auteur'])) $auteur = $_POST['auteur']; else $auteur = "";
if (isset($_POST['texte'])) $texte = $_POST['texte']; else $texte = "";
/*on se connecte à notre base*/
include("./base_connexion.php");
/*fonction nous permettant de faire des redirections*/
function redirection($url){
if (headers_sent()){
print('<meta http-equiv="refresh" content="0;URL='.$url.'">');
}
else {
header("Location: $url");
}
}
/*on teste le contenu de la variable $auteur*/
if ($auteur=="") {
echo '<body onLoad="alert(\'Aucun auteur de précisé...\')">';
redirection('./');
exit;
}
/*on teste le contenu de la variable $texte*/
else if ($texte=="") {
echo '<body onLoad="alert(\'Le texte est vide...\')">';
redirection('./');
exit;
}
/*si tout est bon, on peut commencer l'insertion dans la base*/
else {
// on recupere la date de l'instant présent
$date = date("Y-m-d H:i:s");
// lancement de la requête d'insertion
$sql = "INSERT INTO messages VALUES('','$auteur','$date','$texte')";
/*on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)*/
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
/*on ferme la connexion à la base de données*/
mysql_close();
/*on redirige*/
redirection('./messages.php');
/*on termine le script courant*/
exit;
}
?>
<?
/*on se connecte à notre base*/
include("./base_connexion.php");
/*lancement de la requête. on sélectionne les messages que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC)*/
$sql = 'SELECT id,auteur,date,texte FROM messages ORDER BY date DESC';
/*on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)*/
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
/*on récupère les valeurs qui nous intéressent*/
$id_message = $data['id'];
$auteur = $data['auteur'];
$date = $data['date'];
/*la variable qui contient les données issues du champ "texte" du formulaire doit s'appeller $texte*/
$texte = $data['texte'];
/*on décompose la date*/
sscanf($date, "%4s-%2s-%2s %2s:%2s:%2s", &$an, &$mois, &$jour, &$heure, &$min, &$sec);
/*anti code*/
$texte = htmlentities ($texte);
/*Smilies*/
include('./smilies_replace.txt');
/*on affiche les résultats*/
echo '<b>'.$jour.'.'.$mois.'.'.$an.' - '.$auteur.' : </b>';
echo ''.$texte.'';
}
/*on libère l'espace mémoire alloué à cette requête*/
mysql_free_result ($req);
/*on ferme la connexion à la base de données*/
mysql_close ();
?>
<?
/*exploration du répertoire smilies*/
$path = "./smilies/";
$dossier = opendir ($path);
while ($fichier = readdir ($dossier)) {
if ($fichier != "." && $fichier != ".." && $fichier != "index.php") {
$tableau[] = $fichier;
}
}
closedir ($dossier);
sort($tableau);
/*on ouvre ou on crée le fichier*/
$fp = fopen ("./smilies_replace.txt", "w+");
/*on se positionne au début*/
fseek ($fp, 0);
fputs ($fp, "<? \r\n");
for($i=0;$i<count($tableau);$i++){
/*les valeurs que l'on souhaite afficher*/
$image=$tableau[$i];
$texte = "$"."texte = str_replace (':".$tableau[$i].":','<img src=\"".$path.$tableau[$i]."\" alt=\"".$tableau[$i]."\" title=\"".$tableau[$i]."\">', $"."texte);\r\n";
/*on écrit*/
fputs ($fp, $texte);
}
fputs ($fp, " ?>");
/*on ferme le fichier*/
fclose ($fp);
echo 'O.K ! ALL DONE ... SMiLiES UPDATED.';
?>
<?
/*là c'est pour la durée de vie du cookie de session sur le server (ici 0 pour une durée de vie maximale tant que le brownser est connecté au site) */
ini_set ("session.cookie_lifetime","0");
/*là tu mets la durée de validité que tu veux en secondes (ici 3600 = 1 heure) */
ini_set ("session.gc_maxlifetime","3600");
/*là c'est pour dire au server de supprimer le cookie de session au bout de 180 minutes soit 3 heures */
ini_set ("session.cache_expire","180");
?>
<?
require('./fpdf.php');
class PDF extends FPDF
{
var $B;
var $I;
var $U;
var $HREF;
function PDF($orientation='P',$unit='mm',$format='A4')
{
//Appel au constructeur parent
$this->FPDF($orientation,$unit,$format);
//Initialisation
$this->B=0;
$this->I=0;
$this->U=0;
$this->HREF='';
}
function WriteHTML($html)
{
//Parseur HTML
$html=str_replace("\n",' ',$html);
$a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
foreach($a as $i=>$e)
{
if($i%2==0)
{
//Texte
if($this->HREF)
$this->PutLink($this->HREF,$e);
else
$this->Write(5,$e);
}
else
{
//Balise
if($e{0}=='/')
$this->CloseTag(strtoupper(substr($e,1)));
else
{
//Extraction des attributs
$a2=explode(' ',$e);
$tag=strtoupper(array_shift($a2));
$attr=array();
foreach($a2 as $v)
if(ereg('^([^=]*)=["\']?([^"\']*)["\']?$',$v,$a3))
$attr[strtoupper($a3[1])]=$a3[2];
$this->OpenTag($tag,$attr);
}
}
}
}
function OpenTag($tag,$attr)
{
//Balise ouvrante
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag,true);
if($tag=='A')
$this->HREF=$attr['HREF'];
if($tag=='BR')
$this->Ln(5);
}
function CloseTag($tag)
{
//Balise fermante
if($tag=='B' or $tag=='I' or $tag=='U')
$this->SetStyle($tag,false);
if($tag=='A')
$this->HREF='';
}
function SetStyle($tag,$enable)
{
//Modifie le style et sélectionne la police correspondante
$this->$tag+=($enable ? 1 : -1);
$style='';
foreach(array('B','I','U') as $s)
if($this->$s>0)
$style.=$s;
$this->SetFont('',$style);
}
function PutLink($URL,$txt)
{
//Place un hyperlien
$this->SetTextColor(0,0,255);
$this->SetStyle('U',true);
$this->Write(5,$txt,$URL);
$this->SetStyle('U',false);
$this->SetTextColor(0);
}
}
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetFont('Courier','',20);
$pdf->SetFontSize(10);
$pdf->SetFillColor(239,224,200);
$pdf->Ln(8);
ob_start();
/* place ici tout ton php qui génère ce que tu veux */
include ('./fichier.php');
/* fin de la génération "d'html" */
$html_genere = ob_get_contents();
$pdf->WriteHTML($html_genere);
$pdf->Ln(8);
$pdf->Output('fichier.pdf', 'F');
?>
$pdf->WriteHTML($file);