Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Un script de Wiki ?


Neuromancer

Messages recommandés

Apparement il existe déjà une version qui utilise une base de données mysql. :P

 

=> http://p220.free.fr/wiki/

L'install : http://p220.free.fr/wiki/index.php3?InstalLation

Le source : http://p220.free.fr/wiki/source.php3

 

@+, :-(

Philippe

Lien vers le commentaire
Partager sur d’autres sites

ok ok ok :P

 

Bon, le source avait quelques pb (dont une fonction qui entrait en conflit avec une fonction qui existe déjà dans une des libs de php).

 

J'espère que ce n'est pas trop gros, mais voici le source moins les quelques erreurs que j'ai vu en survolant le tout : (si c trop gros je peux l'envoyer par email et l'enlever d'ici)

 


<?php



/* ##################### A propos de WIKIPLAM version MySql ################ */ 

/* WikiPlam ! Informations sur le concept de Wiki : http://c2.com/cgi/wiki   */ 

/* Copyright © 2002 Pierre Lamelin (lamelin.com - p220.free.fr/wiki)         */ 

/* Copyleft attitude : ce script est libre, vous pouvez le redistribuer      */ 

/* et/ou le modifier selon les termes de la Licence Art Libre (artlibre.org) */ 

/* Merci a BohwaZ (http://bohwaz.lautre.net) pour ses idees et sa sympathie  */ 



/* ########################## Configuration de WIKIPLAM #################### */ 

$host= "localhost";       // Le serveur MySql ("localhost" ou "sql.free.fr"...) 

$user= "root";            // Le login de connexion a MySql 

$pass= "";                // Le mot de passe de connexion a MySql 

$database= "login_db"; // Le nom de la base (tres souvent identique au login) 

$tablewiki= "wikiplam";   // Nom que vous voulez donner a la table de la base 



$pagewiki= "wiki.php";    // Nom de ce fichier (n'oubliez pas de le changer le cas echeant !) 

$lienlogo= "logo_wikiplam.png";  // Chemin (absolu ou relatif) vers le logo du haut de la page 

$pagesoff = array("WikiListe");  // Liste des pages dont vous voulez empecher les modifs (obligatoire pour WikiListe). 



/* ######################################################################### */ 





/* Les variables $skin["haut"] et $skin["bas"] sont egalement modifiables si  */ 

/* elles conservent les 4 variables ecrites en majuscule (voir ci-dessous).   */ 



/* --------------------- Debut du skin (haut) --------------------- */ 

/* Note : "haut" contient 3 variables: #SELF, #TITRE et #PHRASE */ 



$skin[ "haut"]= "<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">



<html>

<head><title>Wiki: #TITRE</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<style type="text/css"><!--

table       {border: thin solid black;}

td          {padding: 12pt;}

body,td,a   {font-family: arial,sans-serif;}

a           {color: #000088; text-decoration: underline;}

a:hover     {color: red; text-decoration: none;}

//-->

</style></head>



<body bgcolor="#FFFFFF">

    <a href="#SELF"><img src="$lienlogo" alt="logo" border=0></a>

    <center>

    <table width="95%" bgcolor="#EEEEEE">

    <tr>

     <td><center><h1>#PHRASE #TITRE</h1></center>

     <p>";



/* --------------------- Fin du skin (haut) --------------------- */ 





/* ---------------------- Début du skin (bas) ---------------------- */ 

/* Note : "bas" contient 2 variables: #FORM (INDISPENSABLE) et #SELF */ 



$skin[ "bas"]= "

   #FORM

   <font size="-1">Retour à <a href="#SELF?FrontPage"><font color="red">FrontPage</font></a> |

   <a href="#SELF?WikiListe">WikiListe</a> des pages</font>

     </td>

    </tr>

   </table>

   </center>

</body>

</html>";



/* ----------------------- Fin du skin (bas) ----------------------- */ 





/* ---------------------- Début des fonctions ---------------------- */ 



function crea_table() {

global $database,$tablewiki;

$ins= "CREATE TABLE $tablewiki (name VARCHAR (255) not null , text TEXT , date VARCHAR (12) , ip VARCHAR (255) , PRIMARY KEY (name))";

$result = mysql_query($ins);

Return $result;

}





function madate($date) {

$date=substr($date,4,2). "/".substr($date,2,2). "/".substr($date,0,2). " ".substr($date,6,2). ":".substr($date,8,2). ":".substr($date,10,2);

return $date;

}



function in_myarray($elem,$array_t) { 

for ($i=0; $i < count($array_t); $i++) { 

   if ($array_t[$i] == $elem) { return true; } 

   } 

return false; 

}





function getlongip() {

if ($HTTP_X_FORWARDED_FOR)

       { $ipe=$HTTP_X_FORWARDED_FOR; } 

  else { $ipe=$REMOTE_ADDR; } 

return gethostbyaddr($ipe);

}





function mysql_table_exists($table,$db){ 

$tables=mysql_list_tables($db); 

while (list($temp)=mysql_fetch_array($tables)) { 

               if ($temp == $table) { return 1; }

               } 

return 0; 

}





function affichewikiliste() {

global $tablewiki;

$list =  "'''Dernières modifications :'''nn";

$ins =  "SELECT name, date, ip FROM $tablewiki ORDER BY date DESC";

$TableRep=mysql_query($ins);

if ($TableRep>0) { 

   while (list($name, $date, $ip) = mysql_fetch_row ($TableRep)) {

       $list .= $name. " ..... ".madate($date). " ..... ".$ip. "n";

       }

   $count = mysql_num_rows($TableRep);

   $list .=  "nTotal Wiki : '''".$count. " pages'''";

   } else {

   $list =  "Erreur de lecture MySql";

   }

echo format_html($list);

}





function affichewiki($name) {

global $editmode,$pagewiki,$tablewiki;

$ins =  "SELECT * FROM $tablewiki where (name='$name')";

$TableRep=mysql_query($ins);

if ($TableRep>0) {

       $text = @mysql_result($TableRep, 0,  "text");   // Le @ évite le display d'erreur si la page est vide 

       $text = stripslashes($text);

       } else {

       $text =  "Erreur de lecture MySql";

       }

if ($text ==  "") {

       $text =  "Décrivez $name en cliquant sur le bouton.";

       }

if ($editmode !=  "edit") {       // Affiche $text normalement pour les modes normal et done 

       if ($name ==  "WikiListe") {      // Attention cas particulier WikiListe 

             affichewikiliste();

             } else {

             echo format_html($text);

             }

       } else {                 // Affiche $text dans sa boite d'edition pour le mode edit 

             echo  "

           <form method="post" action="".$pagewiki. "">

           <input type="hidden" name="editmode" value="done">

           <input type="hidden" name="name" value="".$name. "">

           <textarea rows=18 cols=70 name="text" style="width:100%"

            wrap=virtual>".$text. "</textarea><br>

           <input type="submit" value="Enregistrer"><input name="r" type="reset" value="Reset">

           </form>

       <a href="".$pagewiki. "?ModeDemploi">ModeDemploi</a> : astuces pour l'édition";

       }

}





function postwiki($name,$text) {

global $pagewiki,$tablewiki;

$date = date( "ymdHis");                  // date pour l'enregistrement dans MySql 

$ddate = date( "d M Y - H:i");            // date pour le tag <d> qu'on affiche 

$text = str_replace( "<d>", $ddate, $text);

$ip = getlongip();

$text = htmlspecialchars(addslashes($text));

$ins =  "REPLACE INTO $tablewiki (name,text,date,ip) VALUES ('$name','$text','$date','$ip')";

$res = mysql_query($ins);

}





function affichehaut() {                 // remplace les variables en MAJUSCULE 

global $name,$skin,$editmode,$pagewiki;

$skin[ "haut"] = ereg_replace( "#TITRE", $name, $skin[ "haut"]);

$skin[ "haut"] = ereg_replace( "#SELF", $pagewiki, $skin[ "haut"]);

if ($editmode ==  "") {

     echo ereg_replace( "#PHRASE",  "Wiki:", $skin[ "haut"]);

     } elseif ($editmode ==  "edit") {

     echo ereg_replace( "#PHRASE",  "Edition de", $skin[ "haut"]);

     } else {

     echo ereg_replace( "#PHRASE",  "Merci d'avoir édité", $skin[ "haut"]);

     }

}





function affichebas() {                  // remplace les variables en MAJUSCULE 

global $name,$skin,$editmode,$pagewiki,$pagesoff;

if ($editmode ==  "edit") {               // Mode edition : rien a afficher en bas 

     $rempl= "

      <p><hr noshade size=1>";

     } else {

     if ((in_myarray($name,$pagesoff)) == true) {   // Autres modes : cas ou l'on ne veut pas que les pages soient modifiables 

               $rempl= "<p><hr noshade size=1>Page non modifiable<p>n";

               } else {                           // Autres modes : mode par defaut. 

               $rempl= "

      <p><hr noshade size=1>

      <form method="post" action="#SELF">

      <input type="submit" value="Editer la Page">

      <input type="hidden" name="name" value="".$name. "">

      <input type="hidden" name="editmode" value="edit">

      </form>"; }

      }

$skin[ "bas"] = ereg_replace( "#FORM",$rempl,$skin[ "bas"]);

echo ereg_replace( "#SELF",$pagewiki,$skin[ "bas"]);

}



function format_html($text) {            // Affiche $text selon les caractéristiques Wiki  

global $pagewiki;

$text = ereg_replace( "'''(('?[^n'])*)'''",  "<b>1</b>", $text);

$text = ereg_replace( "''(('?[^n'])*)''",  "<i>1 </i>", $text);

$text = ereg_replace( "([[:space:];<>'(]|^)(([A-Z][a-zàâéèêëïîôöùû]+){2,})([[:space:].,!?&<>)]|$)",

                     "1<a href="".$pagewiki. "?2">2</a> ", $text);

$text = eregi_replace( "([[:space:];<>(]|^)([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/=])([[:space:].,&<>)]|$)",

                      "1<a href="2://34" target="_blank">2://34</a> ", $text);

$text = eregi_replace( "([_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+)",

                      "<a href="mailto:1">1</a>", $text);

$text = ereg_replace( "[http://([^[:space:]]*)([[:alnum:]#?/&=])]",

                     "<img src="http://12" alt="http://12">", $text);

$text = ereg_replace( "%%(([A-Z][a-zàâéèêëïîôöùû]+){2,})%%",  "1", $text);

$text = ereg_replace( "n[ ]+([[:print:]àâéèêëïîôöùû]+)",  "n<tt>  1</tt>", $text);

$text = ereg_replace( "n*[ ]+([[:print:]àâéèêëïîôöùû]+)",  "<ul><li>1</li></ul>", $text);

$text = ereg_replace( "n---(-)*",  "<hr noshade size=1>", $text);

$text = ereg_replace( "n",  "<br>n", $text);

return $text;

}



/* --------------------- Fin des fonctions --------------------- */ 





/* ----------------------- Début du code ----------------------- */ 





if ($name ==  "")       $name = $argv[0];         // On choppe le nom de la page dans l'URL : le mot apres le "?" 

if ($name ==  "")       $name =  "FrontPage";



$conx = mysql_connect($host,$user,$pass);        // Connexion a la base SQL 

if ($conx) {

     mysql_select_db($database,$conx);

     if (mysql_table_exists( "$tablewiki",$database) > 0) {        // Vérification de l'existence de la table $tablewiki 

             if ($editmode !=  "done") {

                   affichehaut();

                   affichewiki($name);

                   affichebas();

                   } else {

                   postwiki($name,$text);

                   affichehaut();

                   affichewiki($name);

                   affichebas(); 

                   }

             } else {                           // Création de la table $tablewiki si elle n'existe pas 

                   $rep=crea_table();

                   if ($rep>0) {

                         echo  "<BR>Table MySql $tablewiki créée, rechargez à présent la page pour faire fonctionner votre Wiki.";

                         } else {

                         echo  "Erreur : création de la table MySql $tablewiki impossible.";

                         }

                   }

     mysql_close($conx);

     } else {

     echo  "Connexion impossible. Vérifiez les serveur/login/pass de connexion à MySql dans le script.";

     }



/* ------------------------ Fin du code ------------------------ */ 



?>

 

@+, :-(

Philippe

Lien vers le commentaire
Partager sur d’autres sites

hi hi pendant que tu postais ce message, moi j'ai fait la modif du premier script :P

 

Voilà le code :


<?php



// Wiki !

// Par plam ([email protected] - http://forum-scpo.com/wiki)

/* Edition du Script par The Neuromancer pour utiliser une table MySQL à la place d'un fichier wiki.db

Il vous faut créer une table dans votre base avec cette requete : 

CREATE TABLE wiki ( name varchar(255) NOT NULL default '', text longtext, date varchar(12) default NULL, PRIMARY KEY  (name))



Il vous faut aussi fournir ci-dessous les paramètres de connection de votre base de données MySQL



*/





function testconnec_die($error = "")

{

if (empty($error))

{

 $mysqlError = mysql_error();

if (!empty($mysqlError))

{

   echo "Réponse serveur SQL : ".$mysqlError;

}

}

else

   echo "Réponse serveur SQL : ".$error;

echo "<br><a href="javascript:history.go(-1)">BACK</a>";

exit;

}



function connecdb()

{

// Paramètres de connexion serveur



$host = "localhost"; // hôte de votre base, généralement localhost

$login= "root"; // votre login, généralement le pseudo que vous utiliser chez votre hébergeur

$base = "root"; // le nom de votre base de donnée, généralement identique au login

$password=""; // votre mot de passe, généralement le même que vous utiliser chez votre hébergeur





  $db = mysql_connect($host,$login,$password) or testconnec_die();

mysql_select_db($base);

return $db;

}







 function format_html($text)

 {

   $text = ereg_replace("n", "<BR>n", $text);

   $text = ereg_replace("'''(('?[^n'])*)'''", "<b>1</b>", $text);

   $text = ereg_replace("''(('?[^n'])*)''", "<i>1</i>", $text);

   $text = str_replace("----", "<HR>", $text);

   $text = ereg_replace("[[:<:]][A-Z][a-z]+([A-Z][a-z]+)+[[:>:]]",

                        "<a href="wiki.php?name="></a>",

$text);

   $text = eregi_replace("([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", "<A HREF="1://23" TARGET="_blank">1://23</A>", $text);

   $text = eregi_replace("([_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+)", "<A HREF="mailto:1">1</A>", $text);

   return $text;

 } 

 

 function exist ($existname)

   {

 	$connec = connecdb();

   $req = "SELECT * FROM wiki";

   $res = mysql_query ($req,$connec) or testconnec_die();

$num = mysql_num_rows($res);

mysql_close($connec);



while ($row = mysql_fetch_object($res))

{

$maintable[$i] = $row;

$i++;

   }

for($j=0;$j<$num;$j++)

   {

if ($existname = $maintable[$j]->name)

{

$exist = 1;

}

else

{

$exist = 0;

}

}

}







 if ($name == "")

   $name="FrontPage";



 if ($editmode != "done")

 {

 $connec = connecdb();

 $req = "SELECT * FROM wiki WHERE name='$name'";

 $res = mysql_query ($req,$connec) or testconnec_die();

 $result = mysql_fetch_object($res); 

 mysql_close($connec);

 $text = $result->text;

   if ($text == "") 

     $text = "Décrivez $name en cliquant sur le bouton.";

 }

 else

 {

   $date = date("d M Y - H:i");

   $text = str_replace("<d>",$date,$text);



exist($name);

if ($exist = 1)

{

   $connec = connecdb();

   $req = "REPLACE INTO wiki (name,text,date) VALUES  ('$name','$text','$date')";

   $res = mysql_query ($req,$connec) or testconnec_die();	

mysql_close($connec);

}

elseif ($exist = 0)

{

$connec = connecdb();

   $req = "INSERT INTO wiki VALUES('".$name."','".$text."','".$date."')";

   $res = mysql_query ($req,$connec) or testconnec_die();	

mysql_close($connec);



}

 } 



 $text = stripslashes($text);

 $htmltext = htmlspecialchars($text);

?> 



<html>

<head><title><?php print $name; ?></title>

<STYLE><!--

body,td,a{font-family:Arial,Helvetica;}

a{color:red;}

a:hover{color:blue;text-decoration:none;}

//--></STYLE></head>

<body>





 <?php

  if ($editmode == "")

  { ?><br><ul>

    <h1><?php print $name; ?></h1></ul><br>

    <center>

    <TABLE BORDER=0 WIDTH=95% align=center bgcolor="#EEEEEE" cellspacing=0>

    <tr><td>

    <?php

       print format_html($htmltext);

    ?>

  <p><hr noshade>

  <form method="post" action="wiki.php">

   <input type="submit" value="Editer la Page">

   <input type="hidden" name="name" value="<?php print $name; ?>">

   <input type="hidden" name="editmode" value="edit">

  </form>

<?php } else if ($editmode == "edit"){ ?>

    <br><ul><h1>Edition de <?php print $name; ?></h1></ul><br>

    <center>

    <TABLE BORDER=0 WIDTH=95% align=center bgcolor="#EEEEEE" cellspacing=0>

    <tr><td>

   <form method="post" action="wiki.php">

    <input type="hidden" name="editmode" value="done">

   <input type="hidden" name="name" value="<?php print $name; ?>">

    <textarea rows=18 cols=70 name="text"><?php print $htmltext; ?></textarea><br>

    <input type="submit" value="Enregistrer"></form></td><td valign=top>

    <b>Attention, vous allez modifier cette page !</b><br><br>N'oubliez pas que :<br>

     - ''exemple'' affiche <i>exemple</i><br>

     - '''exemple''' affiche <b>exemple</b><br>

     - quatre tirets (----) dessinent une ligne horizontale<br>

     - <d> inscrit la date et l'heure d'édition</td></tr><tr><td colspan=2>

   <p><hr noshade>

<?php } else { ?>   

    <br><ul><h1>Merci d'avoir édité <?php print $name; ?></h1></ul><br>

    <center>

    <TABLE BORDER=0 WIDTH=95% align=center bgcolor="#EEEEEE" cellspacing=0>

    <tr><td>

    <?php

       print format_html($htmltext);

    ?>  

   <p><hr noshade>

<?php } ?>

<font size=-1>Retour à <a href="wiki.php?name=FrontPage">Frontpage</a></font>

   </p>

     </TD>

    </TR>

   </TABLE>

  </CENTER>    

 </body>

</html>

Lien vers le commentaire
Partager sur d’autres sites

Décidément on se comprends pas. C'est ce script-là, celui de http://p220.free.fr/wiki/ qui marche pas chez moi.

si si j'ai bien compris c'est ce que je t'ai expliqué plus haut j'ai rien touché a part créer le fichier wibi.db et ca fonctionne tres bien :P

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Le script n'est pas de moi, je l'ai trouvé sur le site que je t'ai indiqué. J'ai juste corrigé 1 ou 2 truc et il fonctionne correctement.

 

Quels message d'erreur as-tu ? Est-ce que tu as bien donné le même nom de fichier,etc... ?

 

@+, :P

Philippe

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...