Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Site Web > PHP > Points particuliers > Voir la source des pages de son site en ligne > Lecture du tutoriel

Voir la source des pages de son site en ligne

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : karldermagnus
Note : 16 / 20 (5 votes)
Visualisations : 9 284

Plus d'informations Plus d'informations
Vous apprendrez dans ce tutoriel à voir la source de tous vos fichiers (quels que soient les formats).
Cela peut être utile quand l'on travaille en équipe par exemple, à plusieurs sur un même fichier.

Prenez garde ! Ce script ne doit pas être accessible au public sur votre site !
Sommaire du tutoriel :
Icône du chapitre

Listage des dossiers

Pour commencer, nous allons afficher le contenu du dossier courant.
Quand vous cliquerez sur un dossier, son contenu s'affichera.

Côté PHP, ça donnera cela :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?php
$handle = opendir(getcwd());
//On initialise les variables.
$fichiers = '';
$dossiers = '';
while (false !== ($file = readdir($handle))) {
  if(substr(strrchr($file, '.') ,1)) { // c'est un fichier car il a une extension
        $extension = substr(strrchr($file, '.') ,1);
        $fichiers .=  "<li><a href='voirfichier.php?f=".$file."&amp;langage=".$extension."'>".$file."</a></li>";
  } else { // c'est un dossier
        $dossiers .= '<li id="'.$file.'"><img src="folder.png"> <a href="#'.$file.'" onClick="javascript:voirDossier(\''.$file.'\');">'.$file.'</a></li>';
   }
}
echo $dossiers;
echo $fichiers;
closedir($handle); 
?>


Voici une explication détaillée du code :
Code : PHP
1
2
<?php
$handle = opendir(getcwd());

Ici, on ouvre un répertoire grâce à la fonction opendir(). La fonction getcwd() retourne le répertoire courant. Vous pouvez donc changer le répertoire en mettant : opendir("votre_repertoire");

Code : PHP
1
2
<?php
while (false !== ($file = readdir($handle))) {

On lit le contenu du dossier aussi longtemps qu'il reste des fichiers / dossiers à lister.

Code : PHP
1
2
<?php
$extension = substr(strrchr($file, '.') ,1);

On récupère l'extension du fichier ($file).

Pour le reste, je pense que c'est facilement compréhensible ^^ .

Voilà : maintenant, nous avons le contenu notre dossier sous les yeux.
Il nous faut à présent pouvoir afficher les sous-dossiers et ouvrir les fichiers.

Listage des sous-dossiers

Nous allons ici faire appel à AJAX.
En effet, nous allons exécuter un script PHP, mais sans recharger la page.

Je vous présente le script JS :
Code : JavaScript
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function voirDossier(dossier) {
        if(dejaOuvert == 'non') { // Aucun sous-dossier n'est déjà ouvert
                var id = dossier;
                var xhr;
                
                if (window.XMLHttpRequest) {
                        xhr = new XMLHttpRequest();
                } else if (window.ActiveXObject) {
                        xhr = new ActiveXObject('Microsoft.XMLHTTP');
                } else {
                        alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...');
                        return;
                }
                xhr.open('POST','voirdossier.php',true);
                xhr.onreadystatechange = function() {
                        if (xhr.readyState == 4) {
                                if (document.getElementById) document.getElementById(id).innerHTML += xhr.responseText;
                                }
                        }
                xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
                var data = 'dossier='+escape(dossier);
                xhr.send(data);
                dejaOuvert = 'oui'; // On a ouvert un sous-dossier, la valeur de dejaOuvert est donc "oui"
        } else {
                dejaOuvert = 'non'; // Vu qu'on ferme le dossier, on remet la valeur de dejaOuvert à "non"
                var id = dossier;
                if (document.getElementById) document.getElementById(id).innerHTML =  '<li id="'+id+'"><img src="./style/icons/folder.png"> <a href="#'+id+'" onClick="javascript:voirDossier("'+id+'");">'+id+'</a></li>';     
                dejaOuvert = 'non';
        }
}


Pour comprendre ce code, suivez ce tutoriel.

Il ne reste plus qu'à faire maintenant le fichier PHP qui parsera les données. Le fichier sera nommé voirdossier.php.

Voici le code :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
header('Content-type: text/html; charset=iso-8859-1'); 
 
$dossier = $_POST['dossier'];
$handle = opendir('./'.$dossier);
$fichiers = '';
$dossiers = '';
echo '<ul>';
while (false !== ($file = readdir($handle))) {
        if(substr(strrchr($file, '.') ,1)) {
                $extension = substr(strrchr($file, '.') ,1);
                $fichiers .=  "<li><a href='voirfichier.php?f=./".$dossier."/".$file."&amp;langage=".$extension."'>".$file."</a></li>";
        } else {
                $dossiers .= '<li id="'.$file.'"><img src="folder.png"> <a href="#'.$file.'" onClick="javascript:voirDossier(\''.$file.'\');">'.$file.'</a></li>';
        }
}
 
echo $dossiers;
echo $fichiers;
echo '</ul>';
closedir($handle); 
 
?>


Le code est à peu près similaire au premier, sauf qu'on parse les données reçues de Javascript...

Maintenant, la partie pour l'affichage est terminée.
Il ne reste plus qu'à afficher vos fichiers ^^ .

Affichage des fichiers

Nous allons voir à présent comment afficher les fichiers en colorant selon le langage.
Nous utiliserons dans cette partie "GeShi" qui est un colorant de script.
Pour installer GeShi, suivez la première partie de ce tutoriel.

Une fois que vous l'avez installé, nous allons pouvoir passer au script de la page voirfichier.php.

On crée d'abord la fonction qui va afficher les couleurs de votre script en utilisant GeShi :
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
function color($file,$langage) {
        include_once('./includes/geshi/geshi.php');
        $arrayExtension = array("js" => "javascript"); // ajouter tous les langages nécessaires
        foreach($arrayExtension as $cle => $element) {
                $langage = str_replace($cle, $element, $langage);
        }
        $geshi = new GeSHi($file, $langage);
        return $geshi->parse_code();
}
?>


Maintenant que la fonction est déclarée, on va passer à la base du fichier.
Voici le script :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?php
$fichier = $_GET['f'];
$langage = $_GET['langage'];
 
$handle = fopen($fichier, 'a+') ;
$fichierValue = '';
while($ligne=fgets($handle)) {
      $fichierValue .= $ligne;
}
echo color($fichierValue,$langage);
?>


Voilà, c'est fini... ^^

Vous avez donc maintenant trois fichiers :

Pour des questions, des demandes d'améliorations : me contacter par MP, merci.

Bon surf sur le Site du Zér0 ;) .
Retour en haut Retour en haut


Créé : le 05/12/2007 à 22:43:01
Modifié : le 22/08/2008 à 16:08:04
Avancement : 100%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 400 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0273s (0.017s)