Listing du fichier montresource.php
00001 <?php
00002 # (gH) -_- montresource.php ; TimeStamp (unix) : 05 Février 2011 vers 17:47
00003
00004 error_reporting(E_ALL | E_NOTICE ) ;
00005
00006 include("std.php") ;
00007
00008 ############################################################ 1
00009 #
00010 # pour des raisons de sécurité, il ne faut pas mettre
00011 # ce programme à la racine de votre site ou dans un
00012 # répertoire qui permettrait de voir des fichiers "sensibles"
00013 # (avec mot de passe, option de configuration...)
00014 #
00015 ############################################################ 2
00016
00017 $gh = "http://forge.info.univ-angers.fr/~gh/js/syntaxhighlighter" ;
00018 $ghforge = "http://forge.info.univ-angers.fr/~gh/" ;
00019
00020 $lesCss = "$gh/styles/shCore.css $gh/styles/shThemeDefault.css" ;
00021 $lesCss = "$gh/styles/shCore.css $gh/styles/shThemeDefault.css" ;
00022 $lesJs = "" ;
00023 $lesJs .= "$gh/src/shCore.js " ;
00024 $lesJs .= "$gh/scripts/shBrushPerl.js " ;
00025 $lesJs .= "$gh/scripts/shBrushPhp.js " ;
00026 $lesJs .= "$gh/scripts/shBrushJScript.js " ;
00027 $lesJs .= "$gh/scripts/shBrushXml.js " ;
00028 $lesJs .= "$gh/scripts/shBrushR.js " ;
00029
00030 debutPage("Code-source ","strict",$lesCss,$lesJs) ;
00031 debutSection("100%") ;
00032
00033 $aide = "oui" ;
00034 $txtaide = "Pour ne pas avoir les numéros de ligne, ajouter &nl=non à l'URL." ;
00035 $txtaide = "" ;
00036
00037 # sans paramètre, on affiche l'aide
00038
00039 if (isset($_GET["nomfic"])) {
00040 $fn = $_GET["nomfic"] ;
00041 $aide = "non" ;
00042 } ; # finsi
00043
00044 # affichage éventuel de l'aide
00045
00046 if ($aide=="oui") {
00047
00048 h2("Syntaxe : montresource.php?nomfic=".s_span("nom du fichier","gbleuf")) ;
00049 pvide() ;
00050 h3("Exemples :") ;
00051 blockquote() ;
00052 p() ;
00053 echo "- avec numéros de ligne : " ;
00054 echo href("montresource.php?nomfic=std.php","std.php") ;
00055 nbsp(5) ;
00056 echo href("montresource.php?nomfic=std.css","std.css") ;
00057 finp() ;
00058 p() ;
00059 echo "- sans numéros de ligne : " ;
00060 echo href("montresource.php?nomfic=std.php&nl=non","std.php&nl=non") ;
00061 finp() ;
00062 finblockquote() ;
00063
00064 finSection() ;
00065 finPage() ;
00066 return ;
00067
00068 } ; # fin si
00069
00070 # il faut vérifier qu'on ne remonte pas avec le nom du fichier
00071
00072 $li = 1 ;
00073 $nl = "" ;
00074 if (isset($_GET["nl"])) { $nl = $_GET["nl"] ; } ;
00075 if ($nl=="non") { $li = 0 ; } ;
00076
00077 $strp = strpos(" $fn","..") ;
00078 $strc = strpos(" $fn","./") ;
00079 $strr = strpos(" $fn","/") ;
00080 $strh = strpos(" $fn","http") ;
00081
00082 if (($strp) or ($strh) or ($strc) or ($strr) ) {
00083
00084 echo "Non ! La remontée avec .. ou http://... ou / est interdite." ;
00085 finSection() ;
00086 finPage() ;
00087 return ;
00088
00089 } ; # fin si
00090
00091 # puis il faut vérifier que le fichier existe
00092
00093 if (!file_exists($fn)) {
00094 h1("Fichier ".b("$fn")." introuvable.") ;
00095 finSection() ;
00096 finPage() ;
00097 return ;
00098 } ; # fin si
00099
00100 # arrivé ici, on peut afficher...
00101
00102 $typeFic = substr($fn,strrpos($fn,".")) ;
00103 #h2(" extension : $typeFic") ;
00104
00105 switch($typeFic) {
00106
00107 case ".pl" :
00108
00109 pre_fichier($fn,"brush:perl",3) ;
00110 js("SyntaxHighlighter.all()") ;
00111 break ;
00112
00113 case ".r" :
00114
00115 pre_fichier($fn,"brush:r",3) ;
00116 js("SyntaxHighlighter.all()") ;
00117 break ;
00118
00119 case ".css" :
00120
00121 pre_fichier($fn,"brush:css",3) ;
00122 js("SyntaxHighlighter.all()") ;
00123 break ;
00124
00125 case ".js" :
00126
00127 pre_fichier($fn,"brush:js",3) ;
00128 js("SyntaxHighlighter.all()") ;
00129 break ;
00130
00131 case ".xml" :
00132
00133 pre_fichier($fn,"brush:xml",3) ;
00134 js("SyntaxHighlighter.all()") ;
00135 break ;
00136
00137 case ".html" :
00138
00139 pre_fichier($fn,"brush:xml",3) ;
00140 js("SyntaxHighlighter.all()") ;
00141 break ;
00142
00143 case ".htm" :
00144
00145 pre_fichier($fn,"brush:xml",3) ;
00146 js("SyntaxHighlighter.all()") ;
00147 break ;
00148
00149 case ".svg" :
00150
00151 pre_fichier($fn,"brush:xml",3) ;
00152 js("SyntaxHighlighter.all()") ;
00153 break ;
00154
00155 default:
00156
00157 h1("Listing du fichier $fn ") ;
00158 pvide() ;
00159
00160 sdl() ;
00161 cmt($txtaide) ;
00162 sdl() ;
00163
00164 echo "\n<!-- listing de $fn mode numéro de ligne = $li -->\n\n" ;
00165 div() ;
00166
00167 echo showSourcePhpGh($fn,$typeFic,$li) ;
00168
00169 findiv() ;
00170 echo "<!-- fin du listing de $fn -->\n\n" ;
00171
00172 } ; # fin de switch
00173
00174 # pour php, on peut proposer plusieurs colorations syntaxiques
00175
00176 if ($typeFic==".php") {
00177 if ((file_exists("voirsourcephp2.php")) and (file_exists("voirsourcephp1.php")) ){
00178
00179 p("texte") ;
00180 echo "La coloration syntaxique est réalisée par un ".b("enrobage")." de la function php nommée " ;
00181 echo href("http://www.manuelphp.com/php/function.highlight-file.php","highlight_file") ;
00182 finp() ;
00183
00184 p("texte") ;
00185 echo " mais si vous préférez, vous pouvez utiliser celle de ";
00186 echo href("voirsourcephp2.php?nomfic=$fn","SyntaxHighlighter") ;
00187 echo " ou même celle de " ;
00188 echo href("voirsourcephp1.php?nomfic=$fn","geshi")."." ;
00189 finp() ;
00190
00191
00192 } ; # fin si
00193 p("texte") ;
00194 echo " Pour ne pas voir les numéros de ligne, ajoutez ".b("&nl=non")." à la suite du nom du fichier. " ;
00195 finp() ;
00196 } ; # fin si
00197
00198 ############################################################
00199
00200 function showSourcePhp($chemin) {
00201
00202 ############################################################
00203
00204 if (file_exists($chemin)) {
00205 $str = highlight_file($chemin, TRUE);
00206 } else {
00207 return "Fichier ".b("$chemin")." introuvable." ;
00208 } ; # fin si
00209
00210 pre_fichier($chemin,"brush:php",3) ;
00211 js("SyntaxHighlighter.all()") ;
00212
00213 } # fin de fonction showSourcePhp
00214
00215
00216 ############################################################
00217
00218 function showSourcePhpGh($chemin,$typeFic="txt",$nbLigne = 1) {
00219
00220 ############################################################
00221
00222
00223 if (file_exists($chemin)) {
00224 $str = highlight_file($chemin, TRUE);
00225 } else {
00226 return "Fichier ".b("$chemin")." introuvable." ;
00227 } ; # fin si
00228
00229 // Nettoyage du code
00230
00231 $str = str_replace("<code>", '', $str) ;
00232 $str = str_replace("</code>", '', $str) ;
00233
00234 $str = preg_replace('/<span style="(.*)">(.*)<(.*)<\/span>/Um','<span style="\1">\2</span><\3',$str);
00235
00236 // Explode sur le <br />
00237
00238 $arr = explode('<br />', $str);
00239 $numLigne = 0 ;
00240 $nbe = count($arr) ;
00241 $out = "" ;
00242 foreach ($arr as $ligne){
00243 $ligne = str_replace("\n", '', $ligne);
00244 $numLigne++ ;
00245 if ($numLigne<$nbe) {
00246 if ($nbLigne==1) {
00247 $out .= '<span style="color:#000000">'.sprintf("%05d ",$numLigne)."</span>".snbsp(4) ;
00248 } ; # fin si
00249 $out .= $ligne." <br />\n";
00250 } else {
00251 $out .= "</span>\n" ;
00252 } ; # fin si on n'est pas à la dernière ligne
00253 } ; # fin pour chaque
00254 $out = "<code>\n".$out."</code>\n";
00255 return $out;
00256
00257 } # fin de fonction showSourcePhpGh
00258
00259 ############################################################
00260
00261 function showSourcePerl($chemin) {
00262
00263 ############################################################
00264
00265 if (file_exists($chemin)) {
00266 $str = highlight_file($chemin, TRUE);
00267 } else {
00268 return "Fichier ".b("$chemin")." introuvable." ;
00269 } ; # fin si
00270
00271 pre_fichier($chemin,"brush:perl",3) ;
00272 js('SyntaxHighlighter.all()') ;
00273
00274 } ; # fin de fonction showSourcePerl
00275
00276 finSection() ;
00277 finPage() ;
00278 ?>
La coloration syntaxique est réalisée par un enrobage de la function php nommée highlight_file
mais si vous préférez, vous pouvez utiliser celle de SyntaxHighlighter ou même celle de geshi.
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)