Historique des modifications - Message

Message #6834

Sujet: Dictionnaire et documentation automatique.


Type Date Auteur Contenu
Dernière modification 28-08-2009 20:53:13 nico
Alors, par ou comencer... wink

On va créer plusieurs fichiers dans le dossier include/.
Tout dabord on va créer le fichier config_ADDON.php
 <?php
	
$bdd_host = 'mysql5-1.300gp';
$bdd_name = 'dictionnaire';
$bdd_username = '';
$bdd_password = '';

define('DELAI', 15);// definit le délai en seconde entre chaque action.(anti-flood).
define('MAXmot', 30);// définit le nombre maximum de caractères autorisés pour un mot.
define('MAXdef', 200);// définit le nombre maximum de caractères autorisés pour une définition.

define('ENREGISTREMENT', 'Votre définition a bien été enregistré, merci pour votre aide.');
define('SUPPRESSION', 	'La définition a bien été supprimé, merci pour votre aide.');
define('EXIST', 'Cette définition existe déjà.');
define('DROIT', ' Vous ne pouvais pas supprimer cette définition.');
define('MEMBRE', 'Vous devez être connecté pour pouvoir apporter des modifications au dictionnaire.');
define('FLOOD', 'Sécurité anti-flood: vous devez patienter un délai de '.DELAI.' secondes entre chaque modification.');
define('VIDE', 'Un champs est vide, aucun enregistrement n\\'a été éfectué');
define('TAILLE', 'Le texte proposé est trop long, le mot doit comporter moins de '.MAXmot.' caractères et sa définition doit comporter moins de '.MAXdef.' caractères');
define('MEM_CACHE', 'Le fichier de cache à été mise a jour');
define('CANT_CACHE', 'Impossible de mettre à jour le fichier de cache');

define('INFO','<p>Ce site intègre un dictionnaire dans lequel chaque membre peut ajouter des définitions de mots et de classe.<br />
		Pour afficher la définition des mots et des classes lors de votre lecture sur le forum, il suffit de les survoler avec la souris.<br />
		En cliquant sur le nom d\\'une classe, vous serez rediriger vers la documentation d\\'Irrlicht.</p>');
?>

Ce fichier va donc te permettre de configurer tout le reste.
Il faut également que tu rentre le mot de passe et le nom.

Ensuite on va créer le fichier fonctions_ADDON.php
<?php
if (!defined('PUN'))
	exit;

//////////////////////////////////////////////////////////////////////////////SECURITE/////////////////////////////////////////////////////////////////////////////////////
		function Securisation_sql($string)
		{
			if(ctype_digit($string))
			{
				$string = intval($string);
			}
			else
			{
				$string = mysql_real_escape_string($string);
				$string = addcslashes($string, '%_');
			} 
			return $string;
		}	
		function Securisation_html($string)
		{
			return htmlentities($string);
		}		
		function Securisation_javascript($string)
		{
			return preg_replace('#;#i',',',$string);
		}		
	    function antiflood($user,$delai)
		{
			$actions = mysql_result(mysql_query("SELECT COUNT(*) FROM action WHERE membre='".$user."' AND date > ('".time()."' - '".$delai."')"), 0);
			if ($actions !=0){return false;}
			else return true;
		}		
		function limit($string,$limit)
		{
			if(strlen($string)<$limit){return true;}
			else return false;
		}
//////////////////////////////////////////////////////////////////////////////INFO/////////////////////////////////////////////////////////////////////////////////////		
		function reussite($string)
		{
			return '<span class="directives"><p>'.$string.'</p></span>';
		}
		function echec($string)
		{
			return '<span class="operateurs"><p>'.$string.'</p></span>';
		}
//////////////////////////////////////////////////////////////////////////////CACHE/////////////////////////////////////////////////////////////////////////////////////		
		function mem_cache_dico()
		{
			$reponse = mysql_query("SELECT  mot,definition   FROM dictionnaire");
			while ($dico =mysql_fetch_row($reponse))$mem[$dico[0]] = $dico[1];

			$dico_cache = @fopen(PUN_ROOT.'cache/cache_dictionnaire.php', 'wb');
			if (!$dico_cache)return false;
			else
			{
				fwrite($dico_cache, '<?php'."\
\
".'define(\\'DICO_LOADED\\', 1);'."\
\
".'$dico = '.var_export($mem, true).';'."\
\
".'?>');
				fclose($dico_cache);
				return true;
			}
		}
		function mem_cache_doc()
		{
			$reponse = mysql_query("SELECT  classe,definition   FROM documentation");
			while ($doc =mysql_fetch_row($reponse))$mem[$doc[0]] = $doc[1];

			$doc_cache = @fopen(PUN_ROOT.'cache/cache_documentation.php', 'wb');
			if (!$doc_cache)return false;
			else
			{
				fwrite($doc_cache, '<?php'."\
\
".'define(\\'DOC_LOADED\\', 1);'."\
\
".'$doc = '.var_export($mem, true).';'."\
\
".'?>');
				fclose($doc_cache);
				return true;
			}
		}
//////////////////////////////////////////////////////////////////////////////DICO&DOC/////////////////////////////////////////////////////////////////////////////////////		
		function dico($text,$dico,$doc)
		{
		    if(DOC_LOADED && DICO_LOADED)
			{
				foreach($dico as $mot=>$definition)
				{	
				   $text=preg_replace('#(?<!<span title=\\")([a-zA-Z0-9\\'\\",\\.\\* ]*)([^a-zA-Z0-9])('.Securisation_html(Securisation_javascript($mot)).')([^a-zA-Z0-9])#isU','$1$2<span title=" '.Securisation_html(Securisation_javascript($definition)).'">$3</span>$4',$text);
				}		
				foreach($doc as $classe=>$definition)
				{
					$text=preg_replace  ('#(?<!<span title=\\")([a-zA-Z0-9\\'\\",\\.\\* ]*)([^a-zA-Z0-9])('.Securisation_html(Securisation_javascript($classe)).')([^a-zA-Z0-9])#isU','$1$2<span title=" '.Securisation_html(Securisation_javascript($definition)).'"><a style=" text-decoration:none; color:000000; " href="'.PUN_ROOT.'include/documentation_ADDON.php?fonction='.Securisation_html(Securisation_javascript($classe)).'">$3</a></span>$4',$text);
				}
			}
			return $text;
		}
?>

Cela sera notre boite à outil wink

encore un petit outil, qu'on nomera documentation_ADDON.php
 
<?php
if(strpos($_SERVER['HTTP_REFERER'],"viewtopic.php")!==false)
{
$fonction=preg_replace('#(\\'|\\")#i','\\$1',$_GET['fonction']);
$source = implode ('', file ("http://www.google.com/search?hl=en&q=$fonction+%2Bclass%2BReference%2Bsite%3Ahttp%3A%2F%2Firrlicht.sourceforge.net%2Fdocu%2F&btnG=Search&lr=lang_en&aq=f&oq=&aqi="));
$source = strstr($source, '<a href="http://irrlicht.sourceforge.net/docu/'); 
$fin_source = strstr($source, '.html"'); 
$proposition = str_replace("$fin_source","", $source); 
$proposition = str_replace('<a href="',"", $proposition);  
if (preg_match("/irrlicht/", $proposition)){header('Location:'.$proposition.'.html');}
else header("Location:http://www.google.com/search?hl=en&q=$fonction+%2Bclass%2BReference%2Bsite%3Ahttp%3A%2F%2Firrlicht.sourceforge.net%2Fdocu%2F&btnG=Search&lr=lang_en&aq=f&oq=&aqi=");
}
else echo'error';
 ?>

Voilà, on a fini pour le dossier include, maintenant il faut revenir a la racine du repertoire et y créer le fichier dictionnaire_ADDON.php qui permettra de gérer la bdd
<?php 
/////////////////////////////////////////////////////////////////////////////////INIT////////////////////////////////////////////////////////////////////////////////////////////
define('PUN_ROOT', './');
require PUN_ROOT.'include/config_ADDON.php';
$dic=mysql_connect($bdd_host,$bdd_username,$bdd_password) or die( mysql_error() );
mysql_select_db($bdd_name) or die( mysql_error() );
$reponse = mysql_query("SELECT * FROM dictionnaire");
$repons = mysql_query("SELECT * FROM documentation"); 
mysql_close($dic);
unset($dic);
require PUN_ROOT.'include/common.php';
if ($pun_user['g_read_board'] == '0')
message($lang_common['No view']);
// Load the index.php language file
require PUN_ROOT.'lang/'.$pun_user['language'].'/index.php';
$page_title = pun_htmlspecialchars($pun_config['o_board_title']);
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';
require PUN_ROOT.'include/fonctions_ADDON.php';
/////////////////////////////////////////////////////////////////////////////////INFO/////////////////////////////////////////////////////////////////////////////////////////////
echo'<div class="box" style="padding:10;"><div class="inbox">';
switch ($_GET['info']) { 
		case 'dico':  echo reussite(ENREGISTREMENT);break;
		case 'sup':   echo reussite(SUPPRESSION);	break;
		case 'exist': echo echec(EXIST);			break;
		case 'error': echo echec(DROIT);			break;
		case 'echec': echo echec(MEMBRE);			break;
		case 'flood': echo echec(FLOOD);			break;
		case 'vide':  echo echec(VIDE);				break;
		case 'taille':echo echec(TAILLE);			break;
}
if (isset($_GET['memo']))
{
	if($_GET['memo']=='maj')echo reussite(MEM_CACHE);
	if($_GET['memo']=='unfound')echo echec(CANT_CACHE);
}
echo INFO;
//////////////////////////////////////////////////////////////////////////////IMPUT//////////////////////////////////////////////////////////////////////////////////////////////////
?>
<form method="post" action="enregistrement_ADDON.php?action=mot" style="display: inline;" > 
 <fieldset style="display: inline;padding:5;"><legend>Ajouter une définition</legend>  
    <p> <fieldset style="display: inline;padding:5;"><legend>mot</legend><input type="text" name="mot" id="mot" size="50"/></fieldset> </p>
	<p><fieldset style="display: inline;padding:5;"><legend>Définition</legend><textarea name="definition" id="definition" rows="10" cols="50"></textarea> </fieldset>  </p>  
	<p><input type="submit" value="Enregistrer"/><br /> </p>
  </fieldset>
</form>
<form method="post" action="enregistrement_ADDON.php?action=doc" style="display: inline;"> 
  <fieldset style="display: inline;padding:5;"><legend>Ajouter une documentation</legend>  
    <p> <fieldset style="display: inline;padding:5;"><legend>classe</legend><input type="text" name="classe" id="classe" size="50"/></fieldset> </p>
	<p><fieldset style="display: inline;padding:5;"><legend>Définition</legend><textarea name="definition2" id="definition2" rows="10" cols="50"></textarea> </fieldset>  </p>  
	<p><input type="submit" value="Enregistrer"/><br /> </p>
  </fieldset>
</form>
<?php /////////////////////////////////////////////////////////////////////////LISTES//////////////////////////////////////////////////////////////////////////////////////////////////


 echo' <fieldset><legend>Liste des mots enregistrés</legend>  
	<table class="pun">
		<tr>
			<th>Mots</th>
			<th>Definitions</th>             
			<th>Membres</th>
			<th>Date</th>
			<th>Action</th>
	   </tr>';
while ($donnees = mysql_fetch_array($reponse) )
{
 echo'
    <tr>
      <td>'.Securisation_html(Securisation_javascript($donnees['mot'])).'</td> 
	  <td>'.Securisation_html(Securisation_javascript($donnees['definition'])).' </td> 
	  <td> Ajouté par '.Securisation_html(Securisation_javascript($donnees['membre'])).'</td>
	  <td>le '.$donnees['date'].'</td>
	  <td>';
	 if($pun_user['g_id']==PUN_ADMIN || $donnees['membre']==$pun_user['username']){
		echo'<form method="post" action="enregistrement_ADDON.php?action=supprimer&id='.Securisation_html(Securisation_javascript($donnees['id'])).'"> <p><input type="submit" value="Supprimer"/><br /> </p></form>';
	}else echo'Aucune action possible';
	echo'</td>
   </tr>';
}
 echo'</table></fieldset>';
 
  echo' <fieldset><legend>Liste des classes enregistrés</legend>  
	<table class="pun">
		<tr>
			<th>Classes</th>
			<th>Definitions</th>             
			<th>Membres</th>
			<th>Date</th>
			<th>Action</th>
	   </tr>';
while ($donnees = mysql_fetch_array($repons) )
{
 echo'
    <tr>
      <td>'.Securisation_html(Securisation_javascript($donnees['classe'])).'</td> 
	  <td>'.Securisation_html(Securisation_javascript($donnees['definition'])).' </td> 
	  <td> Ajouté par '.Securisation_html(Securisation_javascript($donnees['membre'])).'</td>
	  <td>le '.$donnees['date'].'</td>
	  <td>';
	if($pun_user['g_id']==PUN_ADMIN || $donnees['membre']==$pun_user['username']){
		echo'<form method="post" action="enregistrement_ADDON.php?action=supprimerC&id='.Securisation_html(Securisation_javascript($donnees['id'])).'"> <p><input type="submit" value="Supprimer"/><br /> </p></form>';
	}else echo'Aucune action possible';
	echo'</td>
   </tr>';
}
 echo'</table></fieldset>';
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
echo'</div></div><br/>';
require PUN_ROOT.'footer.php';
?>

puis on créer le fichier qui va permettre de valider les informations, enregistrement_ADDON.php
<?php
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';			
$db->end_transaction();
$db->close();
unset($db);

require PUN_ROOT.'include/config_ADDON.php';	
require PUN_ROOT.'include/fonctions_ADDON.php';

if($pun_user['g_id']==PUN_ADMIN||$pun_user['g_id']==PUN_MOD||$pun_user['g_id']==PUN_MEMBER)
{	global $db;
	$dic=mysql_connect($bdd_host,$bdd_username,$bdd_password) or die( mysql_error() );
	mysql_select_db($bdd_name) or die( mysql_error() );
	$membre=Securisation_sql($pun_user['username']);
    if($pun_user['g_id']==PUN_ADMIN || antiflood($membre,DELAI))
	{
		switch ($_GET['action']) 
		{ 
			case 'mot':
			{	
				$mot=Securisation_sql($_POST['mot']);
				$definition=Securisation_sql($_POST['definition']);
			    if(!empty($mot)&&!empty($definition))
				{
				    if(limit($mot,MAXmot) && limit($definition,MAXdef))
					{
						$exist = mysql_result(mysql_query('SELECT COUNT(*) FROM dictionnaire WHERE mot = "'.$mot.'"'), 0);
						if($exist == 0)
						{
							mysql_query("INSERT INTO dictionnaire (id, membre, mot, definition,date) VALUES('null','".$membre."','".$mot."','".$definition."', '".time()."')")or die( mysql_error() );
							$info='dico';
							mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
							if(mem_cache_dico())$memo='maj';
							else $memo='unfound';
						}
						else $info='exist';
					}
					else $info='taille';
				}
				else $info='vide';	
			}
			break;
			case 'doc':
			{
				$classe=Securisation_sql($_POST['classe']);
				$definition2=Securisation_sql($_POST['definition2']);
			    if(!empty($classe)&&!empty($definition2))
				{
					if(limit($classe,MAXmot) && limit($definition2,MAXdef))
					{
						$exist = mysql_result(mysql_query('SELECT COUNT(*) FROM documentation WHERE classe = "'.$mot.'"'), 0);
						if($exist == 0)
						{				
							$date=time();
							mysql_query("INSERT INTO documentation (id, membre, classe, definition,date)VALUES('null','".$membre."','".$classe."','".$definition2."', '".$date."')")or die( mysql_error() );
							$info='dico';
							mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
							if(mem_cache_doc())$memo='maj';
							else $memo='unfound';
						}
						else $info='exist';
					}
					else $info='taille';
				}	
				else $info='vide';	
			}
			break;
			case 'supprimer':
			{
			   $id =Securisation_sql($_GET['id']);
			   $requete = mysql_query('SELECT membre FROM dictionnaire WHERE id = '.$id.'')or die( mysql_error() );
			   $data = mysql_fetch_assoc($requete);
			   if ($membre == $data['membre']|$pun_user['g_id']==PUN_ADMIN)
			   {
					mysql_query("DELETE from dictionnaire WHERE id = '".$id."'" )or die( mysql_error() );
					$info='sup';
					mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
					if(mem_cache_dico())$memo='maj';
					else $memo='unfound';
				}
				else $info='error';		
			}
			break;
			case 'supprimerC':
			{
			   $id =Securisation_sql($_GET['id']);
			   $requete = mysql_query('SELECT membre FROM documentation WHERE id = '.$id.'')or die( mysql_error() );
			   $data = mysql_fetch_assoc($requete);
			   if ($membre == $data['membre']|$pun_user['g_id']==PUN_ADMIN)
			   {
					mysql_query("DELETE from documentation WHERE id = '".$id."'")or die( mysql_error() );
					$info='sup';
					mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
					if(mem_cache_doc())$memo='maj';
					else $memo='unfound';
				}
				else $info='error';		
			}
			break;	
		}
	}
	else $info='flood';		
	mysql_close($dic);
}
else $info='echec'; 
unset($data,$pun_user);	
if($memo=="") header('Location:'.PUN_ROOT.'dictionnaire_ADDON.php?info='.$info.'');
else header('Location:'.PUN_ROOT.'dictionnaire_ADDON.php?info='.$info.'&memo='.$memo.'');
?>

Bon je pense qu'on peut déjà essayer ca, le code n'est pas complet afin que les utilisateurs du forum ne soit pas affectés lors de nos essais.
Mais rassure toi il reste juste une dizaine de lignes de code. wink
Création du message 28-08-2009 20:44:33 nico
Alors, par ou comencer... wink

On va créer plusieurs fichiers dans le dossier include/.
Tout dabord on va créer le fichier config_ADDON.php
 <?php
	
$bdd_host = 'mysql5-1.300gp';
$bdd_name = 'dictionnaire';
$bdd_username = '';
$bdd_password = '';

define('DELAI', 15);// definit le délai en seconde entre chaque action.(anti-flood).
define('MAXmot', 30);// définit le nombre maximum de caractères autorisés pour un mot.
define('MAXdef', 200);// définit le nombre maximum de caractères autorisés pour une définition.

define('ENREGISTREMENT', 'Votre définition a bien été enregistré, merci pour votre aide.');
define('SUPPRESSION', 	'La définition a bien été supprimé, merci pour votre aide.');
define('EXIST', 'Cette définition existe déjà.');
define('DROIT', ' Vous ne pouvais pas supprimer cette définition.');
define('MEMBRE', 'Vous devez être connecté pour pouvoir apporter des modifications au dictionnaire.');
define('FLOOD', 'Sécurité anti-flood: vous devez patienter un délai de '.DELAI.' secondes entre chaque modification.');
define('VIDE', 'Un champs est vide, aucun enregistrement n\\'a été éfectué');
define('TAILLE', 'Le texte proposé est trop long, le mot doit comporter moins de '.MAXmot.' caractères et sa définition doit comporter moins de '.MAXdef.' caractères');
define('MEM_CACHE', 'Le fichier de cache à été mise a jour');
define('CANT_CACHE', 'Impossible de mettre à jour le fichier de cache');

define('INFO','<p>Ce site intègre un dictionnaire dans lequel chaque membre peut ajouter des définitions de mots et de classe.<br />
		Pour afficher la définition des mots et des classes lors de votre lecture sur le forum, il suffit de les survoler avec la souris.<br />
		En cliquant sur le nom d\\'une classe, vous serez rediriger vers la documentation d\\'Irrlicht.</p>');
?>

Ce fichier va donc te permettre de configurer tout le reste.
Il faut également que tu rentre le mot de passe et le nom.

Ensuite on va créer le fichier fonctions_ADDON.php
<?php
if (!defined('PUN'))
	exit;

//////////////////////////////////////////////////////////////////////////////SECURITE/////////////////////////////////////////////////////////////////////////////////////
		function Securisation_sql($string)
		{
			if(ctype_digit($string))
			{
				$string = intval($string);
			}
			else
			{
				$string = mysql_real_escape_string($string);
				$string = addcslashes($string, '%_');
			} 
			return $string;
		}	
		function Securisation_html($string)
		{
			return htmlentities($string);
		}		
		function Securisation_javascript($string)
		{
			return preg_replace('#;#i',',',$string);
		}		
	    function antiflood($user,$delai)
		{
			$actions = mysql_result(mysql_query("SELECT COUNT(*) FROM action WHERE membre='".$user."' AND date > ('".time()."' - '".$delai."')"), 0);
			if ($actions !=0){return false;}
			else return true;
		}		
		function limit($string,$limit)
		{
			if(strlen($string)<$limit){return true;}
			else return false;
		}
//////////////////////////////////////////////////////////////////////////////INFO/////////////////////////////////////////////////////////////////////////////////////		
		function reussite($string)
		{
			return '<span class="directives"><p>'.$string.'</p></span>';
		}
		function echec($string)
		{
			return '<span class="operateurs"><p>'.$string.'</p></span>';
		}
//////////////////////////////////////////////////////////////////////////////CACHE/////////////////////////////////////////////////////////////////////////////////////		
		function mem_cache_dico()
		{
			$reponse = mysql_query("SELECT  mot,definition   FROM dictionnaire");
			while ($dico =mysql_fetch_row($reponse))$mem[$dico[0]] = $dico[1];

			$dico_cache = @fopen(PUN_ROOT.'cache/cache_dictionnaire.php', 'wb');
			if (!$dico_cache)return false;
			else
			{
				fwrite($dico_cache, '<?php'."\
\
".'define(\\'DICO_LOADED\\', 1);'."\
\
".'$dico = '.var_export($mem, true).';'."\
\
".'?>');
				fclose($dico_cache);
				return true;
			}
		}
		function mem_cache_doc()
		{
			$reponse = mysql_query("SELECT  classe,definition   FROM documentation");
			while ($doc =mysql_fetch_row($reponse))$mem[$doc[0]] = $doc[1];

			$doc_cache = @fopen(PUN_ROOT.'cache/cache_documentation.php', 'wb');
			if (!$doc_cache)return false;
			else
			{
				fwrite($doc_cache, '<?php'."\
\
".'define(\\'DOC_LOADED\\', 1);'."\
\
".'$doc = '.var_export($mem, true).';'."\
\
".'?>');
				fclose($doc_cache);
				return true;
			}
		}
//////////////////////////////////////////////////////////////////////////////DICO&DOC/////////////////////////////////////////////////////////////////////////////////////		
		function dico($text,$dico,$doc)
		{
		    if(DOC_LOADED && DICO_LOADED)
			{
				foreach($dico as $mot=>$definition)
				{	
				   $text=preg_replace('#(?<!<span title=\\")([a-zA-Z0-9\\'\\",\\.\\* ]*)([^a-zA-Z0-9])('.Securisation_html(Securisation_javascript($mot)).')([^a-zA-Z0-9])#isU','$1$2<span title=" '.Securisation_html(Securisation_javascript($definition)).'">$3</span>$4',$text);
				}		
				foreach($doc as $classe=>$definition)
				{
					$text=preg_replace  ('#(?<!<span title=\\")([a-zA-Z0-9\\'\\",\\.\\* ]*)([^a-zA-Z0-9])('.Securisation_html(Securisation_javascript($classe)).')([^a-zA-Z0-9])#isU','$1$2<span title=" '.Securisation_html(Securisation_javascript($definition)).'"><a style=" text-decoration:none; color:000000; " href="'.PUN_ROOT.'include/documentation_ADDON.php?fonction='.Securisation_html(Securisation_javascript($classe)).'">$3</a></span>$4',$text);
				}
			}
			return $text;
		}
?>

Cela sera notre boite à outil wink

encore un petit outil, qu'on nomera documentation_ADDON.php
 
<?php
if(strpos($_SERVER['HTTP_REFERER'],"viewtopic.php")!==false)
{
$fonction=preg_replace('#(\\'|\\")#i','\\$1',$_GET['fonction']);
$source = implode ('', file ("http://www.google.com/search?hl=en&q=$fonction+%2Bclass%2BReference%2Bsite%3Ahttp%3A%2F%2Firrlicht.sourceforge.net%2Fdocu%2F&btnG=Search&lr=lang_en&aq=f&oq=&aqi="));
$source = strstr($source, '<a href="http://irrlicht.sourceforge.net/docu/'); 
$fin_source = strstr($source, '.html"'); 
$proposition = str_replace("$fin_source","", $source); 
$proposition = str_replace('<a href="',"", $proposition);  
if (preg_match("/irrlicht/", $proposition)){header('Location:'.$proposition.'.html');}
else header("Location:http://www.google.com/search?hl=en&q=$fonction+%2Bclass%2BReference%2Bsite%3Ahttp%3A%2F%2Firrlicht.sourceforge.net%2Fdocu%2F&btnG=Search&lr=lang_en&aq=f&oq=&aqi=");
}
else echo'error';
 ?>

Voilà, on a fini pour le dossier include, maintenant il faut revenir a la racine du repertoire et y créer le fichier dictionnaire_ADDON.php qui permettra de gérer la bdd
<?php 
/////////////////////////////////////////////////////////////////////////////////INIT////////////////////////////////////////////////////////////////////////////////////////////
define('PUN_ROOT', './');
require PUN_ROOT.'include/config_ADDON.php';
$dic=mysql_connect($bdd_host,$bdd_username,$bdd_password) or die( mysql_error() );
mysql_select_db($bdd_name) or die( mysql_error() );
$reponse = mysql_query("SELECT * FROM dictionnaire");
$repons = mysql_query("SELECT * FROM documentation"); 
mysql_close($dic);
unset($dic);
require PUN_ROOT.'include/common.php';
if ($pun_user['g_read_board'] == '0')
message($lang_common['No view']);
// Load the index.php language file
require PUN_ROOT.'lang/'.$pun_user['language'].'/index.php';
$page_title = pun_htmlspecialchars($pun_config['o_board_title']);
define('PUN_ALLOW_INDEX', 1);
require PUN_ROOT.'header.php';
require PUN_ROOT.'include/fonctions_ADDON.php';
/////////////////////////////////////////////////////////////////////////////////INFO/////////////////////////////////////////////////////////////////////////////////////////////
echo'<div class="box" style="padding:10;"><div class="inbox">';
switch ($_GET['info']) { 
		case 'dico':  echo reussite(ENREGISTREMENT);break;
		case 'sup':   echo reussite(SUPPRESSION);	break;
		case 'exist': echo echec(EXIST);			break;
		case 'error': echo echec(DROIT);			break;
		case 'echec': echo echec(MEMBRE);			break;
		case 'flood': echo echec(FLOOD);			break;
		case 'vide':  echo echec(VIDE);				break;
		case 'taille':echo echec(TAILLE);			break;
}
if (isset($_GET['memo']))
{
	if($_GET['memo']=='maj')echo reussite(MEM_CACHE);
	if($_GET['memo']=='unfound')echo echec(CANT_CACHE);
}
echo INFO;
//////////////////////////////////////////////////////////////////////////////IMPUT//////////////////////////////////////////////////////////////////////////////////////////////////
?>
<form method="post" action="enregistrement_ADDON.php?action=mot" style="display: inline;" > 
 <fieldset style="display: inline;padding:5;"><legend>Ajouter une définition</legend>  
    <p> <fieldset style="display: inline;padding:5;"><legend>mot</legend><input type="text" name="mot" id="mot" size="50"/></fieldset> </p>
	<p><fieldset style="display: inline;padding:5;"><legend>Définition</legend><textarea name="definition" id="definition" rows="10" cols="50"></textarea> </fieldset>  </p>  
	<p><input type="submit" value="Enregistrer"/><br /> </p>
  </fieldset>
</form>
<form method="post" action="enregistrement_ADDON.php?action=doc" style="display: inline;"> 
  <fieldset style="display: inline;padding:5;"><legend>Ajouter une documentation</legend>  
    <p> <fieldset style="display: inline;padding:5;"><legend>classe</legend><input type="text" name="classe" id="classe" size="50"/></fieldset> </p>
	<p><fieldset style="display: inline;padding:5;"><legend>Définition</legend><textarea name="definition2" id="definition2" rows="10" cols="50"></textarea> </fieldset>  </p>  
	<p><input type="submit" value="Enregistrer"/><br /> </p>
  </fieldset>
</form>
<?php /////////////////////////////////////////////////////////////////////////LISTES//////////////////////////////////////////////////////////////////////////////////////////////////


 echo' <fieldset><legend>Liste des mots enregistrés</legend>  
	<table class="pun">
		<tr>
			<th>Mots</th>
			<th>Definitions</th>             
			<th>Membres</th>
			<th>Date</th>
			<th>Action</th>
	   </tr>';
while ($donnees = mysql_fetch_array($reponse) )
{
 echo'
    <tr>
      <td>'.Securisation_html(Securisation_javascript($donnees['mot'])).'</td> 
	  <td>'.Securisation_html(Securisation_javascript($donnees['definition'])).' </td> 
	  <td> Ajouté par '.Securisation_html(Securisation_javascript($donnees['membre'])).'</td>
	  <td>le '.$donnees['date'].'</td>
	  <td>';
	 if($pun_user['g_id']==PUN_ADMIN || $donnees['membre']==$pun_user['username']){
		echo'<form method="post" action="enregistrement_ADDON.php?action=supprimer&id='.Securisation_html(Securisation_javascript($donnees['id'])).'"> <p><input type="submit" value="Supprimer"/><br /> </p></form>';
	}else echo'Aucune action possible';
	echo'</td>
   </tr>';
}
 echo'</table></fieldset>';
 
  echo' <fieldset><legend>Liste des classes enregistrés</legend>  
	<table class="pun">
		<tr>
			<th>Classes</th>
			<th>Definitions</th>             
			<th>Membres</th>
			<th>Date</th>
			<th>Action</th>
	   </tr>';
while ($donnees = mysql_fetch_array($repons) )
{
 echo'
    <tr>
      <td>'.Securisation_html(Securisation_javascript($donnees['classe'])).'</td> 
	  <td>'.Securisation_html(Securisation_javascript($donnees['definition'])).' </td> 
	  <td> Ajouté par '.Securisation_html(Securisation_javascript($donnees['membre'])).'</td>
	  <td>le '.$donnees['date'].'</td>
	  <td>';
	if($pun_user['g_id']==PUN_ADMIN || $donnees['membre']==$pun_user['username']){
		echo'<form method="post" action="enregistrement_ADDON.php?action=supprimerC&id='.Securisation_html(Securisation_javascript($donnees['id'])).'"> <p><input type="submit" value="Supprimer"/><br /> </p></form>';
	}else echo'Aucune action possible';
	echo'</td>
   </tr>';
}
 echo'</table></fieldset>';
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
echo'</div></div><br/>';
require PUN_ROOT.'footer.php';
?>

puis on créer le fichier qui va permettre de valider les informations, enregistrement_ADDON.php
<?php
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';			
$db->end_transaction();
$db->close();
unset($db);

require PUN_ROOT.'include/config_ADDON.php';	
require PUN_ROOT.'include/fonctions_ADDON.php';

if($pun_user['g_id']==PUN_ADMIN||$pun_user['g_id']==PUN_MOD||$pun_user['g_id']==PUN_MEMBER)
{	global $db;
	$dic=mysql_connect($bdd_host,$bdd_username,$bdd_password) or die( mysql_error() );
	mysql_select_db($bdd_name) or die( mysql_error() );
	$membre=Securisation_sql($pun_user['username']);
    if($pun_user['g_id']==PUN_ADMIN || antiflood($membre,DELAI))
	{
		switch ($_GET['action']) 
		{ 
			case 'mot':
			{	
				$mot=Securisation_sql($_POST['mot']);
				$definition=Securisation_sql($_POST['definition']);
			    if(!empty($mot)&&!empty($definition))
				{
				    if(limit($mot,MAXmot) && limit($definition,MAXdef))
					{
						$exist = mysql_result(mysql_query('SELECT COUNT(*) FROM dictionnaire WHERE mot = "'.$mot.'"'), 0);
						if($exist == 0)
						{
							mysql_query("INSERT INTO dictionnaire (id, membre, mot, definition,date) VALUES('null','".$membre."','".$mot."','".$definition."', '".time()."')")or die( mysql_error() );
							$info='dico';
							mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
							if(mem_cache_dico())$memo='maj';
							else $memo='unfound';
						}
						else $info='exist';
					}
					else $info='taille';
				}
				else $info='vide';	
			}
			break;
			case 'doc':
			{
				$classe=Securisation_sql($_POST['classe']);
				$definition2=Securisation_sql($_POST['definition2']);
			    if(!empty($classe)&&!empty($definition2))
				{
					if(limit($classe,MAXmot) && limit($definition2,MAXdef))
					{
						$exist = mysql_result(mysql_query('SELECT COUNT(*) FROM documentation WHERE classe = "'.$mot.'"'), 0);
						if($exist == 0)
						{				
							$date=time();
							mysql_query("INSERT INTO documentation (id, membre, classe, definition,date)VALUES('null','".$membre."','".$classe."','".$definition2."', '".$date."')")or die( mysql_error() );
							$info='dico';
							mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
							if(mem_cache_doc())$memo='maj';
							else $memo='unfound';
						}
						else $info='exist';
					}
					else $info='taille';
				}	
				else $info='vide';	
			}
			break;
			case 'supprimer':
			{
			   $id =Securisation_sql($_GET['id']);
			   $requete = mysql_query('SELECT membre FROM dictionnaire WHERE id = '.$id.'')or die( mysql_error() );
			   $data = mysql_fetch_assoc($requete);
			   if ($membre == $data['membre']|$pun_user['g_id']==PUN_ADMIN)
			   {
					mysql_query("DELETE from dictionnaire WHERE id = '".$id."'" )or die( mysql_error() );
					$info='sup';
					mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
					if(mem_cache_dico())$memo='maj';
					else $memo='unfound';
				}
				else $info='error';		
			}
			break;
			case 'supprimerC':
			{
			   $id =Securisation_sql($_GET['id']);
			   $requete = mysql_query('SELECT membre FROM documentation WHERE id = '.$id.'')or die( mysql_error() );
			   $data = mysql_fetch_assoc($requete);
			   if ($membre == $data['membre']|$pun_user['g_id']==PUN_ADMIN)
			   {
					mysql_query("DELETE from documentation WHERE id = '".$id."'")or die( mysql_error() );
					$info='sup';
					mysql_query("INSERT INTO action (id, membre,date) VALUES('null','".$membre."','".time()."')")or die( mysql_error() );
					if(mem_cache_doc())$memo='maj';
					else $memo='unfound';
				}
				else $info='error';		
			}
			break;	
		}
	}
	else $info='flood';		
	mysql_close($dic);
}
else $info='echec'; 
unset($data,$pun_user);	
if($memo=="") header('Location:'.PUN_ROOT.'dictionnaire_ADDON.php?info='.$info.'');
else header('Location:'.PUN_ROOT.'dictionnaire_ADDON.php?info='.$info.'&memo='.$memo.'');
?>

Bon je pense qu'on peut déjà essayer ca, le code n'est pas complet afin que les utilisateurs du forum ne soit pas affectés lors de nos essais.
Mais rassure toi il reste juste une dizaine de lignes de code. wink

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
208 invités en ligne
membre en ligne: -
RSS Feed