Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EXPLORATEUR FTP SUR 2 NIVEAUX


Information sur la source

Description

Une petit source qui peut aider certains à comprendre l'utilisation des dossiers.

Moi-même je viens de commencer ce soir et voilà mon petit entraînement. =P


Cette source permet de lister les fichiers et dossiers sur plusieurs niveaux (au moins 2) et de pouvoir fournir un aperçu des fichiers (visualisation de l'image et/ou lien vers le fichier).

Aperçu ici: http://www.g-web.fr.nf/upload/membre/
 

Source

  • <?php
  • /*
  • G FTP
  • Par viki53 (http://viki53.g-web.fr.nf/)
  • Source libre d'utilisation
  • Un petit lien serait tout de mêmele bienvenu =D
  • Les variables $config['site_url'] et $config['site_racine'] sont à déclarer et correspondent respectivement à l'URL absolue du site (http://www.g-web.fr.nf/) et le chemin depuis la racine du serveur (/localhost/site/).
  • */
  • $nb_fichiers = 0; // On initialise les compteurs
  • $nb_dossiers = 0;
  • $file_types_img = array('jpg','gif','png','bmp','jpeg', 'tif'); // On déclare quelques types de fichiers (ici les images)
  • $file_types_zip = array('zip','rar'); // Idem mais pour les archives
  • if( $_GET['folder'] != NULL )
  • {
  • $folder = htmlentities($_GET['folder']);
  • }
  • if( $_GET['subdir'] != NULL )
  • {
  • $subdir = htmlentities($_GET['subdir']);
  • }
  • if( $_GET['file'] != NULL )
  • {
  • $file = htmlentities($_GET['file']);
  • $filename = explode('.', $file);
  • $filenameext = strtolower($filename[count($filename)-1]); // On récupère l'extension du fichier
  • if($folder != NULL)
  • $doss = $folder.'/';
  • if($subdir != NULL)
  • $doss = $doss.$subdir.'/';
  • if( is_file($doss.$file) )
  • {
  • if( in_array($filenameext, $file_types_img) ) // Si le fichier est une image
  • {
  • echo '
  • <p class="t_align_centre">
  • <a href="'.$doss.$file.'" title="Voir l\'image en grand"><img src="'.$doss.$file.'" alt="'.$file.'" class="avatar" /></a>
  • </p>
  • ';
  • }
  • elseif( in_array($filenameext, $file_types_zip) ) // Si c'est une archive
  • {
  • echo '
  • <p class="t_align_centre">
  • Télécharger l\'archive : <a href="'.$doss.$file.'"><img src="/img/icones/cursor.png" alt="Clic" /></a>
  • </p>
  • ';
  • }
  • else // Sinon
  • {
  • echo '
  • <p class="t_align_centre">
  • Extension inconnue ('.strtoupper($filenameext).') : <a href="'.$doss.$file.'"><img src="/img/icones/cursor.png" alt="Clic" title="Télécharger le fichier" /></a>
  • </p>
  • ';
  • }
  • echo '
  • <p class="t_align_centre">
  • <a href="'.$_SERVER['HTTP_REFERER'].'">
  • <img src="/img/precedent.png" alt="Retour" />
  • </a>
  • <a href="?">
  • <img src="/img/sommaire.png" alt="Sommaire" />
  • </a>
  • <a href="'.$_SERVER['HTTP_REFERER'].'">
  • <img src="/img/suivant.png" alt="Suite" />
  • </a>
  • </p>
  • '; // Quelques petits liens. :p
  • }
  • else // Si le fichier n'existe pas
  • {
  • echo '<p class="message_erreur">Ce fichier n\'existe pas.</p>
  • <p class="message_info">Vous aviez demandé <a href="?folder='.$folder.'" class="color_bleugris">'.$config['site_url'].'upload/membre/'.$doss.$file.'</a></p>';
  • }
  • }
  • else // Si $_GET['file'] n'est pas donné
  • { // Si on veut parcourir le serveur
  • echo '<p>Dossier recherché : <span class="color_bleugris">'.$config['site_url'].'upload/membre/';
  • if($folder != NULL)
  • echo $folder.'/';
  • if($subdir != NULL)
  • echo $subdir.'/';
  • echo'</span>.</p>';
  • if($folder != NULL)
  • $doss = $folder.'/';
  • if($subdir != NULL)
  • $doss = $doss.$subdir.'/';
  • if( is_dir($config['site_racine'].'upload/membre/'.$doss) ) // Si le dossier existe
  • {
  • $dossier = opendir($config['site_racine'].'upload/membre/'.$doss);
  • echo '
  • <ul>
  • ';
  • while( ($fichier = readdir($dossier)) != FALSE )
  • {
  • if( is_file($doss.$fichier) AND !is_dir($doss.$fichier) AND $fichier != 'index.php' )
  • {
  • $nb_fichiers ++; //On incrémente le compteur de un
  • $fichier_name = explode('.', $fichier);
  • $fichier_ext = strtolower($fichier_name[count($fichier_name)-1]);
  • echo '
  • <li>';
  • if( in_array($fichier_ext, $file_types_img) ) // Si c'est une image
  • {
  • echo '<img src="/img/icones/image.gif" alt="" />';
  • }
  • elseif( in_array($fichier_ext, $file_types_zip) ) // Si c'est une archive
  • {
  • echo '<img src="/img/icones/compress.png" alt="" />';
  • }
  • else // Sinon
  • {
  • echo '<img src="/img/icones/cursor.png" alt="" />';
  • }
  • // Le lien, qui varie selon les données existantes
  • if( $subdir != NULL )
  • {
  • echo'
  • <a href="?folder='.$folder.'&amp;subdir='.$subdir.'&amp;file='.$fichier.'">
  • /'.$fichier.'
  • </a>
  • ';
  • }
  • elseif( $folder != NULL )
  • {
  • echo'
  • <a href="?folder='.$folder.'&amp;file='.$fichier.'">
  • /'.$fichier.'
  • </a>
  • ';
  • }
  • else
  • {
  • echo'
  • <a href="?file='.$fichier.'">
  • /'.$fichier.'
  • </a>
  • ';
  • }
  • echo '
  • </li>';
  • }
  • elseif( is_dir($doss.$fichier) AND !is_file($doss.$fichier) AND $fichier == '..' )
  • { // Si c'est un dossier supérieur
  • if($folder != NULL AND $subdir != NULL )
  • {
  • echo '
  • <li>
  • <a href="?folder='.$folder.'">
  • <img src="/img/precedent.png" alt="&lt;=" />
  • </a>
  • </li>
  • ';
  • }
  • elseif($folder != NULL AND $subdir == NULL )
  • {
  • echo '
  • <li>
  • <a href="?">
  • <img src="/img/precedent.png" alt="&lt;=" />
  • </a>
  • </li>
  • ';
  • }
  • }
  • elseif( is_dir($doss.$fichier) AND !is_file($doss.$fichier) AND $fichier != '.' )
  • {
  • // Si c'est un sous-dossier
  • $nb_dossiers ++; // On incrémente le beau compteur
  • // Un petit lien
  • if( $folder != NULL )
  • {
  • echo '
  • <li>
  • <a href="?folder='.$folder.'&amp;subdir='.$fichier.'">
  • <img src="/img/icones/folder.gif" alt="=&gt;" /> /'.$fichier.'/
  • </a>
  • </li>
  • ';
  • }
  • else
  • {
  • echo '
  • <li>
  • <a href="?folder='.$fichier.'">
  • <img src="/img/icones/folder.gif" alt="=&gt;" /> /'.$fichier.'/
  • </a>
  • </li>
  • ';
  • }
  • }
  • }
  • echo '
  • </ul>
  • ';
  • // On affiche les compteurs
  • echo '
  • <p class="message_info">Il y a
  • <strong>'.$nb_fichiers.'</strong> fichier(s) et
  • <strong>'.$nb_dossiers.'</strong> sous-dossier(s)
  • dans ce dossier.</p>
  • ';
  • closedir($dossier); // On ferme le dossier
  • }
  • else // Si le dossier demandé n'existe pas
  • {
  • echo '<p class="message_erreur">Le dossier n\'a pas pu être ouvert.</p>';
  • }
  • }
  • ?>
<?php
	/*
	G FTP
	Par viki53 (http://viki53.g-web.fr.nf/)
	Source libre d'utilisation
	
	Un petit lien serait tout de mêmele bienvenu =D 
	
	Les variables $config['site_url'] et $config['site_racine'] sont à déclarer et correspondent respectivement à l'URL absolue du site (http://www.g-web.fr.nf/) et le chemin depuis la racine du serveur (/localhost/site/).
	*/
	
	$nb_fichiers = 0; // On initialise les compteurs
	$nb_dossiers = 0;
	
	$file_types_img = array('jpg','gif','png','bmp','jpeg', 'tif'); // On déclare quelques types de fichiers (ici les images)
	$file_types_zip = array('zip','rar'); // Idem mais pour les archives
	
	if( $_GET['folder'] != NULL )
	{
		$folder = htmlentities($_GET['folder']);
	}
	if( $_GET['subdir'] != NULL )
	{
		$subdir = htmlentities($_GET['subdir']);
	}
	
	if( $_GET['file'] != NULL )
	{
		$file = htmlentities($_GET['file']);
		
		$filename = explode('.', $file);
		$filenameext = strtolower($filename[count($filename)-1]); // On récupère l'extension du fichier
		
		if($folder != NULL)
			$doss = $folder.'/';
		if($subdir != NULL)
			$doss = $doss.$subdir.'/';
		
		if( is_file($doss.$file) )
		{
			if( in_array($filenameext, $file_types_img) ) // Si le fichier est une image
			{
				echo '
				<p class="t_align_centre">
					<a href="'.$doss.$file.'" title="Voir l\'image en grand"><img src="'.$doss.$file.'" alt="'.$file.'" class="avatar" /></a>
				</p>
				';
			}
			elseif( in_array($filenameext, $file_types_zip) ) // Si c'est une archive
			{
				echo '
				<p class="t_align_centre">
					Télécharger l\'archive : <a href="'.$doss.$file.'"><img src="/img/icones/cursor.png" alt="Clic" /></a>
				</p>
				';
			}
			else // Sinon
			{
				echo '
				<p class="t_align_centre">
					Extension inconnue ('.strtoupper($filenameext).') : <a href="'.$doss.$file.'"><img src="/img/icones/cursor.png" alt="Clic" title="Télécharger le fichier" /></a>
				</p>
				';
			}
			
			echo '
			<p class="t_align_centre">
			<a href="'.$_SERVER['HTTP_REFERER'].'">
				<img src="/img/precedent.png" alt="Retour" />
			</a>
			
			<a href="?">
				<img src="/img/sommaire.png" alt="Sommaire" />
			</a>
			
			<a href="'.$_SERVER['HTTP_REFERER'].'">
				<img src="/img/suivant.png" alt="Suite" />
			</a>
			</p>
			'; // Quelques petits liens. :p
		}
		else // Si le fichier n'existe pas
		{
			echo '<p class="message_erreur">Ce fichier n\'existe pas.</p>
			
			<p class="message_info">Vous aviez demandé <a href="?folder='.$folder.'" class="color_bleugris">'.$config['site_url'].'upload/membre/'.$doss.$file.'</a></p>';
		}
	}
	
	
	else // Si $_GET['file'] n'est pas donné
	{ // Si on veut parcourir le serveur
		echo '<p>Dossier recherché : <span class="color_bleugris">'.$config['site_url'].'upload/membre/';
		if($folder != NULL)
			echo $folder.'/';
		if($subdir != NULL)
			echo $subdir.'/';
		
		echo'</span>.</p>';
		
		if($folder != NULL)
			$doss = $folder.'/';
		if($subdir != NULL)
			$doss = $doss.$subdir.'/';
		
		if( is_dir($config['site_racine'].'upload/membre/'.$doss) ) // Si le dossier existe
		{
			$dossier = opendir($config['site_racine'].'upload/membre/'.$doss);
			
			echo '
			<ul>
			';
			
			while( ($fichier = readdir($dossier)) != FALSE )
			{
				if( is_file($doss.$fichier) AND !is_dir($doss.$fichier) AND $fichier != 'index.php' )
				{
					$nb_fichiers ++; //On incrémente le compteur de un
					
					$fichier_name = explode('.', $fichier);
					$fichier_ext = strtolower($fichier_name[count($fichier_name)-1]);
					
					echo '
					<li>';
					if( in_array($fichier_ext, $file_types_img) ) // Si c'est une image
					{
						echo '<img src="/img/icones/image.gif" alt="" />';
					}
					elseif( in_array($fichier_ext, $file_types_zip) ) // Si c'est une archive
					{
						echo '<img src="/img/icones/compress.png" alt="" />';
					}
					else // Sinon
					{
						echo '<img src="/img/icones/cursor.png" alt="" />';
					}
					
					// Le lien, qui varie selon les données existantes
					if( $subdir != NULL )
					{
						echo'
						<a href="?folder='.$folder.'&amp;subdir='.$subdir.'&amp;file='.$fichier.'">
							/'.$fichier.'
						</a>
						';
					}
					elseif( $folder != NULL )
					{
						echo'
						<a href="?folder='.$folder.'&amp;file='.$fichier.'">
							/'.$fichier.'
						</a>
						';
					}
					else
					{
						echo'
						<a href="?file='.$fichier.'">
							/'.$fichier.'
						</a>
						';
					}
					echo '
					</li>';
				}
				elseif( is_dir($doss.$fichier) AND !is_file($doss.$fichier) AND $fichier == '..' )
				{ // Si c'est un dossier supérieur
					if($folder != NULL AND $subdir != NULL )
					{
					echo '
					<li>
						<a href="?folder='.$folder.'">
							<img src="/img/precedent.png" alt="&lt;=" />
						</a>
					</li>
					';
					}
					elseif($folder != NULL AND $subdir == NULL )
					{
					echo '
					<li>
						<a href="?">
							<img src="/img/precedent.png" alt="&lt;=" />
						</a>
					</li>
					';
					}
				}
				elseif( is_dir($doss.$fichier) AND !is_file($doss.$fichier) AND $fichier != '.' )
				{
				// Si c'est un sous-dossier
					$nb_dossiers ++; // On incrémente le beau compteur
					
					
					// Un petit lien
					if( $folder != NULL )
					{
					echo '
					<li>
						<a href="?folder='.$folder.'&amp;subdir='.$fichier.'">
							<img src="/img/icones/folder.gif" alt="=&gt;" /> /'.$fichier.'/
						</a>
					</li>
					';
					}
					else
					{
					echo '
					<li>
						<a href="?folder='.$fichier.'">
							<img src="/img/icones/folder.gif" alt="=&gt;" /> /'.$fichier.'/
						</a>
					</li>
					';
					}
				}
			}
			
			echo '
			</ul>
			';
			
			// On affiche les compteurs
			echo '
			<p class="message_info">Il y a 
			<strong>'.$nb_fichiers.'</strong> fichier(s) et 
			<strong>'.$nb_dossiers.'</strong> sous-dossier(s) 
			dans ce dossier.</p>
			';
			
			closedir($dossier); // On ferme le dossier
		}
		else // Si le dossier demandé n'existe pas
		{
			echo '<p class="message_erreur">Le dossier n\'a pas pu être ouvert.</p>';
		}
	}
	?>

Conclusion

Je ne l'ai pas vraiment développée mais j'ai ajouté quelques commentaires pour vous aider.

Je précise que je n'ai pas effectué les changements pour qu'elle soit adaptable à tous les sites.

Bientôt je la transformerai en fonction. ;)
 

Commentaires et avis

signaler à un administrateur
Commentaire de neigedhiver le 16/07/2008 15:19:05

Salut,

Ta source ne me plait pas vraiment. C'est mon point de vue, hein.
Tu mélanges le HTML et le PHP, du coup c'est pas très clair. Tu dis "Je précise que je n'ai pas effectué les changements pour qu'elle soit adaptable à tous les sites." Effectivement, et je prends ce paramètre en compte dans mon commmentaire. Ce qui me permet de te conseiller de séparer au maximum traitement et affichage.

"Bientôt je la transformerai en fonction" : Et pourquoi pas plutôt en classe ?

Sinon, ce n'est pas un explorateur ftp, mais un simple explorateur : aucune connexion FTP à un serveur distant. Si j'utilise ta source en local, je pourrai parcourir mes fichiers en local. C'est donc un explorateur de fichiers (distant ou local, peu importe).

Il existe déjà de nombreuses sources sur le sujet. Je constate que la mienne fait vraiment figure d'exception, et je t'invite à y jeter un petit coup d'oeil. Tu y trouveras peut-être des idées d'améliorations.
A l'heure de PHP5, PHP6 étant en beta, continuer d'utiliser opendir() et readdir() (qui sont de bonnes vieilles fonctions PHP3) me parait tellement archaïque, alors que PHP5 fournit des outils pour faire la même chose, mais tellement plus simplement...

C'est une bonne démarche que de poster une source pour demander l'avis sur son travail. Mais c'est une bonne démarche aussi de parcourir les autres sources qui existent déjà et de voir en quoi on peut apporter quelque chose de plus en partageant la sienne. Des commentaires ont déjà été faits sur les autres sources, je n'en apporterai donc pas davantage.

signaler à un administrateur
Commentaire de viki53 le 16/07/2008 15:29:44

En fait je m'attendais à ces remarques. :p

Donc elles ne me surprennent pas. ;)

Alors:
- Je sais que ce n'est pas un explorateur FTP, c'est juste que vu l'heur où je l'ai postée, j'ai pas vraiment réfléchis >_<
- Les fonctions opendir() et readdir() que j'ai commencé à utiliser, je connais aussi glob(), mais apparemment plusieurs failles de sécurité existent. :s
- Je pourrais la transformer en class, mais je préfère les fonctions pour l'instant, mais si j'utilise de plus en plus de class. ^^ Un jour peut-être ...
- Et enfin j'ai bien précisé que j'ai commencé à savoir gérer les fichiers (après l'upload que je sais déjà gérer) et les dossiers que depuis hier en fin d'après-midi.

Donc je pense que pour un début c'est pas trop mal. :p

En tout cas je prends ça en compte et je vais essayer de me documenter. ;)

signaler à un administrateur
Commentaire de neigedhiver le 16/07/2008 17:45:42

Re,

Tu n'as pas du bien lire mon commentaire. Ou alors, je me suis mal exprimé.
J'ai dit que si tu voulais juste apprendre, tu n'avais pas besoin de publier une source.
Publier une source n'a de réel intérêt que pour apporter une nouveauté sur d'autres sources du même genre. En l'occurrence, des sources de parcours de fichiers, il y en a déjà des tonnes. C'est comme les livres d'or.

Donc je ne m'ne prenais nullement à ton niveau : tu débutes, ce que tu as fait n'est pas mal. Disons que c'est un bon début. Mais cela ne justifie pas nécessairement de poster une source. A moins que tu n'attendes de la reconnaissance...

Enfin, j'ai parlé de fonctionnalités apportées par PHP5, pas de glob(). J'entendais par là, si tu étais allé voir la source que j'ai publiée (et qui n'est jamais qu'un package de classes pour un explorateur de fichiers qui a encore besoin d'évolutions, notamment concernant la récursivité), l'utilisation d'Itérateurs qui permettent de parcourir un fichier sans avoir besoin de le lire manuellement. Avec des Filtres (FilterIterator), on peut sélectionner les fichiers qu'on laisse passer à l'affichage.

Des sources comme ça avec opendir() et readdir(), il en existe des centaines, je ne compte même pas combien rien que sur phpCS. C'est toujours la même chose, il suffit même de prendre l'exemple donné dans la doc de PHP. Rien de transcendant. La manière d'afficher les fichiers n'a rien de bien difficile.

Pour terminer : des fonctions c'est bien, mais c'est extrêmement limité. Les classes ont des avantages que n'ont pas les fonctions. Et dans le cas présent, celui d'un explorateur de fichiers, des classes bien foutues peuvent rendre le code :
- très lisible
- très facilement intégrable et réutilisable
- très facilement maintenable

Encore une fois, je ne m'en prends pas à toi : j'explique simplement pourquoi, a *mon* avis ta source n'apporte pas grand chose par rapport aux centaines d'autres qui existent déjà.

Sur ce, je te souhaite une bonne continuation et une bonne fin de journée.

signaler à un administrateur
Commentaire de viki53 le 16/07/2008 17:54:28

D'accord, je ne l'avais pas pris exactement comme ça. :p

Donc:
- Des sources de listage de dossiers, j'en ai vue pas mal sur PHPCS ou autre, mais aucune ne correspondait et peu géraient les sous-dossiers et l'affichage des fichiers (images).
- Je vais me pencher sur les classes, c'est vrai que je ne peux qu'y gagner. ^^
- Pour PHP 5, je vais voir si je l'ai sur mon serveur. ;)
- Et je n'attends pas de félicitations, juste que cette source peut aider certains débutants (comme moi ou pire) à comprendre comment utiliser certaines fonctions.

Je vais me pencher sur ta source et voir ce que je peux en retirer. ;)

Je te souhaite aussi une bonne fin de journée et de sortir des sources intéressantes. =D

signaler à un administrateur
Commentaire de yoman64 le 24/07/2008 10:06:06

Salut,

Je passais par là et j'ai juste un petit commentaire: comme neigedhiver le disait, tu devrais vraiment changer le titre, en plus d'être inexacte, il complique la recherche à ceux qui cherchent un VRAI explorateur FTP :-/

signaler à un administrateur
Commentaire de neigedhiver le 24/07/2008 10:35:18

Oh Yoman ! Comment ça va depuis le temps ? Comment vont les affaires ?

Ouais, je sais, c'est pas trop l'endroit pour ce genre de comm... navré.

signaler à un administrateur
Commentaire de yoman64 le 24/07/2008 11:07:00

Super ! nouveau boulot + beaucoup de codage PHP dans mes temps libre pour mon hébergement = pas beaucoup de temps pour CS.

Et toi comment va, quand j'ai arrêté de venir sur phpcs tu n'étais pas bien présent non plus, occupé  ?

Je suppose que tu as raison, peut être qu'en message privé ça serait un meilleur endroit ;p.

signaler à un administrateur
Commentaire de PHPLizardo le 04/08/2008 02:31:32 1/10

Je me permet d'ajouter que cette source n'est absolument pas sécurisée car elle permet à qui le souhaite de connaitre l'arborescence complète du ftp.

Voyez vous-même: http://www.g-web.fr.nf/upload/membre/?folder=../../

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Sécurité-fichiers-dossiers [ par stageSAP ] Bonjour,Pour mon site, je protège l'accès aux pages grâce aux variables de sessions et cela marche très bien. Je travaille en local pour l'instant. Su Téléchargement de fichiers [ par asterixobelix ] J'expose mon problème:J'ai créé un explorateur de fichier en php pour pouvoir aller les rechercher dans une bibliotheque en intranet, puis les rapatri connection FTP par PHP [ par JulienC ] Bonjour à toutes et à tous,Mon but est de pouvoir uploader sur mon site des fichiers ayant une extension particulière (on les nommera .ext). Ces fichi Tri de fichiers par date [ par Clem ] Comment trier dans l'orde du plus nouveau au plus vieux, des dossiers ?J'ai trouvé pour afficher les dossiers :&lt;?$rep=opendir('.');while ($file = r ftp_put [ par Tasuki ] Est-ce-qu'on est obligé de passer par un formulaire avec un champ de type 'file' pour transférer des fichiers avec l'instruction ftp_put?J'essaye de t distinction dossier/fichiers (ftp) [ par glipper ] Bonjour,Je voudrais lister les fichiers présents sur mon serveur ftpavec un script php.J'ai donc fait ceci :$ftp = ftp_connect($serveur);ftp_login($ft Problème avec serveur FTP [ par DrMnu ] Bonjour,J'ai un petit problème que je m'en vais vous expliquer: j'ai un serveur FTP sur lequel je stocke des fichiers uploadés par les utilisateurs de Droits des fichiers [ par flexx ] Salut Je me pose quelques questions au sujet des droits des fichiers et des r&#233;pertoires sur un FTP. Par exemple, lorsque j'upload un fichier s effacer tous les fichiers et dossiers a la racine d un site [ par Teclis01 ] Je crois que tout est dans le titre.Je suis decu de free je ne peux plus acceder a mon ftp je peux seulement acceder a mon site en passant par un navi lister fichiers et sous-dossiers [ par Totofweb ] Bonjourdans un script, j'ai besoin de lister les fichiers d'un dossier et les fichiers des sous-dossiers (niveau 1 seulement, mais si vous avez une so


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.