Une étape relativement longue et redondante lors de la conception et développement d’une application web consiste à parcourir tous les répertoires de l’application pour vérifier s’il y avait bien un fichier « index » dedans (afin d’éviter les IndexOf, de voir les bannières du serveur etc…).
Il m’a donc été nécessaire de créer ce petit script tout bête, qui parcoure récursivement un répertoire donné, analyse tous les sous-répertoires en indiquant lesquels sont dotés d’un fichier « index », et si le répertoire n’en possède pas, le script permet d’en créer un de votre choix et automatiquement dans le répertoire concerné.
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html xmlns='http://www.w3.org/1999/xhtml'> <head> <style> *{ font-family:verdana; font-size:10px; } .error{ font-weight:bold; color:#AA0000; } .success{ font-weight:bold; color:#00AA00; } </style> </head> <body> <form action='' method='post'> <table> <tr> <td>Absolute path to analyze :</td> <td><input type='text' name='path' size='100' value='<?php echo $_SERVER['DOCUMENT_ROOT'];?>' /></td> </tr> </table> <input type='submit' value='Run' /> </form> <?php function printDirectory($folder, $indexExists){ echo "<li class='" . ((!$indexExists) ? 'error' : 'success') . "'> <input type='checkbox' value='$folder' name='folders[]' " . ((!$indexExists) ? 'checked' : '') . "/> $folder </li>"; } function fileWalker($luke){ $dp = @opendir($luke) or die("Directory $luke doesn't exist..."); $indexExists = false; $folders = array(); while($file = @readdir($dp)){ if(in_array($file, array('.', '..', '.svn'))) continue; if(is_dir($luke.'/'.$file)) $folders[] = $luke.'/'.$file; else { if(preg_match('/^index\.(php|html|htm)$/i', $file)) $indexExists = true; } } printDirectory($luke, $indexExists); @closedir($dp); foreach($folders as $folder){ echo '<ul>'; fileWalker($folder); echo '</ul>'; } } if(isset($_POST['path'])){ echo "<form action='' method='post'> <table> <tr> <td>Content of index.html :</td> <td> <textarea cols='100' rows='10' name='content'> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> </head> <body> <script type='text/javascript'> setTimeout(\"window.location='/'\",1); </script> </body> </html> </textarea> </td> </tr> </table> <input type='submit' value='Create Indexes' /> <ul>"; fileWalker(trim(strval($_POST['path']))); echo " </ul> <input type='submit' value='Create Indexes' /> </form>"; } elseif(isset($_POST['content'], $_POST['folders']) && is_array($_POST['folders']) && count($_POST['folders']) > 0){ $content = trim(strval($_POST['content'])); foreach($_POST['folders'] as $folder){ $folder = trim(strval($folder)); if(is_dir($folder) && is_writable($folder) && !file_exists($folder.'/index.html')){ $fp = @fopen($folder.'/index.html', 'w'); if($fp){ @fputs($fp, $content); echo "<div class='success'>$folder</div>"; @fclose($fp); } else echo "<div class='error'>$folder</div>"; } } } ?> </body> </html>