Accueil > > > GESTIONNAIRE D'IMAGES POUR INTERFACE D'ADMIN
GESTIONNAIRE D'IMAGES POUR INTERFACE D'ADMIN
Information sur la source
Description
Je l'utilise sur mon site pour que les admins puissent envoyer leur propres images pour les news... Le bout de code correspondant à la page d'ajout de news est en commentaire à la fin du code ! Il gérè: -La liste des images -L'envoi (upload) d'images -La copie depuis un autre site (via une requête HTTP) -La supression (avec confirmation) -La sélection avec aperçu depuis une autre page Mais bon, rien ne vous empêche de l'utiliser pour autre chose que des images... Mais dans ce cas, il faudrait revoir le code de réception http.
Source
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <HTML LANG="fr">
- <HEAD>
- <TITLE>Console d'administration: Images</TITLE>
- <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">
- <META HTTP-EQUIV="content-style-type" CONTENT="text/css">
- <META HTTP-EQUIV="content-script-type" CONTENT="text/javascript">
- <META NAME="author" CONTENT="Elektordi">
- </HEAD>
- <body>
- <h1 align="center">Console d'administration: Images</h1>
-
- <?
-
- $script_name = "gestion_images.php";
- $repertoire = "images/";
-
- if($mode=="copy") // Copier une image depuis une URL
- {
-
- echo "<h2>Copie d'image</h2>\n";
-
- $er=0;
- if(!preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/', $url, $url_ary)) $er=1;
- if(empty($url_ary[4])) $er=1;
-
- if($er==1) {
- ?><form name="form1" method="post" action="<? echo $script_name; ?>">
- <p><b><font color="red">URL incomplète:</font></b>
- <input name="url" type="text" id="url" size="100" value="<? echo $url; ?>">
- <input type="submit" name="Submit" value="Copier">
- <input name="mode" type="hidden" id="mode" value="copy">
- <a href="<? echo $script_name; ?>">Annuler</a></p>
- </form>
- <?
- }
- else
- {
- $maxsize = 100000;
-
- $base_filename = substr($url_ary[4],strrpos($url_ary[4],"/")+1);
-
- $base_get = '/' . $url_ary[4];
- $port = ( !empty($url_ary[3]) ) ? $url_ary[3] : 80;
-
- if($base_filename=="") die("<h2>Impossible de télécharger l'image...</h2><p>Erreur de récupération du nom.</p></body></html>");
-
- if ( !($fsock = fsockopen($url_ary[2], $port, $errno, $errstr)) )
- {
- die("<h2>Impossible de télécharger l'image...</h2><p>Pas de connexion.</p></body></html>");
- }
-
- fputs($fsock, "GET $base_get HTTP/1.1\r\n");
- fputs($fsock, "Host: " . $url_ary[2] . "\r\n");
- fputs($fsock, "Accept-Language: fr\r\n");
- fputs($fsock, "Accept-Encoding: none\r\n");
- fputs($fsock, "User-Agent: PHP\r\n");
- fputs($fsock, "Connection: close\r\n\r\n");
-
- unset($data);
- while( !feof($fsock) )
- {
- $data .= fread($fsock, $maxsize);
- }
- fclose($fsock);
-
- if (!preg_match('#Content-Length\: ([0-9]+)[^ /][\s]+#i', $data, $file_data1) || !preg_match('#Content-Type\: image/[x\-]*([a-z]+)[\s]+#i', $data, $file_data2))
- {
- die("<h2>Impossible de télécharger l'image...</h2><p>Aucune donnée.</p></body></html>");
- }
-
- $filesize = $file_data1[1];
- $filetype = $file_data2[1];
-
- if ( !$error && $filesize > 0 && $filesize < $maxsize )
- {
- $data = substr($data, strlen($data) - $filesize, $filesize);
-
- $filename = $repertoire.$base_filename;
-
- if(file_exists($filename)) echo "<p>Le fichier de destination ".$base_filename." existe déjà !</p>";
- else
- {
- $fptr = fopen($filename, 'wb');
- $bytes_written = fwrite($fptr, $data, $filesize);
- fclose($fptr);
-
- if ( $bytes_written != $filesize )
- {
- unlink($tmp_filename);
- die("<h2>Impossible de télécharger l'image...</h2><p>Echec d'écriture.</p></body></html>");
- }
- echo "<p>".$base_filename." enregistré avec succès ! <img src='".$repertoire.$base_filename."'></p>";
- }
- }
- else
- {
- die("<h2>Impossible de télécharger l'image...</h2><p>Fichier trop gros.</p></body></html>");
- }
- }
- }
-
- if($mode=="upload") // Envoyer une image
- {
-
- echo "<h2>Upload d'image</h2>\n";
-
- $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
- $taille_max = 100000;
- // vérifications
- if( !in_array( strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)), $extensions_ok) )
- {
- $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
- }
- elseif( file_exists($_FILES['file']['tmp_name'])
- and filesize($_FILES['file']['tmp_name']) > $taille_max)
- {
- $erreur = 'Votre fichier doit faire moins de 500Ko !';
- }
- // copie du fichier
- if(!isset($erreur))
- {
- $dest_fichier = basename($_FILES['file']['name']);
- // formatage nom fichier
- // enlever les accents
- $dest_fichier = strtr($dest_fichier,
- 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
- 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
- // remplacer les caracteres autres que lettres, chiffres et point par _
- $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
- //vérif
- if(file_exists($repertoire.$dest_fichier)) echo "<p>Le fichier de destination existe déjà !</p>";
- else {
- // copie du fichier
- move_uploaded_file($_FILES['file']['tmp_name'], $repertoire.$dest_fichier);
- echo "<p>".$dest_fichier." envoyé avec succès ! <img src='".$repertoire.$dest_fichier."'></p>";
- }
- }
- else{
- echo "<p>".$erreur."</p>";
- }
-
- }
-
- if($mode=="del") // Supprimer une image
- {
- if(!isset($file)) die("<h2>Aucun nom de fichier !</h2></body></html>");
-
- if(!file_exists($repertoire.$file)) die("<h2>Fichier inexistant !</h2></body></html>");
-
- if(isset($confirm))
- {
- if($confirm+10<time()) die("<h2>L'action a expirée...</h2></body></html>");
-
- unlink($repertoire.$file);
-
- echo "<h2>Entrée supprimée !</h2>";
- }
- else
- {
- echo "<h2>Supression d'une image ?</h2>\n";
- echo "<p>Vous êtes sur le point de supprimer l'image '".$file."' qui ressemble à ça: <img src='".$repertoire.$file."'><br>";
- echo "<b>Etes-vous sûr de vouloir continuer ?<br><font size=\"5\">";
- echo "<a href='".$script_name."?mode=del&file=".$file."&confirm=".time()."'><font color='red'>Oui</font></a> - ";
- echo "<a href='".$script_name."'><font color='green'>Non</font></a></font></b></p>\n";
- }
- }
- ?>
-
- <h2>Ajout d'images</h2>
- <form name="form1" method="post" action="<? echo $script_name; ?>">
- <p>Copier une image depuis une URL:
- <input name="url" type="text" id="url" value="http://www.clonk.de/news/news_???.gif" size="100">
- <input type="submit" name="Submit" value="Copier">
- <input name="mode" type="hidden" id="mode" value="copy">
- </p>
- </form>
- <form action="<? echo $script_name; ?>" method="post" enctype="multipart/form-data" name="form2">
- <p>Envoyer une image:
- <input name="file" type="file" size="100">
- <input type="submit" name="Submit" value="Envoyer">
- <input type="hidden" name="MAX_FILE_SIZE" value="500000" />
- <input name="mode" type="hidden" id="mode" value="upload">
- </p>
- </form>
- <h2>Liste des images</h2>
- <?
- $dossier=opendir($repertoire);
- while ($fichier = readdir($dossier)) {
- if(is_dir($fichier)) continue;
- $s="";
- if($fichier==$val) $s=" selected";
- echo "<p>".$fichier." = <img src='".$repertoire.$fichier."'> [ <a href='".$script_name."?mode=del&file=".$fichier."'>Supprimer</a> ]</p>";
- }
-
- ?>
- <h2>Fini ?</h2>
- <p>Alors on retourne à l'<a href="admin.php">index de l'administration</a>... </p>
- </body>
- </html>
-
- <?
- /*
- Voici le code à mettre dans une autre page pour sélectionner l'image:
-
- <?
- $repertoire="images/";
-
- function put_imgselector($name, $val)
- {
- echo "<select name='".$name."' onchange=\"preview('".$name."');\">\n";
- echo "<option value=''>---AUCUNE---</option>\n";
- $dossier=opendir($repertoire);
- while ($fichier = readdir($dossier)) {
- if(is_dir($fichier)) continue;
- $s="";
- if($fichier==$val) $s=" selected";
- echo "<option value='".$fichier."'".$s.">".$fichier."</option>\n";
- }
- echo "</select> <img id='".$name."_prv' src='".$repertoire.$val."' border='1'>\n";
- }
-
- ?>
-
- <script language="JavaScript" type="text/JavaScript">
- function preview(name)
- {
- var img;
- img = document.getElementById(name).value;
- document.getElementById(name+"_prv").src="<? echo $repertoire; ?>"+img;
- }
- </script>
-
- ---Code formulaire---
- Image : <? put_imgselector("img_g", $img_g); ?>
- ---Fin formulaire---
- */
-
- // Voila ! C'est tout...
-
- //Elektordi
- ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML LANG="fr">
<HEAD>
<TITLE>Console d'administration: Images</TITLE>
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="content-style-type" CONTENT="text/css">
<META HTTP-EQUIV="content-script-type" CONTENT="text/javascript">
<META NAME="author" CONTENT="Elektordi">
</HEAD>
<body>
<h1 align="center">Console d'administration: Images</h1>
<?
$script_name = "gestion_images.php";
$repertoire = "images/";
if($mode=="copy") // Copier une image depuis une URL
{
echo "<h2>Copie d'image</h2>\n";
$er=0;
if(!preg_match('/^(http:\/\/)?([\w\-\.]+)\:?([0-9]*)\/(.*)$/', $url, $url_ary)) $er=1;
if(empty($url_ary[4])) $er=1;
if($er==1) {
?><form name="form1" method="post" action="<? echo $script_name; ?>">
<p><b><font color="red">URL incomplète:</font></b>
<input name="url" type="text" id="url" size="100" value="<? echo $url; ?>">
<input type="submit" name="Submit" value="Copier">
<input name="mode" type="hidden" id="mode" value="copy">
<a href="<? echo $script_name; ?>">Annuler</a></p>
</form>
<?
}
else
{
$maxsize = 100000;
$base_filename = substr($url_ary[4],strrpos($url_ary[4],"/")+1);
$base_get = '/' . $url_ary[4];
$port = ( !empty($url_ary[3]) ) ? $url_ary[3] : 80;
if($base_filename=="") die("<h2>Impossible de télécharger l'image...</h2><p>Erreur de récupération du nom.</p></body></html>");
if ( !($fsock = fsockopen($url_ary[2], $port, $errno, $errstr)) )
{
die("<h2>Impossible de télécharger l'image...</h2><p>Pas de connexion.</p></body></html>");
}
fputs($fsock, "GET $base_get HTTP/1.1\r\n");
fputs($fsock, "Host: " . $url_ary[2] . "\r\n");
fputs($fsock, "Accept-Language: fr\r\n");
fputs($fsock, "Accept-Encoding: none\r\n");
fputs($fsock, "User-Agent: PHP\r\n");
fputs($fsock, "Connection: close\r\n\r\n");
unset($data);
while( !feof($fsock) )
{
$data .= fread($fsock, $maxsize);
}
fclose($fsock);
if (!preg_match('#Content-Length\: ([0-9]+)[^ /][\s]+#i', $data, $file_data1) || !preg_match('#Content-Type\: image/[x\-]*([a-z]+)[\s]+#i', $data, $file_data2))
{
die("<h2>Impossible de télécharger l'image...</h2><p>Aucune donnée.</p></body></html>");
}
$filesize = $file_data1[1];
$filetype = $file_data2[1];
if ( !$error && $filesize > 0 && $filesize < $maxsize )
{
$data = substr($data, strlen($data) - $filesize, $filesize);
$filename = $repertoire.$base_filename;
if(file_exists($filename)) echo "<p>Le fichier de destination ".$base_filename." existe déjà !</p>";
else
{
$fptr = fopen($filename, 'wb');
$bytes_written = fwrite($fptr, $data, $filesize);
fclose($fptr);
if ( $bytes_written != $filesize )
{
unlink($tmp_filename);
die("<h2>Impossible de télécharger l'image...</h2><p>Echec d'écriture.</p></body></html>");
}
echo "<p>".$base_filename." enregistré avec succès ! <img src='".$repertoire.$base_filename."'></p>";
}
}
else
{
die("<h2>Impossible de télécharger l'image...</h2><p>Fichier trop gros.</p></body></html>");
}
}
}
if($mode=="upload") // Envoyer une image
{
echo "<h2>Upload d'image</h2>\n";
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
// vérifications
if( !in_array( strtolower(substr(strrchr($_FILES['file']['name'], '.'), 1)), $extensions_ok) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['file']['tmp_name'])
and filesize($_FILES['file']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['file']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
//vérif
if(file_exists($repertoire.$dest_fichier)) echo "<p>Le fichier de destination existe déjà !</p>";
else {
// copie du fichier
move_uploaded_file($_FILES['file']['tmp_name'], $repertoire.$dest_fichier);
echo "<p>".$dest_fichier." envoyé avec succès ! <img src='".$repertoire.$dest_fichier."'></p>";
}
}
else{
echo "<p>".$erreur."</p>";
}
}
if($mode=="del") // Supprimer une image
{
if(!isset($file)) die("<h2>Aucun nom de fichier !</h2></body></html>");
if(!file_exists($repertoire.$file)) die("<h2>Fichier inexistant !</h2></body></html>");
if(isset($confirm))
{
if($confirm+10<time()) die("<h2>L'action a expirée...</h2></body></html>");
unlink($repertoire.$file);
echo "<h2>Entrée supprimée !</h2>";
}
else
{
echo "<h2>Supression d'une image ?</h2>\n";
echo "<p>Vous êtes sur le point de supprimer l'image '".$file."' qui ressemble à ça: <img src='".$repertoire.$file."'><br>";
echo "<b>Etes-vous sûr de vouloir continuer ?<br><font size=\"5\">";
echo "<a href='".$script_name."?mode=del&file=".$file."&confirm=".time()."'><font color='red'>Oui</font></a> - ";
echo "<a href='".$script_name."'><font color='green'>Non</font></a></font></b></p>\n";
}
}
?>
<h2>Ajout d'images</h2>
<form name="form1" method="post" action="<? echo $script_name; ?>">
<p>Copier une image depuis une URL:
<input name="url" type="text" id="url" value="http://www.clonk.de/news/news_???.gif" size="100">
<input type="submit" name="Submit" value="Copier">
<input name="mode" type="hidden" id="mode" value="copy">
</p>
</form>
<form action="<? echo $script_name; ?>" method="post" enctype="multipart/form-data" name="form2">
<p>Envoyer une image:
<input name="file" type="file" size="100">
<input type="submit" name="Submit" value="Envoyer">
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<input name="mode" type="hidden" id="mode" value="upload">
</p>
</form>
<h2>Liste des images</h2>
<?
$dossier=opendir($repertoire);
while ($fichier = readdir($dossier)) {
if(is_dir($fichier)) continue;
$s="";
if($fichier==$val) $s=" selected";
echo "<p>".$fichier." = <img src='".$repertoire.$fichier."'> [ <a href='".$script_name."?mode=del&file=".$fichier."'>Supprimer</a> ]</p>";
}
?>
<h2>Fini ?</h2>
<p>Alors on retourne à l'<a href="admin.php">index de l'administration</a>... </p>
</body>
</html>
<?
/*
Voici le code à mettre dans une autre page pour sélectionner l'image:
<?
$repertoire="images/";
function put_imgselector($name, $val)
{
echo "<select name='".$name."' onchange=\"preview('".$name."');\">\n";
echo "<option value=''>---AUCUNE---</option>\n";
$dossier=opendir($repertoire);
while ($fichier = readdir($dossier)) {
if(is_dir($fichier)) continue;
$s="";
if($fichier==$val) $s=" selected";
echo "<option value='".$fichier."'".$s.">".$fichier."</option>\n";
}
echo "</select> <img id='".$name."_prv' src='".$repertoire.$val."' border='1'>\n";
}
?>
<script language="JavaScript" type="text/JavaScript">
function preview(name)
{
var img;
img = document.getElementById(name).value;
document.getElementById(name+"_prv").src="<? echo $repertoire; ?>"+img;
}
</script>
---Code formulaire---
Image : <? put_imgselector("img_g", $img_g); ?>
---Fin formulaire---
*/
// Voila ! C'est tout...
//Elektordi
?>
Conclusion
Comme c'est prévu pour une interface d'admin, il n'y a pas de sécuritées ni de vérifications...
Pour ce code, je me suis inspiré de -Anciens codes à moi -http://www.phpcs.com/codes/UPLOAD-FICHIERS_31 345.aspx -sources de phpbb
Pour ce dernier, je remercie celui qui a écrit le script de gestion des avatars car un code de copie d'images/de fichiers avec une URL, c'est rare... (en tout cas y'avait rien sur PHP-CS !)
N'hésitez pas à commenter ma source.
Historique
- 17 août 2006 00:52:03 :
- Ajout du zip
- 15 novembre 2006 20:08:43 :
- Ajout de strtolower(...) pour éviter le rejet des extensions en majuscules.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
PB d'envoi d'images dynamiques !!! [ par MangaII ]
Coucou a tous !Bon, voilà mon soucis !Qd on créé un image dynamique en php, avec imagecreate ..., on fini tjs par l'envoyer au navigateur avec imagejp
Gestion des images [ par julemi ]
J'aimerais savoir si il est possible de faire une gestion des images en php et si oui comment ... ???? Merci de votre réponse ...a ++
Gestion de gallerie [ par bricethenetman ]
Slut à tous j'ai besoin d'un script de gestion de gallerie ou au moins une portion de code pour afficher toutes les images se trouvant dans
Navigation [ par FhX ]
Voila, je me suis fait un bout de script pour avoir sur chaque page une navigation du style : Acceuil > Administration > Gestion membres > e
Php : Gestion d'images [ par framic ]
Je fait un script de gestion des image Voila un peut comment est fait le script Je recupère les infos dans l'url Code: if(!isset($_GET['page'])){
téléchargement multiple simultané [ par manouille ]
Bonjour à tous, Après avoir épuré le google et différents sites (dont PHPCS) je me tourne en dernier recours su
téléchargement multiple et simultané [ par manouille ]
Bonjour a tous,Après avoir épuré le google et différents sites (dont PHPCS) je me tourne en dernier recours sur ce forum. J'explique, je dispose d'une
Gestion des images SQL PHP [ par Anus_hurlant ]
Bonjour, Je désire réaliser un site ou l'on peut visiter une galerie d'images stockées sur le serveur. Les clients pourront uploader de
Envoi d'images par un formulaire [ par Al3x_Oo ]
Salut a tous,Je voudrais tout simplement savoir si il est possible d'envoyer plusieurs image en mm temps avec un seul formulaire, mettre plusieur <
Envoi Formulaire ( PHP/Ajax) avec plusieurs champs terminés par l'envoi de 5 images.. [ par amewole ]
Bonjour à vous tous, Après plus d'une semaine de recherche sans solution définitive, je viens vous solliciter pour m'aider et trouver celui qui a dé
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|