Accueil > > > GESTIONNAIRE DE FICHIERS | MYSQL PHP 5.X {NEMENTON PHP MANAGER V0.5}
GESTIONNAIRE DE FICHIERS | MYSQL PHP 5.X {NEMENTON PHP MANAGER V0.5}
Information sur la source
Description
Voici pour ma première contribution un gestionnaire de fichiers et de base de données sous MySQL en php, il permet - De naviguer dans des dossiers - Ajouter | suprimer | Telecharger des fichiers; - Ajouter | suprimer | Telecharger des dossiers; - Rechercher des fichiers; - Naviguer| Modifier | Supprimer | Ajouter des données dans une bases de donnes MySQL; - Obtenir des infos sur la structure d'une table MySQL; - Executer du code Php; A venir : - Possibilité d'alterer | Modifier une table MySQL; - Possibilité de faire un dump d'une table | base de donnée MySQL; - Posibilité de cree des base de données - Posibilité de modifier les droit d'acces au fichiers ? Un tutoriel sur la creation du script et present ici : http://uwht.u7n.org/tutoriel-programmation-13-5.ht ml
Source
- <?php
- // Code by Nementon //
- // For uwht.u7n.org //
- // License : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ //
-
- session_start(); //A ne surtout pas supprimer nous en aurons besoin plus tard pour la gestion MySQL
-
- error_reporting(0);
-
- if (isset($_POST['action']))
- {
- $action = $_POST['action'];
- switch($action)
- {
- case 'creeFichier':
-
- if (isset($_POST['contenu']) && !empty($_POST['contenu']) && isset($_POST['nom']) && !empty($_POST['nom']))
- {
-
- $nom = $_POST['nom'];
- $contenu = $_POST['contenu'];
- $repertoire = $_POST['repertoire'];
- if (file_exists($repertoire.'/'.$nom ))
- {
- // Heheheheh pas bien vilain il existe deja o.o
- $erreur = "Le fichier " . basename($nom) ." que vous desirez créé existe déja";
-
- }
- else
- {
- if (!chdir($repertoire))
- {
- $erreur = "Le changement de répertoire a échoué.";
- }
- else
- {
- // On cree le fichier
- if(!$fichier = fopen($nom, 'w'))
- {
- $erreur = "Impossible d'ouvrire le fichier ". basename($nom). " en ecriture";
- }
- else
- {
- fwrite($fichier, stripslashes($contenu));
- fclose($fichier);
- $erreur = 'Le fichier ' . basename($nom) .' à bien été crée';
- }
- }
-
- }
- }
- else
- {
- // On affiche une erreur
- $erreur = 'Le nom ou le contenu du fichier est manquant';
- }
-
- break;
-
- case 'upload':
-
- $repertoire = $_POST['repertoire'];
- if( isset($_FILES['upload']) ) // si formulaire soumis
- {
- $tmp_file = $_FILES['upload']['tmp_name'];
-
- if( !is_uploaded_file($tmp_file) ) // Fichier present ?
- {
- exit("Le fichier est introuvable");
- }
- // Deplacons le fichier a l'endroit desiré.
- $fichier = htmlspecialchars($_FILES['upload']['name']);
- if (!move_uploaded_file($tmp_file, $repertoire.'/' .$fichier))
- {
- $erreur = "Erreur impossible de deplacer le ficher dans le repertoire $repertoire";
- }
- }
- else
- {
- $erreur = "Pas de fichier ...";
- }
-
- break;
-
- case 'creedossier':
-
- if (isset($_POST['nom']) && !empty ($_POST['nom']))
- {
-
- $nom = $_POST['nom'];
- $repertoire = $_POST['repertoire'];
- if (file_exists($repertoire.'/'.$nom ))
- {
- // Heheheheh pas bien vilain il existe deja o.o
- $erreur = "Le dossier " . basename($nom) ." que vous desirez créé existe déja";
-
- }
- else
- {
- if (!chdir($repertoire))
- {
- $erreur = "Le changement de répertoire a échoué.";
- }
- else
- {
- // On cree le dosssier
- if ( mkdir($nom))
- {
- $erreur = 'Le dossier ' . basename($nom) .' à bien été crée';
- }
- else
- {
- $erreur = 'La création du dossier ' . basename($nomr) .' à echoué';
- }
-
- }
-
- }
- }
- else
- {
- // On affiche une erreur
- $erreur = 'Le nom ou le contenu du fichier est manquant';
- }
-
- break;
-
-
- case 'modifier':
-
- if(isset($_POST["contenu"]))
- {
- $fichier = $_POST["nom"];
- $repertoire = $_POST['repertoire'];
- if (!chdir($repertoire))
- {
- $erreur = "Le changement de répertoire a échoué.";
- }
- else
- {
-
- if (!$file = fopen($fichier, "w"))
- {
- $erreur = 'Impossible d\'ouvrire le fichier '.basename($fichier).' en ecriture.';
- }
- else
- {
- fwrite($file, stripslashes($_POST["contenu"]));
- fclose($file);
- $erreur = 'Le fichier ' . basename($fichier) .' à bien été modifier';
- }
-
- }
- }
-
- break;
-
- case 'connexion_sql':
-
- if(isset($_POST['hote']) && !empty($_POST['hote']) && isset($_POST['identifiant_sql']) && !empty($_POST['identifiant_sql']) && isset($_POST['pass_sql']) && isset($_POST['bdd']))
- {
-
-
- $_SESSION['identifiant_sql'] = $_POST['identifiant_sql'];
- $_SESSION['hote'] = $_POST['hote'];
- $_SESSION['pass_sql'] = $_POST['pass_sql'];
- $_SESSION['bdd'] = $_POST['bdd'];
-
- }
- else
- {
- $erreur2 = "Un des champs n'est pas remplie";
- }
- break;
-
-
- case 'renomer':
-
- $fichier = $_POST['nom'];
- $nfichier = $_POST['new_nom'];
- $repertoire = $_POST['repertoire'];
-
- if (!chdir($repertoire))
- {
- $erreur = "Le changement de répertoire a échoué.";
- }
- else
- {
- if (!rename($fichier, $nfichier))
- {
- $erreur = "Impossible de renommer $fichier en $nfichier";
- }
- else
- {
- $erreur = "$ficher à bien été rennomé en $nfichier";
- }
-
- }
-
- break;
-
- case 'sql_mod_champ':
-
- connexion($_SESSION['hote'],$_SESSION['identifiant_sql'] , $_SESSION['pass_sql'], $_SESSION['bdd']);
-
- $table = $_POST['table'];
- $champ = $_POST['champ'];
- $valeur = $_POST['valeur'];
- $champ2 = array();
- $valeur2= array();
-
- $sql = 'SHOW FIELDS FROM '.$table;
- $req = mysql_query($sql) or die ($sql .' ' . mysql_error());
- $i = 0;
- $sql = 'UPDATE '.$table .' SET ';
-
- while ($data = mysql_fetch_array($req))
- {
- $champ2[$i] = $data[0];
- $valeur2[$i] = $_POST[$data[0]];
- $i++;
- }
-
- for ($e=0; $e<($i-2); $e++)
- {
- $sql .= $champ2[$e].'="'.$valeur2[$e].'", ';
- }
- $sql .= $champ2[$e+1].'="'.$valeur2[$e+1].'" ';
-
- $sql .= 'WHERE '.$champ.'="'.$valeur.'"';
- mysql_query($sql) or die ($sql.' '. $e.' ' . mysql_error());
-
- break;
-
- case 'sql_insert_champ':
-
- connexion($_SESSION['hote'],$_SESSION['identifiant_sql'] , $_SESSION['pass_sql'], $_SESSION['bdd']);
-
- $table = $_POST['table'];
- $champ = $_POST['champ'];
- $valeur = $_POST['valeur'];
- $champ2 = array();
- $valeur2= array();
-
- $sql = 'SHOW FIELDS FROM '.$table;
- $req = mysql_query($sql) or die ($sql .' ' . mysql_error());
- $i = 0;
- $sql = 'INSERT INTO '.$table .' VALUE (';
-
- while ($data = mysql_fetch_array($req))
- {
- $champ2[$i] = $data[0];
- $valeur2[$i] = $_POST[$data[0]];
- $i++;
- }
-
- for ($e=0; $e<($i-1); $e++)
- {
- $sql .= '"'.$valeur2[$e].'", ';
- }
- $sql .= '"'.$valeur2[$e].'") ';
-
- echo $sql;
-
- mysql_query($sql) or die ($sql.' '. $e.' ' . mysql_error());
-
- break;
-
- }
- }
- ?>
-
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- <style type="text/css">
- a {
- text-decoration: none;
- color: #e3e3e3;
- }
-
- body {
- background-color: black;
- color:#e3e3e3;
- font-family: Chaparral Pro, Verdana, Tahoma, Arial, Helvetica, sans-serif;
- font-size:14px;
- width: 1025px;
- margin:auto;
- margin-bottom:30px;
- margin-top:10px;
- }
-
- #header {
- background-image: url('http://www.noelshack.com/voir/130309/PHP6MANAGER036476.png');
- width:1022px;
- height: 150px;
- margin:auto;
- border: 1px solid white;
- }
-
- #menu_haut{
- width: 1026px;
- height: 50px;
-
- }
-
- ul {
- list-style: none;
- margin: 0;
- padding: 0;
- }
-
- li{
- display: block;
- text-align: center;
- width: 254px;
- float: left;
- border: 1px solid white;
- }
-
- li a:hover{stristr($dir/$fichier, $pattern)
- color: #445567;
- }
-
- a:hover{
- color: #445567;
- }
-
- #info_fichier{
- /*text-align: center;*/
- font-weight: bold;
- font-size: 0.9em;
- }
-
- #big_corps form{
- width: 290px;
- }
-
- #big_corps label{
- display: block;
- width: 150px;
- height: 22px;
- float: left;
- }
-
- input[type="submit"]
- {
- background-color : #0A0A0A;
- font-weight : bold;
- color: white;
- }
-
-
- #info_sql{
- padding-top: 5px;
- width: 100%;
- height: 100%;
- border: 1px solid white;
- text-align: center;
- }
-
- #big_corps{
- width: 100%;
- height: 100%;
- min-height: 350px;
- }
-
- #menu_sql{
- padding-top: 5px;
- padding-bottom: 5px;
- float: left;
- border: 1px solid white;
- border-top: none;
- width: 250px;
- height: 100%;
- min-height: 350px;
- }
-
- #menu_sql ul {
- list-style: none;
- margin: 0;
- padding: 0;
- }
-
- #menu_sql li{
- display: block;
- text-align: center;
- width: 248px;<fieldset><legend>Créé dossier</legend>
- border: none;
- }
-
- #corps_sql{
- padding-top: 5px;
- padding-bottom: 5px;
- border: 1px solid white;
- border-top: none;
- width: 100%;
- height: 100%;
- min-height: 350px;
- }
-
-
- .majuscule{
- text-transform: uppercase;
- }
-
- .center{
- text-align: center;
- }
-
- .d3dce3{
- background:#ffffff;
- color: black;
- }
-
-
- #tr_struc_bdd{
- font-size:0.9em;
-
- }
- #struc_bdd{
- text-align: center;
- }
-
- .droite{
- float:left;
-
- }
-
- table .center{
- text-align:center;
- }
- </style>
- <script>
- function mail() {
-
- var codePhp = document.getElementById('codephp').innerHTML;
- var mail = "//Envoie d'email(s) \n\n";
- mail += "function email($destinataire, $from, $contenu, $header) {";
- mail += "\n\tforeach ($destinataire as $d) { \n";
- mail += "\t\t if(mail($d, $header, $contenu, 'From:'.$from)) { \n";
- mail += "\t\t\t$retour .= 'Email bien envoyé a '.$d.' \n';";
- mail += "\t\t} \n\t\t else { \n";
- mail += " \t\t\t$retour .= 'Impossible d_envoyer le mail a '.$d.' \n';";
- mail += "\t\t} \t } \n\nreturn $retour; \n } \n";
- mail += "\n $destinataire = array('Destinataire@yopmail.com'); \n $header = 'Sujet a envoyer'; \n $from = 'Expediteur@yopmail.com'; \n $contenu = 'Mon mail !'; \n";
- mail += "\n echo email($destinataire, $from, $contenu, $header); ";
- document.getElementById('codephp').innerHTML=mail+' \n\n'+codePhp;
-
- }
- function cmd_unix() {
-
- var codePhp = document.getElementById('codephp').innerHTML;
- var cmd = "function cmd($data){ \n";
- cmd += "echo `$data`; \n";
- cmd += "} \n\n";
- cmd += "cmd(' ls -lh '); \n";
- document.getElementById('codephp').innerHTML=cmd+' \n\n'+codePhp;
-
- }
-
- function cmd_dos() {
-
- var codePhp = document.getElementById('codephp').innerHTML;
- var cmd = "function cmd($data){ \n";
- cmd += "echo `$data`; \n";
- cmd += "} \n\n";
- cmd += "cmd('dir'); \n";
- document.getElementById('codephp').innerHTML=cmd+' \n\n'+codePhp;
-
- }
- </script>
- </head>
- <body>
- <div id="header">
-
- </div>
-
- <div id="menu_haut">
- <ul>
- <li><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>"/>Gesttionnaire de fichiers</a></li>
- <li><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>?action=sql"/>Gestionnaire MySQL</a></li>
- <li><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>?action=code"/>Php-Code</a></li>
- <li><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; if (isset($_SESSION['bdd'])) {
- echo '?action=deconnexion"/>Deconnexion';
- }
- else {
- echo '?action=sql"/>Connexion [MySQL]';
- } ?></a></li>
- </ul>
- <?php
- //print_r(explorer('/var/www/cake/cake/tests/lib/./..', true, 'Test'));
- // On verifie si le parametre du serveur "safe_mode" est activé/desactive
- if( ini_get('safe_mode') ){
- // activé
- echo "<center style='color:green;'>---[Safe_mode : Secure]---</center>";
- }
- else{
- // Désactivé
- echo "<center style='color:red;'>---[Safe_mode : Unsecure]---</center>";
- }
- ?>
- </div>
-
- <div id="corps">
- <?php
- //echo `ls -l /etc/`; echo `more /etc/passwd`;
- $action2 = $_GET['action'];
- switch($action2)
- {
- case "modifier":
-
- $fichier = $_GET['f'];
- $repertoire = $_GET['repertoire'];
- chdir($repertoire);
- if (is_file($fichier))
- {
- if (!$contenu = file_get_contents($fichier))
- {
- $erreur = "Impossible d'ouvrire le fichier";
- }
- else
- {
- $contenu = file_get_contents($fichier);
-
- }
- ?> <hr />
- <div id="info_fichier">
- <p>Fichier : <?php echo basename($fichier).'  ('.tailleFichier($fichier).')  '.afficherPerm($fichier); ?><br />
- Repertoire : <?php echo $repertoire.'  '. afficherPerm($repertoire); ?>
- <br /><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?repertoire='.$repertoire; ?>">[Retour]</a><br />
-
- <fieldset id="rennomer"><legend><b>Renommer le fichier</b></legend>
- <form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
- <input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
- <input type="hidden" value="renomer" name="action" />
- <input type="hidden" value="<?php echo $fichier; ?>" name="nom" />
- <input type="text" name="new_nom">
-     <input type="submit" value="Modifier" />
- </form>
- </fieldset>
- <fieldset id="modif"><legend><b>Modification d'un fichier</b></legend>
- <form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
- <input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
- <input type="hidden" value="modifier" name="action" />
- <input type="hidden" value="<?php echo $fichier; ?>" name="nom" />
- <textarea name="contenu" style="width:100%; height:250px;"><?php if (isset($erreur)) { echo $erreur; } else { echo htmlentities($contenu); } ?> </textarea><br /><br />
- <input type="submit" value="Modifier" />
- </form>
- </fieldset>
- </p>
- </div>
- <?php
- }
- else
- {
- ?>
- <hr />
- <div id="info_fichier">
- <p>Repertoire : <?php echo ' <span style="color:red;">['.basename($fichier).']</span>  '.afficherPerm($fichier); ?><br />
- Chemin : <?php echo $repertoire.'  '. afficherPerm($repertoire); ?>
- <br /><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?repertoire='.$repertoire; ?>">[Retour]</a><br />
-
- <fieldset id="rennomer"><legend><b>Renommer le repertoire</b></legend>
- <form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
- <input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
- <input type="hidden" value="renomer" name="action" />
- <input type="hidden" value="<?php echo $fichier; ?>" name="nom" />
- <input type="text" name="new_nom">
-     <input type="submit" value="Modifier" />
- </form>
- </fieldset>
- </p>
- </div>
- <?php
- }
-
- break;
-
- case 'nouveauFichier' :
-
- $repertoire = $_GET['repertoire'];
- chdir($repertoire);
-
- ?><hr />
- <div id="info_fichier">
- <p>Repertoire : <?php echo $repertoire.'  '. afficherPerm($repertoire); ?>
-
- <fieldset id="nouveauFichier"><legend><b>Nouveau fichier</b></legend>
- <form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
- <label>Nom du fichier</label><br />
- <input type="text" name="nom" /><br /><br />
- <input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
- <input type="hidden" value="creeFichier" name="action" />
- <label>Contenu du fichier</label>
- <textarea name="contenu" style="width:100%; height:250px;"></textarea><br /><br />
-     <input type="submit" value="Creer" />
- </form>
- </fieldset>
- </p>
- </div>
- <?php
-
- break;
-
- case 'code':
-
- ?>
- <hr />
- <div id="info_fichier">
- <p>Execution php : Pour lancer un shell, utiliser la commande <span style="color:green;">exec(); || sytem();</span>
- <br /><a href="javascript:void(0)" onclick="mail();">[Mail]</a> - <a href='javascript:void(0)' onclick='cmd_unix()'>[Cmd-Unix]</a> - <a href='javascript:void(0)' onclick='cmd_dos()'>[Cmd-Dos]</a></p>
- <?php
- if (isset($_POST['code']))
- {
- error_reporting(5);
- ?>
- <fieldset id="rennomer"><legend><b>Resultat php</b></legend>
- <input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
- <textarea name="code" style="width:100%; height:250px;"><?php echo eval(stripslashes($_POST['code']));?></textarea>
-
- </fieldset>
- <?php
- error_reporting(0);
- }
- ?>
- <fieldset id="rennomer"><legend><b>Code php</b></legend>
- <form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>?action=code">
- <input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
- <textarea name="code" style="width:100%; height:250px;" id="codephp"><?php if(isset($_POST['code'])) { echo stripslashes($_POST['code']); } else { echo ""; } ?></textarea><br /><br />
-     <input type="submit" value="Executer" />
- </form>
- </fieldset>
-
- <?php
- break;
-
- case 'telecharger':
-
- $fichier = $_GET['f'];
- $repertoire = $_GET['repertoire'];
-
- if (is_file($repertoire.'/'.$fichier))
- {
- telecharger( basename($fichier), $repertoire.'/'.$fichier, fileSize($fichier));
-
- }
- else
- {
- $fichiers = explorer($repertoire.'/'.$fichier, true);
- zop($fichiers, $fichier);
- }
-
- break;
-
- case 'supprimer':
-
- $repertoire = $_GET['repertoire'];
- $fichier = $_GET['f'];
- // Le changement de repertoire c'est il bien effectue ? Non, erreur ... ='(
- if (!chdir($repertoire))
- {
- $erreur = "Le changement de répertoire a échoué.";
- }
- // Sinon tentons d effacer le fichier ou le repertoire : )
- else
- {
- $erreur = Supression($fichier);
- }
- echo $erreur;
- break;
-
- case 'recherche':
- $repertoire = $_GET['repertoire'];
- $pattern = $_GET['search'];
- $recursif = $_GET['recursif'];
-
- if($recursif == true )
- {
- listRepertoire($repertoire, true, $pattern);
- }
- else
- {
- listRepertoire($repertoire, false, $pattern);
- }
-
- break;
- case 'deconnexion':
-
- session_destroy();
- echo 'Deconnexion de la base de donnee '.$_SESSION['bdd'].' bien efféctué !';
-
- break;
-
- case 'sql':
-
- ?>
- <div id="info_sql">
- MySQL manager,<br /> <?php
-
- if (!isset($_SESSION['identifiant_sql']) && !isset($_SESSION['pass_sql']) && !isset($_SESSION['hote']))
- {
- echo "<span style='color:red;'> No connection </span>";
- }
- elseif (empty($_SESSION['bdd']))
- {
- echo "<span style='color:red;'> [".$_SESSION['hote']."] [No Bdd] [".$_SESSION['identifiant_sql']."] </span>";
- }
- else
- {
- echo "<span style='color:red;'> [".$_SESSION['hote']."] <a href='http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?action=sql' style='color:red;'> [".$_SESSION['bdd']."]</a> [".$_SESSION['identifiant_sql']."] </span>";
- }
-
-
- ?>
- </div>
- <div id="big_corps">
- <div id="menu_sql">
- <h3 class="center">Bases de données</h3>
-
- <hr />
- <?php
- if (!isset($_SESSION['identifiant_sql']) && !isset($_SESSION['pass_sql']) && !isset($_SESSION['hote']))
- {
- echo "<center>[ No connection]</center>";
- }
- else
- {
- connexion($_SESSION['hote'],$_SESSION['identifiant_sql'] , $_SESSION['pass_sql'], $_SESSION['bdd']);
-
- $data = mysql_list_dbs();
-
- echo '<ul>';
- while ($row = mysql_fetch_object($data)) {
- echo '<li> <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&bdd='. $row->Database.'"/>'. $row->Database . '</a></li>';
- }
- echo '</ul>';
-
- }
-
- ?>
-
- </div>
-
- <div id="corps_sql">
-
- <?php
-
- if (!isset($_SESSION['pass_sql']) && !isset($_SESSION['hote']))
- {
- echo '<fieldset><legend>Identifiant MySQL</legend>
- <form action="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql" method="post">
- <label>Hote sql : </label><input type="text" name="hote" value="localhost" /><br />
- <label>Identifiant sql : </label><input type="text" name="identifiant_sql" value="root" /><br />
- <label>Passeword sql : </label><input type="text" name="pass_sql" /><br />
- <label> Base de donnée : </label><input type="text" name="bdd" /><br />
- <input type="hidden" value="connexion_sql" name="action" /><br />
- <input type="submit" value="Connexion" />
- </form>
- </fieldset>';
- }
- elseif (isset($_GET['table']) && !empty($_GET['table']))
- {
- $option = $_GET['option'];
-
- switch($option)
- {
- case 'drop':
-
- $table = $_GET['table'];
- drop($table);
-
- break;
-
- case 'vider':
-
- $table = $_GET['table'];
- vider($table);
-
- break;
-
- case 'insert':
-
- $table = $_GET['table'];
- insert($table);
- break;
-
- case 'aff':
-
- $table = $_GET['table'];
- table_afficher($table);
-
- break;
-
- case 'modifier':
-
- $table = $_GET['table'];
- $champ = $_GET['champ'];
- $valeur = $_GET['valeur'];
-
- modifier_champs($table, $champ, $valeur);
-
- break;
-
- case 'supprimer':
-
- $table = $_GET['table'];
- $champ = $_GET['champ'];
- $valeur = $_GET['valeur'];
-
- supprimer_champs($table, $champ, $valeur);
-
- break;
-
- default;
-
- $table = $_GET['table'];
- table_struct($table); // Affiche la struture de la table passe en parametre
-
- }
- }
- elseif (isset($_GET['bdd']) && !empty($_GET['bdd']))
- {
- $_SESSION['bdd'] = $_GET['bdd'];
- echo '<center>Changement de base de donnée éffétué, <br />Cliquer <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql"><span style="color:red;">ici</span></a> pour retourner au gestionnaire MySQL.</center>';
- }
- else
- {
- bdd_struct($_SESSION['bdd']); // Affiche la structure de la base de donné passe en parametre
- }
-
-
- ?>
-
- </div>
- </div>
-
-
- <?php
-
- break;
-
- default;
-
- if ($_GET["repertoire"])
- {
- if (!@chdir($_GET["repertoire"]))
- {
- $erreur = "Le changement de répertoire a échoué.";
- }
- }
-
- listRepertoire();
- }
- ?>
- </div>
-
- <hr />
- <div id="pres_footer">
- <fieldset><legend>Créé Fichier</legend>
- <a href='<?php echo "?repertoire=".getcwd()."&action=nouveauFichier"; ?>'> [Créé un fichier] </a>
- </fieldset>
- <fieldset><legend>Créé dossier</legend>
- <form action="#" method="post">
- <input type="hidden" name="action" value="creedossier" />
- <input type="text" name="nom" value="Votre nom de dossier ..." />
- <input type="hidden" name="repertoire" value="<?php echo getcwd(); ?>" />
- <input type="submit" value="Envoyer" />
- </form>
- </fieldset>
-
- <fieldset><legend>Upload d'un fichier</legend>
- <form action="#" method="post" enctype="multipart/form-data">
- <input type="file" name="upload" id="upload" />
- <input type="hidden" name="repertoire" value="<?php echo getcwd(); ?>" />
- <input type="hidden" name="action" value="upload"/>
- <input type="submit" value="Envoyer" />
- </form>
- </fieldset>
-
- <fieldset><legend>Recherche</legend>
- <form action="#" method="get">
- <input type="hidden" name="repertoire" value="<?php echo getcwd(); ?>" />
- <label>Recursif</label><input type="checkbox" name="recursif" value="true"><br />
- <input type="text" name="search" value="" />
- <input type="hidden" name="action" value="recherche"/>
- <input type="submit" value="Envoyer" />
- </form>
- </fieldset>
- </div>
- <div id="footer">
-
-
- </div>
- <?php if (isset($erreur)) { echo '<script>alert("'.$erreur.'");</script>'; } ?>
- <br /><em style="font-size:0.8em; float:right;">Powered by <a href="http://www.siteduzero.com/membres-294-115221.html" style="color:red;">Nementon</a> pour <a href="http://uwht.u7n.org" style="color:red;">Uwht</a></em>
-
- </body>
- </html>
-
- <?php
- /************************************************************************************************************
- Fucntion listRepertoire, permet l'affichage des données recuperer par la function explorer() dans un tableau
-
- Par default la fonction utile la fonction explorer en prenant en parametre le repertoire courant et la
- sivite a false
-
- $dir => repertoire a passe en parametre a explorer();
- $recurif => recursivite passe en paramtre a explorer();
- $pattern => Sous chaine de carataire a passer en parametre a explorer();
- ************************************************************************************************************/
- function listRepertoire($dir=false, $recursif=false, $pattern=false)
- {
- // Récupération du chemin courant
- $repCourant = getcwd();
- if ($pattern == false)
- {
- if($dir !=false) {
- $fichiers = explorer($dir, $recursif);
- }
- else {
- $fichiers = explorer('.', $recursif);
- }
-
- }
- else
- {
- $fichiers = explorer($dir, $recursif, $pattern);
- if (empty($fichiers)) {
- echo '<center> Aucun résultat pour la recherche de '.$pattern.' dans le dossier '.$dir;
- }
- else {
- $nbr_resultat = count($fichiers);
- echo "<center>$nbr_resultat fichiers trouvé pour l'occurance $pattern dans le dossier $dir";
- }
- }
-
- // ajout ".." (qui a été filtré par la fonction)
- if ($repCourant != "/") $fichiers = array_merge(array("./.."), $fichiers);
- ?>
- <form action="<?php echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>" method="post">
- <table border="1" width="100%">
- <tr>
- <td width="50%"><font color="#cc0000">
- <?php echo $repCourant; ?>
- </td></font>
- <td><font color="#cc0000"><?php echo round(disk_total_space("./")/pow(2,20), 1) . " / ". round(disk_free_space("./")/pow(2,20), 1). " Mo"; ?>
- </td></font>
- </tr>
- </table>
- <table border="0" width="100%">
- <tr>
- <th>Action</th>
- <th>Nom du fichier</th>
- <th>Taille</th>
- <th>Permissions</th>
- </tr>
- <?php
- for ($i=0; $i<count($fichiers); $i++)
- {
- ?>
- <tr>
- <td>
- <?php
- /* Le fichier est-il un répertoire ? */
- if (is_dir($fichiers[$i]))
- {
-
- ?> <a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=supprimer';?>" /> [x] </a>
- <a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=modifier#modif'; ?>" />[ Modifier ] </a>
- <a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=telecharger'; ?>" />[ Télécharger ] </a>
- </td>
- <td class="center">
- <a href="?repertoire=<?php echo $repCourant."/".$fichiers[$i];?>">
- <?php echo "<span style='color:red;'>[ " .basename($fichiers[$i])." ]";?>
- </a>
- </td>
- <td class="center">
- [Dossier]
-
- </td>
-
- <?php
- }else{
-
- ?>
- <a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=supprimer';?>" /> [x] </a>
- <a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=modifier#modif'; ?>" />[ Modifier ] </a>
- <a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=telecharger'; ?>" />[ Télécharger ] </a>
- </td>
- <td class="center">
- <?php
-
- echo '<a href="?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=modifier#modif">'.basename($fichiers[$i]).'</a>';
-
- ?>
- </td>
- <td class="center">
- <?php echo tailleFichier($fichiers[$i]); ?>
- </td>
- <?php
- }
- ?>
- <td class="center">
- <?php echo afficherPerm($fichiers[$i]); /*pour plus tard */?>
- </td>
- </tr>
- <?php
- }
- ?>
- </table>
- <?php
- }
-
-
-
-
-
- /*****************************************************************************************************
- @Fonction Supression($fichier), lier a la fonction explorer(), tente de suprimmer un fichier || Dossier
-
- @$fichier => fichier ou dossier que l'on desire supprimer;
- @ By Nementon ---[http://uwht.u7n.org/]---
- ******************************************************************************************************/
- function Supression($fichier)
- {
- if (is_dir($fichier)) // Blablablablablablablaaz
- {
- $contenu_rep = explorer($fichier, true); // On active la recursivite histoire de supprimer le contunue de tous les sous repertoire possible du dossier visé.
- for ($i=0; $i<count($contenu_rep); $i++)
- {
- if (is_file($contenu_rep[$i]))
- {
- if (!unlink($contenu_rep[$i]))
- {
- $erreur = 'La suppression du répertoire à planter au fichier '. $contenu_rep[$i];
- }
- }
- }
- // Maintenant que les fichier du dossier et des sous dossiers ont ete del, on liste dans un tableau l'arboresance de tous les sous dossier.
- if (!rmdir($fichier))
- {
- $erreur = 'La suppression du répertoire à planter au repertoire '. basename($fichier).', essayer de suprimmer ces sous dossiers manuellement';
- }
- else
- {
- $erreur = 'La suppression de '. basename($fichier) .' à bien été effectué';
- }
- }
- else
- // C'est un fichier, essayons de le del :bavup: !
- {
- if (!unlink($fichier))
- {
- $erreur = 'La suppression de '. basename($fichier) . ' à echoué';
- }
- else
- {
- $erreur = 'La suppression de '. basename($fichier) .' à bien été effectué';
- }
- }
- return $erreur;
- }
-
- /*************************************************************************************************
- @Fonction permission($perm), convertie l'affichage des permission passer en octets en
- l'affichage de permission comprehensible par les "humains" sous unix
-
- @$perm => permission d'un ficher en octect;
- @return => L'affichage des permission passer en parametre comprehensible par un humain sou unix
-
- @ By Nementon ---[http://uwht.u7n.org/]---
- *************************************************************************************************/
- function permissions($perm){
-
- switch($perm)
- {
- case 0:
- $perm = '---';
- break;
- case 1:
- $perm = '--x';
- break;
- case 2:
- $perm = '-w-';
- break;
- case 3:
- $perm = '-wx';
- break;
- case 4:
- $perm ='r--';
- break;
- case 5:
- $perm = 'r-x';
- break;
- case 6:
- $perm = 'rw-';
- break;
- case 7:
- $perm = 'rwx';
- break;
-
- }
- return $perm;
- }
-
- /************************************************************************************************
- @Fonction afficher perm($fichier)
- Recupere les permission du fichier passe en paramtre, avant d'en convertire l'affichage
- grace a permission($perm) (cf dessus)
-
- @$fichier => fichier dont l'on desire les afficher les permission;
- @return => Les permission du fichier pour : utilisateur | groupes | tous, sous l'afichage unix
- @ By Nementon ---[http://uwht.u7n.org/]---
- *************************************************************************************************/
- function afficherPerm($fichier)
- {
- $mode = fileperms($fichier);
-
- // Détermine le type du fichier
- if(($mode & 0x1000) === 0x1000)
- $type = "p"; // Port
- elseif(($mode & 0x2000) === 0x2000)
- $type = "c"; // Matériel
- elseif(($mode & 0x4000) === 0x4000)
- $type = "d"; // Répertoire
- elseif(($mode & 0x6000) === 0x6000)
- $type = "b"; // Matériel FIFO
- elseif(($mode & 0x8000) === 0x8000)
- $type = "-"; // Fichier normal
- elseif(($mode & 0xa000) === 0xA000)
- $type = "l"; // Lien symbolique
- elseif(($mode & 0xc000) === 0xC000)
- $type = "s"; // socket
- else
- $type = "u"; // Unknown
-
- $mode = decoct($mode);
- $perTemp = substr($mode,-3);
-
- $permission["utilisateur"] = permissions(substr($perTemp,0,1));
- $permission["groupe"] = permissions(substr($perTemp,1,1));
- $permission["tous"] = permissions(substr($perTemp,2,1));
-
- return "<span style='color:green'>".$type.$permission["utilisateur"].
- $permission["groupe"].$permission["tous"]."</span>";
-
-
- }
-
-
- /*************************************************************************************************
- @Fonction taillefichier($fichier), permettant la convertion de la taille d'un fichier renvoye par filesize()
- comprensible par un humail (oct/ko/mo)
-
- @$fichier => fichier dont l'ont desire obtenir la taille
- @return => la taille du fichier passe en parametre dans un langage "humain"
- @ By Nementon ---[http://uwht.u7n.org/]---
- ************************************************************************************************/
- // Calcule la taille du fichier
- function tailleFichier($fichier)
- {
- // Covertion octet / ko / mo
- $ko = pow(2,10);
- $mo = pow(2,20);
-
- // On recupere la taille en octet
- $taille = fileSize($fichier);
-
- if ($taille < $ko){
- // On laisse en octet
- $taille = $taille . " octets";
- }
- elseif ($taille >= $ko AND $taille < $mo)
- // Sinon ko, puis mo
- {
- $taille = round($taille/$ko, 1) . " ko";
- }
- else
- {
- $taille = round($taille/$mo, 1) . " Mo";
- }
- return $taille;
-
- }
-
- /******************************************************************************************
- @Fonction explorer, explorateur de dossiers, transformble en recharche a l'aide de $pattern
- @$dir => Chemin a explorer;
- @$recursif => Active la récursivité;
- @$pattern => Active la recherche d'un sous chaine de caractere;
- @return => Un array contenant la liste de fichier/dossier parcouru
- @ By Nementon ---[http://uwht.u7n.org/]---
- ******************************************************************************************/
- function explorer($dir, $recursif=false, $pattern=false)
- {
- $listeDossier = array();
- $listeFichier = array();
- $pointeur = opendir($dir);
- while (false !== ($fichier = readdir($pointeur))){
- // On ne tiens pas conte du dossier courant
- if(!in_array($fichier, array('.','..'))){
- // Est ce que le fichier est un repertoire ?
- // On n'oublie pas rajouter le chemin du fichier
- if (is_dir($dir."/".$fichier)){
- if($pattern) {
- if ($recursif){
- $listeFichier = array_merge($listeFichier, explorer($dir.'/'.$fichier, $recursif, $pattern));
- }
- }
- else if($recursif){
- // Recursif = oui ? alors explorons le !
- $listeDossier = array_merge($listeDossier, explorer($dir.'/'.$fichier, $recursif));
- }
- else {
- // C'est un dossier, on l'ajoute
- $listeDossier[] = "$dir/$fichier";
- }
- }
- else if ($pattern) {
- // Mode recherche ? On l'ajoute seulement si la sous chaine recherché est presente
- if (stristr($fichier, $pattern)){
- $listeFichier[] = "$dir/$fichier";
- }
- }
- else {
- // C'est un fichier, on l ajoute
- $listeFichier[] = "$dir/$fichier";
- }
-
-
- }
- }
- // L'exploration est termnier, on ferme =p
- closedir($pointeur);
- // Trie par ordre alphabhetique
- usort($listeDossier, "strcasecmp");
- usort($listeFichier, "strcasecmp");
- // On retourne la liste des dossiers suivies des fichiers, fusion des tableaux $listeDossier && $listeFichier
- return $listeDossier = array_merge($listeDossier, $listeFichier);
- }
-
- /**********************************************************
- function permetant le telechargement d'un fichier
-
- @$nom => Nom du fichier;
- @$chemin => Chemin (relatif) du fichier a telecharger;
- @taille => Taille du ficher a telecharger
- @ By Nementon ---[http://uwht.u7n.org/]---
- ***********************************************************/
- function telecharger($nom, $chemin, $taille)
- {
- header('Content-Type: application/octet-stream');
- header('Content-Length: '. $taille);
- header('Content-disposition: attachment; filename='. $nom);
- header('Pragma: no-cache');
- header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
- header('Expires: 0');
- readfile($chemin);
- }
- /******************************************************************************************************
- function permetant le telechargement d'un repertoire, apres compression de la
- totalite de son contenu dans un fichier zip (Nessecite la classe "zipfile"
-
- @$array => Liste des fichier a compresser (chemin_fichier/ficher par rapport au repertoire courant)
- $repertoire => Nom du repertoire visé, nom de l'archvie
- @ By Nementon ---[http://uwht.u7n.org/]---
- ******************************************************************************************************/
- function zop($array, $repertoire)
- {
- $zip = new zipfile();
-
- $taille_array = count($array);
- for ($i=0; $i<$taille_array; $i++)
- {
- $nom = basename($array[$i]); // Troncature pour ne recuperer que le nom
- $fp = fopen($array[$i], "r");
- $data[$i] = fread($fp, filesize($array[$i]));
- fclose($fp);
-
- $zip->addfile($data[$i], $nom);
- }
-
- $archive = $zip->file() ; //on associe l'archive
-
- header('Content-Type: application/x-zip') ; //on détermine les en-tête
- header('Content-Disposition: inline; filename='.$repertoire.'.zip') ;
-
- echo $archive ;
-
- }
-
- /******************************************
- Function permettant la connexion a une bdd
-
- @$hote => Hote mysql;
- @$identifiant => identifiant mysql;
- @$password => password mysql;
- @db_name => Bdd visé;
-
- @ By Nementon ---[http://uwht.u7n.org/]---
- *****************************************/
- function connexion($hote, $identifiant, $password, $db_name)
- {
- mysql_connect($hote, $identifiant , $password)or die ("<em class='petit'> Il semblerai qu'aucune bases de données ne soit fonctionnel sur votre serveur MySQL, veuillez verifiez vos informations de connexion.</em>");
- mysql_select_db($db_name);
- }
-
- /*******************************************************************
- Function affichant la structure du base de donne passé en parametre;
- Soit :
- - Le nom des tables,
- - Le nombre de fichiers present dans chaque tables,
- - Le type de chaqu'une des tables presentes,
- - L'interclassement de chaqu'une des tables,
- - La tailles de chaqu'une des tables,
- - La date de création de chaqu'une des tables,
-
- @$db_name => Base de donnée dont l'on desire recuperer sa structure
- @ <th>Action</th> Option suplementaire utilisable avec ce script
- @ By Nementon ---[http://uwht.u7n.org/]---
- *******************************************************************/
- function bdd_struct($db_name)
- {
- $sql = "SHOW TABLES FROM $db_name"; // Liste les table NON TEMPORAIRES de la bdd visé
- $req = mysql_query($sql) or die ($sql . ' '. $mysql_error());
-
-
- echo'<table id="struc_bdd">
- <tr class="d3dce3">
- <th id="struc_bdd_table">Table</th>
- <th id="struc_bdd_action" width="320px">Action</th>
- <th id="struc_bdd_fichiers">Fichiers</th>
- <th id="struc_bdd_type">Type</th>
- <th id="struc_bdd_interclassement">Interclassement</th>
- <th id="struc_bdd_taille">Taille</th>
- <th id="struc_bdd_dateCreation">Crée le</th>
- </tr>';
-
-
- while ($table = mysql_fetch_array($req))
- {
-
- $sql2 = 'SHOW TABLE STATUS WHERE name="'.$table[0].'"'; // Fournit des informations sur les tables http://www.mysql.be/doc/refman/5.0/fr/show-table-status.html
- $req2 = mysql_query($sql2) or die ($sql2 .' ' . mysql_error());
- $resultat = mysql_fetch_assoc($req2);
-
-
- echo '<tr id="tr_struc_bdd">
- <td class="b3b3b3">'.$resultat['Name'].'</td>
- <td width="320px">
- <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'&option=aff">[Afficher]</a>
- <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'">[Structure]</a>
- <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'&option=insert">[Inserer]</a>
- <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'&option=vider">[Vider]</a>
- <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'&option=drop">[Suprimmer]</a>
- </td>
- <td class="b3b3b3"> ~'.$resultat['Rows'].'</td>
- <td>'.$resultat['Engine'].'</td>
- <td class="b3b3b3">'.$resultat['Collation'].'</td>
- <td>'.$resultat['Data_length'].'</td>
- <td class="b3b3b3">'.$resultat['Create_time'].'</td>
- </tr>';
- }
- echo '</table>';
-
- }
-
-
- /*********************************************************************
- Function affichant la structure d'un table de donne passé en parametre;
- Soit :
- - Le nom des champs,
- - Le types des champs
- - Null, oui | non,
- - Type de key,
- - Valeur par default,
- - Extra, infos suplementaire (auto_incremente),
-
- @$table => tables dont l'on desire recuperer sa structure
- @ <th>Action</th> Option suplementaire utilisable avec ce script (En constrution)
- @ By Nementon ---[http://uwht.u7n.org/]---
- ********************************************************************/
- function table_struct($table)
- {
- $sql = 'SHOW FIELDS FROM '.$table;
- $req = mysql_query($sql) or die ($sql .' ' . mysql_error());
- $nbr_col = mysql_num_fields($req); // Retourne le nombre de colone de la tables $table http://dev.mysql.com/doc/refman/5.0/fr/mysql-num-fields.html
-
- echo '<table id="struc_bdd" width="770px">
- <tr class="d3dce3">
- <th id="struc_bdd_champ">Champ</th>
- <th id="struc_type">Type</th>
- <th id="struc_null">Null</th>
- <th id="struc_key">Key</th>
- <th id="struc_default">Default</th>
- <th id="struc_extra">Extra</th>
- <th id="struc_action">Action</th>
- </tr>';
-
-
- for ($i=0; $i<$nbr_col; $i++)
- {
- $resultat = mysql_fetch_assoc($req);
- echo '<tr>
- <td>'.$resultat['Field'].'</td>
- <td>'.$resultat['Type'].'</td>
- <td>'.$resultat['Null'].'</td>
- <td>'.$resultat['Key'].'</td>
- <td>'.$resultat['Default'].'</td>
- <td>'.$resultat['Extra'].'</td>
- <td>[Modifier] [Suprimmer]</td>
- </tr>';
- }
- echo '</table>';
-
- }
-
- /*********************************************************************
- Function affichant les données d'un table de donne passé en parametre;
- Soit :
- - All
-
- @$table => tables dont l'on desire recuperer sa structure
- @ <th>Action</th> Option suplementaire utilisable avec ce script
- @ By Nementon ---[http://uwht.u7n.org/]---
- ********************************************************************/
- function table_afficher($table)
- {
- $sql = 'SHOW FIELDS FROM '.$table; // Recuperation des champs de la table
- $req = mysql_query($sql) or die ($sql .' ' . mysql_error());
-
-
-
- while ($data = mysql_fetch_array($req))
- {
- $nomchamps[] = $data[0]; // Enregistremnt des noms de champs dans un array
-
- }
-
- $retour = '<table id="struc_bdd" width="770px">
- <tr class="d3dce3">';
- foreach($nomchamps as $champs) // Creation du tableau contenant les noms de champs
- {
- $retour .= '<th>'.$champs.'</th>';
-
- }
- $retour .='<th>Action</th>';
- $retour .='</tr>';
-
- $sql2 = 'SELECT * FROM '.$table; // Recuperation de la totaliter des données de la table
- $req2 = mysql_query($sql2);
-
- while ($data2 = mysql_fetch_array($req2)) // Cration du tableau de donnés
- {
- $retour .= '<tr>';
- $nbr_champs = count($nomchamps);
- for($i=0; $i<$nbr_champs; $i++) // Affichache de chaque donnés lié à son champ
- {
- $retour .= '<td>'.$data2[$i].'</td>';
- }
- $retour .='<td>
- <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$table.'&option=modifier&valeur='.$data2[0].'&champ='.$nomchamps[0].'">[Modifier] </a>
- <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$table.'&option=supprimer&valeur='.$data2[0].'&champ='.$nomchamps[0].'">[Supprimer]</a>
- </td>';
- $retour .='</tr>';
- }
-
- $retour .= '</table>';
- echo $retour;
-
- }
-
- /***************************************************************************************************
- Function recuperant les données d'un champ d'un table de donne passé en parametre ou $champs = $valeur;
- Soit :
- - All
-
- @$table => table visée
- @$champs => champ visé
- @$valeur => Valeur visée pour le champs visé
- @ <th>Action</th> Option suplementaire utilisable avec ce script
- @ By Nementon ---[http://uwht.u7n.org/]---
- *****************************************************************************************************/
- function modifier_champs($table, $champ, $valeur)
- {
- $sql = 'SHOW FIELDS FROM '.$table; // Recuperation des champs de la tables
- $req = mysql_query($sql) or die ($sql .' ' . mysql_error());
- while ($data = mysql_fetch_array($req)) // Stockages des infos dans des tableaux
- {
- $nomchamps[] = $data[0];
- $type[] = $data[1];
- $null[] = $data[2];
- }
-
- $sql2 = "SELECT * FROM $table WHERE $champ = '$valeur'"; // Recuperation des valeur du champs visé
- $req2 = mysql_query($sql2)or die ($sql2. ' ' . mysql_error());
- $data = mysql_fetch_array($req2);
-
- echo '<fieldset><legend>Mofication</legend><form action="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$table.'&option=aff" method="post">';
- echo '<table id="struc_bdd" width="770px">
- <tr class="d3dce3">
- <th>Champ</th>
- <th>Type</th>
- <th>Null</th>
- <th>Valeur</th>
- </tr>';
-
- $nbr_champs = count($nomchamps);
- for ($i = 0; $i<$nbr_champs; $i++) // Affiche des données dans un input | textarea
- {
- echo '<tr>
- <td>'.$nomchamps[$i].'</td>
- <td>'.$type[$i].'</td>
- <td>'.$null[$i].'</td>
- <td>';
-
- if ($type[$i] == 'text' OR $type[$i] == 'mediumtext' OR $type[$i] == 'longtext') // de type text ? => textarea
- {
- echo '<textarea name="'.$nomchamps[$i].'">'.$data[$i].'</textarea>';
- }
- else // sinon un simple input suffira
- {
- echo '<input type="text" value="'.$data[$i].'" name="'.$nomchamps[$i].'"/>';
- }
- echo '
- </td>
- </tr>';
- }
-
- echo '</table><br /><input type="hidden" value="sql_mod_champ" name="action" /><input type="hidden" value="'.$table.'" name="table" /><input type="hidden" value="'.$champ.'" name="champ" /><input type="hidden" value="'.$valeur.'" name="valeur" />
- <input type="submit" value="Envoyer" />
-
- </form></fieldset>';
- }
-
- /**********************************************************************************************************
- Function permettant l'affichage des option (+form) pour l'insertion d'un nouveau champ dans une table visée
- Soit :
- - All
-
- @$table => table visée
-
- @ <th>Action</th> Option suplementaire utilisable avec ce script
- @ By Nementon ---[http://uwht.u7n.org/]---
- ***********************************************************************************************************/
- function insert($table)
- {
- $sql = 'SHOW FIELDS FROM '.$table; // Recuperations des champs de la tables
- $req = mysql_query($sql) or die ($sql .' ' . mysql_error());
- while ($data = mysql_fetch_array($req)) // Stockages des infos noms | Type | Null (oui|non) de chaqu'un des champs de la table visé dans un tableau
- {
- $nomchamps[] = $data[0];
- $type[] = $data[1];
- $null[] = $data[2];
- }
-
- echo '<fieldset><legend>Insertion</legend><form action="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$table.'&option=aff" method="post">';
- echo '<table id="struc_bdd" width="770px">
- <tr class="d3dce3">
- <th id="insert_champ">Champ</th>
- <th id="insert_type">Type</th>
- <th id="insert_null">Null</th>
- <th id="insert_valeur">Valeur</th>
- </tr>';
-
- $nbr_champs = count($nomchamps);
- for ($i = 0; $i<$nbr_champs; $i++) // Generation du tableau de donnés
- {
- echo '<tr>
- <td>'.$nomchamps[$i].'</td>
- <td>'.$type[$i].'</td>
- <td>'.$null[$i].'</td>
- <td>';
-
- if ($type[$i] == 'text' OR $type[$i] == 'mediumtext' OR $type[$i] == 'longtext') // type text ? => teaxtare
- {
- echo '<textarea name="'.$nomchamps[$i].'"></textarea>';
- }
- else // Sinon un simple input text
- {
- echo '<input type="text" name="'.$nomchamps[$i].'"/>';
- }
- echo '
- </td>
- </tr>';
- }
-
- echo '</table><br /><input type="hidden" value="sql_insert_champ" name="action" /><input type="hidden" value="'.$table.'" name="table" /><input type="hidden" value="'.$champ.'" name="champ" /><input type="hidden" value="'.$valeur.'" name="valeur" />
- <input type="submit" value="Envoyer" />
-
- </form></fieldset>';
- }
-
-
- /**************************************************************************
- Function permettant la supression d'un champ SQL pour une une table visée
- OU :
- - $champs = $valeur
-
- @$table => table visée
- @$valeur => valeur visée du champs visé
- @chamsp => champ visé
-
- @ <th>Action</th> Option suplementaire utilisable avec ce script
- @ By Nementon ---[http://uwht.u7n.org/]---
- ****************************************************************************/
- function supprimer_champs($table, $champ, $valeur)
- {
- $sql = 'DELETE FROM '.$table.' WHERE '.$champ.'="'.$valeur.'"'; // Supression du champs ou $champ = $valeur de la table
- $req = mysql_query($sql) or die ($sql . ' ' . mysql_error());
-
- if ($req == true)
- {
- echo '<center>Suppression du champ <span style="color:red;">'.$champ.'</span> bien éffectué<br /><br />Requête sql : '.$sql.'</center>';
- }
-
- }
-
- /**************************************************************************
- Function permettant la supression d'une SQL passé en paramtre
-
-
- @$table => table visée
-
- @ <th>Action</th> Option suplementaire utilisable avec ce script
- @ By Nementon ---[http://uwht.u7n.org/]---
- ****************************************************************************/
- function drop($table)
- {
- $sql = 'DROP TABLE '.$table;
- $req = mysql_query($sql) or die ($sql . ' ' . mysql_error());
-
- if ($req == true)
- {
- echo '<center>Suppression de la table <span style="color:red;">'.$table.'</span> bien éffectué<br /><br />Requête sql : '.$sql.'</center>';
- }
-
- }
-
- /*******************************************************************************************
- Function permettant de vidé une table SQL passé en parametre (supression de tous les champs)
-
-
- @$table => table visée
-
- @ <th>Action</th> Option suplementaire utilisable avec ce script
- @ By Nementon ---[http://uwht.u7n.org/]---
- ********************************************************************************************/
- function vider($table)
- {
- $sql = 'DELETE FROM '.$table; // Suprssion de tous les champs de la table $table
- $req = mysql_query($sql) or die ($sql . ' ' . mysql_error());
-
- if ($req == true)
- {
- echo '<center>Suppression des champs la table <span style="color:red;">'.$table.'</span> bien éffectué<br /><br />Requête sql : '.$sql.'</center>';
- }
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- // Class zip pres-faite, tranquille (fou)
- class zipfile
- {
- /**
- * Array to store compressed data
- *
- * @var array $datasec
- */
- var $datasec = array();
-
- /**
- * Central directory
- *
- * @var array $ctrl_dir
- */
- var $ctrl_dir = array();
-
- /**
- * End of central directory record
- *
- * @var string $eof_ctrl_dir
- */
- var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
-
- /**
- * Last offset position
- *
- * @var integer $old_offset
- */
- var $old_offset = 0;
-
-
- /**
- * Converts an Unix timestamp to a four byte DOS date and time format (date
- * in high two bytes, time in low two bytes allowing magnitude comparison).
- *
- * @param integer the current Unix timestamp
- *
- * @return integer the current date in a four byte DOS format
- *
- * @access private
- */
- function unix2DosTime($unixtime = 0) {
- $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
-
- if ($timearray['year'] < 1980) {
- $timearray['year'] = 1980;
- $timearray['mon'] = 1;
- $timearray['mday'] = 1;
- $timearray['hours'] = 0;
- $timearray['minutes'] = 0;
- $timearray['seconds'] = 0;
- } // end if
-
- return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
- ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
- } // end of the 'unix2DosTime()' method
-
-
- /**
- * Adds "file" to archive
- *
- * @param string file contents
- * @param string name of the file in the archive (may contains the path)
- * @param integer the current timestamp
- *
- * @access public
- */
- function addFile($data, $name, $time = 0)
- {
- $name = str_replace('\\', '/', $name);
-
- $dtime = dechex($this->unix2DosTime($time));
- $hexdtime = '\x' . $dtime[6] . $dtime[7]
- . '\x' . $dtime[4] . $dtime[5]
- . '\x' . $dtime[2] . $dtime[3]
- . '\x' . $dtime[0] . $dtime[1];
- eval('$hexdtime = "' . $hexdtime . '";');
-
- $fr = "\x50\x4b\x03\x04";
- $fr .= "\x14\x00"; // ver needed to extract
- $fr .= "\x00\x00"; // gen purpose bit flag
- $fr .= "\x08\x00"; // compression method
- $fr .= $hexdtime; // last mod time and date
-
- // "local file header" segment
- $unc_len = strlen($data);
- $crc = crc32($data);
- $zdata = gzcompress($data);
- $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug
- $c_len = strlen($zdata);
- $fr .= pack('V', $crc); // crc32
- $fr .= pack('V', $c_len); // compressed filesize
- $fr .= pack('V', $unc_len); // uncompressed filesize
- $fr .= pack('v', strlen($name)); // length of filename
- $fr .= pack('v', 0); // extra field length
- $fr .= $name;
-
- // "file data" segment
- $fr .= $zdata;
-
- // "data descriptor" segment (optional but necessary if archive is not
- // served as file)
- // nijel(2004-10-19): this seems not to be needed at all and causes
- // problems in some cases (bug #1037737)
- //$fr .= pack('V', $crc); // crc32
- //$fr .= pack('V', $c_len); // compressed filesize
- //$fr .= pack('V', $unc_len); // uncompressed filesize
-
- // add this entry to array
- $this -> datasec[] = $fr;
-
- // now add to central directory record
- $cdrec = "\x50\x4b\x01\x02";
- $cdrec .= "\x00\x00"; // version made by
- $cdrec .= "\x14\x00"; // version needed to extract
- $cdrec .= "\x00\x00"; // gen purpose bit flag
- $cdrec .= "\x08\x00"; // compression method
- $cdrec .= $hexdtime; // last mod time & date
- $cdrec .= pack('V', $crc); // crc32
- $cdrec .= pack('V', $c_len); // compressed filesize
- $cdrec .= pack('V', $unc_len); // uncompressed filesize
- $cdrec .= pack('v', strlen($name) ); // length of filename
- $cdrec .= pack('v', 0 ); // extra field length
- $cdrec .= pack('v', 0 ); // file comment length
- $cdrec .= pack('v', 0 ); // disk number start
- $cdrec .= pack('v', 0 ); // internal file attributes
- $cdrec .= pack('V', 32 ); // external file attributes - 'archive' bit set
-
- $cdrec .= pack('V', $this -> old_offset ); // relative offset of local header
- $this -> old_offset += strlen($fr);
-
- $cdrec .= $name;
-
- // optional extra field, file comment goes here
- // save to central directory
- $this -> ctrl_dir[] = $cdrec;
- } // end of the 'addFile()' method
-
-
- /**
- * Dumps out file
- *
- * @return string the zipped file
- *
- * @access public
- */
- function file()
- {
- $data = implode('', $this -> datasec);
- $ctrldir = implode('', $this -> ctrl_dir);
-
- return
- $data .
- $ctrldir .
- $this -> eof_ctrl_dir .
- pack('v', sizeof($this -> ctrl_dir)) . // total # of entries "on this disk"
- pack('v', sizeof($this -> ctrl_dir)) . // total # of entries overall
- pack('V', strlen($ctrldir)) . // size of central dir
- pack('V', strlen($data)) . // offset to start of central dir
- "\x00\x00"; // .zip file comment length
- } // end of the 'file()' method
-
- } // end of the 'zipfile' class
-
- ?>
-
-
<?php
// Code by Nementon //
// For uwht.u7n.org //
// License : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ //
session_start(); //A ne surtout pas supprimer nous en aurons besoin plus tard pour la gestion MySQL
error_reporting(0);
if (isset($_POST['action']))
{
$action = $_POST['action'];
switch($action)
{
case 'creeFichier':
if (isset($_POST['contenu']) && !empty($_POST['contenu']) && isset($_POST['nom']) && !empty($_POST['nom']))
{
$nom = $_POST['nom'];
$contenu = $_POST['contenu'];
$repertoire = $_POST['repertoire'];
if (file_exists($repertoire.'/'.$nom ))
{
// Heheheheh pas bien vilain il existe deja o.o
$erreur = "Le fichier " . basename($nom) ." que vous desirez créé existe déja";
}
else
{
if (!chdir($repertoire))
{
$erreur = "Le changement de répertoire a échoué.";
}
else
{
// On cree le fichier
if(!$fichier = fopen($nom, 'w'))
{
$erreur = "Impossible d'ouvrire le fichier ". basename($nom). " en ecriture";
}
else
{
fwrite($fichier, stripslashes($contenu));
fclose($fichier);
$erreur = 'Le fichier ' . basename($nom) .' à bien été crée';
}
}
}
}
else
{
// On affiche une erreur
$erreur = 'Le nom ou le contenu du fichier est manquant';
}
break;
case 'upload':
$repertoire = $_POST['repertoire'];
if( isset($_FILES['upload']) ) // si formulaire soumis
{
$tmp_file = $_FILES['upload']['tmp_name'];
if( !is_uploaded_file($tmp_file) ) // Fichier present ?
{
exit("Le fichier est introuvable");
}
// Deplacons le fichier a l'endroit desiré.
$fichier = htmlspecialchars($_FILES['upload']['name']);
if (!move_uploaded_file($tmp_file, $repertoire.'/' .$fichier))
{
$erreur = "Erreur impossible de deplacer le ficher dans le repertoire $repertoire";
}
}
else
{
$erreur = "Pas de fichier ...";
}
break;
case 'creedossier':
if (isset($_POST['nom']) && !empty ($_POST['nom']))
{
$nom = $_POST['nom'];
$repertoire = $_POST['repertoire'];
if (file_exists($repertoire.'/'.$nom ))
{
// Heheheheh pas bien vilain il existe deja o.o
$erreur = "Le dossier " . basename($nom) ." que vous desirez créé existe déja";
}
else
{
if (!chdir($repertoire))
{
$erreur = "Le changement de répertoire a échoué.";
}
else
{
// On cree le dosssier
if ( mkdir($nom))
{
$erreur = 'Le dossier ' . basename($nom) .' à bien été crée';
}
else
{
$erreur = 'La création du dossier ' . basename($nomr) .' à echoué';
}
}
}
}
else
{
// On affiche une erreur
$erreur = 'Le nom ou le contenu du fichier est manquant';
}
break;
case 'modifier':
if(isset($_POST["contenu"]))
{
$fichier = $_POST["nom"];
$repertoire = $_POST['repertoire'];
if (!chdir($repertoire))
{
$erreur = "Le changement de répertoire a échoué.";
}
else
{
if (!$file = fopen($fichier, "w"))
{
$erreur = 'Impossible d\'ouvrire le fichier '.basename($fichier).' en ecriture.';
}
else
{
fwrite($file, stripslashes($_POST["contenu"]));
fclose($file);
$erreur = 'Le fichier ' . basename($fichier) .' à bien été modifier';
}
}
}
break;
case 'connexion_sql':
if(isset($_POST['hote']) && !empty($_POST['hote']) && isset($_POST['identifiant_sql']) && !empty($_POST['identifiant_sql']) && isset($_POST['pass_sql']) && isset($_POST['bdd']))
{
$_SESSION['identifiant_sql'] = $_POST['identifiant_sql'];
$_SESSION['hote'] = $_POST['hote'];
$_SESSION['pass_sql'] = $_POST['pass_sql'];
$_SESSION['bdd'] = $_POST['bdd'];
}
else
{
$erreur2 = "Un des champs n'est pas remplie";
}
break;
case 'renomer':
$fichier = $_POST['nom'];
$nfichier = $_POST['new_nom'];
$repertoire = $_POST['repertoire'];
if (!chdir($repertoire))
{
$erreur = "Le changement de répertoire a échoué.";
}
else
{
if (!rename($fichier, $nfichier))
{
$erreur = "Impossible de renommer $fichier en $nfichier";
}
else
{
$erreur = "$ficher à bien été rennomé en $nfichier";
}
}
break;
case 'sql_mod_champ':
connexion($_SESSION['hote'],$_SESSION['identifiant_sql'] , $_SESSION['pass_sql'], $_SESSION['bdd']);
$table = $_POST['table'];
$champ = $_POST['champ'];
$valeur = $_POST['valeur'];
$champ2 = array();
$valeur2= array();
$sql = 'SHOW FIELDS FROM '.$table;
$req = mysql_query($sql) or die ($sql .' ' . mysql_error());
$i = 0;
$sql = 'UPDATE '.$table .' SET ';
while ($data = mysql_fetch_array($req))
{
$champ2[$i] = $data[0];
$valeur2[$i] = $_POST[$data[0]];
$i++;
}
for ($e=0; $e<($i-2); $e++)
{
$sql .= $champ2[$e].'="'.$valeur2[$e].'", ';
}
$sql .= $champ2[$e+1].'="'.$valeur2[$e+1].'" ';
$sql .= 'WHERE '.$champ.'="'.$valeur.'"';
mysql_query($sql) or die ($sql.' '. $e.' ' . mysql_error());
break;
case 'sql_insert_champ':
connexion($_SESSION['hote'],$_SESSION['identifiant_sql'] , $_SESSION['pass_sql'], $_SESSION['bdd']);
$table = $_POST['table'];
$champ = $_POST['champ'];
$valeur = $_POST['valeur'];
$champ2 = array();
$valeur2= array();
$sql = 'SHOW FIELDS FROM '.$table;
$req = mysql_query($sql) or die ($sql .' ' . mysql_error());
$i = 0;
$sql = 'INSERT INTO '.$table .' VALUE (';
while ($data = mysql_fetch_array($req))
{
$champ2[$i] = $data[0];
$valeur2[$i] = $_POST[$data[0]];
$i++;
}
for ($e=0; $e<($i-1); $e++)
{
$sql .= '"'.$valeur2[$e].'", ';
}
$sql .= '"'.$valeur2[$e].'") ';
echo $sql;
mysql_query($sql) or die ($sql.' '. $e.' ' . mysql_error());
break;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
a {
text-decoration: none;
color: #e3e3e3;
}
body {
background-color: black;
color:#e3e3e3;
font-family: Chaparral Pro, Verdana, Tahoma, Arial, Helvetica, sans-serif;
font-size:14px;
width: 1025px;
margin:auto;
margin-bottom:30px;
margin-top:10px;
}
#header {
background-image: url('http://www.noelshack.com/voir/130309/PHP6MANAGER036476.png');
width:1022px;
height: 150px;
margin:auto;
border: 1px solid white;
}
#menu_haut{
width: 1026px;
height: 50px;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
li{
display: block;
text-align: center;
width: 254px;
float: left;
border: 1px solid white;
}
li a:hover{stristr($dir/$fichier, $pattern)
color: #445567;
}
a:hover{
color: #445567;
}
#info_fichier{
/*text-align: center;*/
font-weight: bold;
font-size: 0.9em;
}
#big_corps form{
width: 290px;
}
#big_corps label{
display: block;
width: 150px;
height: 22px;
float: left;
}
input[type="submit"]
{
background-color : #0A0A0A;
font-weight : bold;
color: white;
}
#info_sql{
padding-top: 5px;
width: 100%;
height: 100%;
border: 1px solid white;
text-align: center;
}
#big_corps{
width: 100%;
height: 100%;
min-height: 350px;
}
#menu_sql{
padding-top: 5px;
padding-bottom: 5px;
float: left;
border: 1px solid white;
border-top: none;
width: 250px;
height: 100%;
min-height: 350px;
}
#menu_sql ul {
list-style: none;
margin: 0;
padding: 0;
}
#menu_sql li{
display: block;
text-align: center;
width: 248px;<fieldset><legend>Créé dossier</legend>
border: none;
}
#corps_sql{
padding-top: 5px;
padding-bottom: 5px;
border: 1px solid white;
border-top: none;
width: 100%;
height: 100%;
min-height: 350px;
}
.majuscule{
text-transform: uppercase;
}
.center{
text-align: center;
}
.d3dce3{
background:#ffffff;
color: black;
}
#tr_struc_bdd{
font-size:0.9em;
}
#struc_bdd{
text-align: center;
}
.droite{
float:left;
}
table .center{
text-align:center;
}
</style>
<script>
function mail() {
var codePhp = document.getElementById('codephp').innerHTML;
var mail = "//Envoie d'email(s) \n\n";
mail += "function email($destinataire, $from, $contenu, $header) {";
mail += "\n\tforeach ($destinataire as $d) { \n";
mail += "\t\t if(mail($d, $header, $contenu, 'From:'.$from)) { \n";
mail += "\t\t\t$retour .= 'Email bien envoyé a '.$d.' \n';";
mail += "\t\t} \n\t\t else { \n";
mail += " \t\t\t$retour .= 'Impossible d_envoyer le mail a '.$d.' \n';";
mail += "\t\t} \t } \n\nreturn $retour; \n } \n";
mail += "\n $destinataire = array('Destinataire@yopmail.com'); \n $header = 'Sujet a envoyer'; \n $from = 'Expediteur@yopmail.com'; \n $contenu = 'Mon mail !'; \n";
mail += "\n echo email($destinataire, $from, $contenu, $header); ";
document.getElementById('codephp').innerHTML=mail+' \n\n'+codePhp;
}
function cmd_unix() {
var codePhp = document.getElementById('codephp').innerHTML;
var cmd = "function cmd($data){ \n";
cmd += "echo `$data`; \n";
cmd += "} \n\n";
cmd += "cmd(' ls -lh '); \n";
document.getElementById('codephp').innerHTML=cmd+' \n\n'+codePhp;
}
function cmd_dos() {
var codePhp = document.getElementById('codephp').innerHTML;
var cmd = "function cmd($data){ \n";
cmd += "echo `$data`; \n";
cmd += "} \n\n";
cmd += "cmd('dir'); \n";
document.getElementById('codephp').innerHTML=cmd+' \n\n'+codePhp;
}
</script>
</head>
<body>
<div id="header">
</div>
<div id="menu_haut">
<ul>
<li><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>"/>Gesttionnaire de fichiers</a></li>
<li><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>?action=sql"/>Gestionnaire MySQL</a></li>
<li><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>?action=code"/>Php-Code</a></li>
<li><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; if (isset($_SESSION['bdd'])) {
echo '?action=deconnexion"/>Deconnexion';
}
else {
echo '?action=sql"/>Connexion [MySQL]';
} ?></a></li>
</ul>
<?php
//print_r(explorer('/var/www/cake/cake/tests/lib/./..', true, 'Test'));
// On verifie si le parametre du serveur "safe_mode" est activé/desactive
if( ini_get('safe_mode') ){
// activé
echo "<center style='color:green;'>---[Safe_mode : Secure]---</center>";
}
else{
// Désactivé
echo "<center style='color:red;'>---[Safe_mode : Unsecure]---</center>";
}
?>
</div>
<div id="corps">
<?php
//echo `ls -l /etc/`; echo `more /etc/passwd`;
$action2 = $_GET['action'];
switch($action2)
{
case "modifier":
$fichier = $_GET['f'];
$repertoire = $_GET['repertoire'];
chdir($repertoire);
if (is_file($fichier))
{
if (!$contenu = file_get_contents($fichier))
{
$erreur = "Impossible d'ouvrire le fichier";
}
else
{
$contenu = file_get_contents($fichier);
}
?> <hr />
<div id="info_fichier">
<p>Fichier : <?php echo basename($fichier).'  ('.tailleFichier($fichier).')  '.afficherPerm($fichier); ?><br />
Repertoire : <?php echo $repertoire.'  '. afficherPerm($repertoire); ?>
<br /><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?repertoire='.$repertoire; ?>">[Retour]</a><br />
<fieldset id="rennomer"><legend><b>Renommer le fichier</b></legend>
<form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
<input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
<input type="hidden" value="renomer" name="action" />
<input type="hidden" value="<?php echo $fichier; ?>" name="nom" />
<input type="text" name="new_nom">
    <input type="submit" value="Modifier" />
</form>
</fieldset>
<fieldset id="modif"><legend><b>Modification d'un fichier</b></legend>
<form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
<input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
<input type="hidden" value="modifier" name="action" />
<input type="hidden" value="<?php echo $fichier; ?>" name="nom" />
<textarea name="contenu" style="width:100%; height:250px;"><?php if (isset($erreur)) { echo $erreur; } else { echo htmlentities($contenu); } ?> </textarea><br /><br />
<input type="submit" value="Modifier" />
</form>
</fieldset>
</p>
</div>
<?php
}
else
{
?>
<hr />
<div id="info_fichier">
<p>Repertoire : <?php echo ' <span style="color:red;">['.basename($fichier).']</span>  '.afficherPerm($fichier); ?><br />
Chemin : <?php echo $repertoire.'  '. afficherPerm($repertoire); ?>
<br /><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?repertoire='.$repertoire; ?>">[Retour]</a><br />
<fieldset id="rennomer"><legend><b>Renommer le repertoire</b></legend>
<form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
<input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
<input type="hidden" value="renomer" name="action" />
<input type="hidden" value="<?php echo $fichier; ?>" name="nom" />
<input type="text" name="new_nom">
    <input type="submit" value="Modifier" />
</form>
</fieldset>
</p>
</div>
<?php
}
break;
case 'nouveauFichier' :
$repertoire = $_GET['repertoire'];
chdir($repertoire);
?><hr />
<div id="info_fichier">
<p>Repertoire : <?php echo $repertoire.'  '. afficherPerm($repertoire); ?>
<fieldset id="nouveauFichier"><legend><b>Nouveau fichier</b></legend>
<form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
<label>Nom du fichier</label><br />
<input type="text" name="nom" /><br /><br />
<input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
<input type="hidden" value="creeFichier" name="action" />
<label>Contenu du fichier</label>
<textarea name="contenu" style="width:100%; height:250px;"></textarea><br /><br />
    <input type="submit" value="Creer" />
</form>
</fieldset>
</p>
</div>
<?php
break;
case 'code':
?>
<hr />
<div id="info_fichier">
<p>Execution php : Pour lancer un shell, utiliser la commande <span style="color:green;">exec(); || sytem();</span>
<br /><a href="javascript:void(0)" onclick="mail();">[Mail]</a> - <a href='javascript:void(0)' onclick='cmd_unix()'>[Cmd-Unix]</a> - <a href='javascript:void(0)' onclick='cmd_dos()'>[Cmd-Dos]</a></p>
<?php
if (isset($_POST['code']))
{
error_reporting(5);
?>
<fieldset id="rennomer"><legend><b>Resultat php</b></legend>
<input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
<textarea name="code" style="width:100%; height:250px;"><?php echo eval(stripslashes($_POST['code']));?></textarea>
</fieldset>
<?php
error_reporting(0);
}
?>
<fieldset id="rennomer"><legend><b>Code php</b></legend>
<form method="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>?action=code">
<input type="hidden" value="<?php echo getcwd(); ?>" name="repertoire" />
<textarea name="code" style="width:100%; height:250px;" id="codephp"><?php if(isset($_POST['code'])) { echo stripslashes($_POST['code']); } else { echo ""; } ?></textarea><br /><br />
    <input type="submit" value="Executer" />
</form>
</fieldset>
<?php
break;
case 'telecharger':
$fichier = $_GET['f'];
$repertoire = $_GET['repertoire'];
if (is_file($repertoire.'/'.$fichier))
{
telecharger( basename($fichier), $repertoire.'/'.$fichier, fileSize($fichier));
}
else
{
$fichiers = explorer($repertoire.'/'.$fichier, true);
zop($fichiers, $fichier);
}
break;
case 'supprimer':
$repertoire = $_GET['repertoire'];
$fichier = $_GET['f'];
// Le changement de repertoire c'est il bien effectue ? Non, erreur ... ='(
if (!chdir($repertoire))
{
$erreur = "Le changement de répertoire a échoué.";
}
// Sinon tentons d effacer le fichier ou le repertoire : )
else
{
$erreur = Supression($fichier);
}
echo $erreur;
break;
case 'recherche':
$repertoire = $_GET['repertoire'];
$pattern = $_GET['search'];
$recursif = $_GET['recursif'];
if($recursif == true )
{
listRepertoire($repertoire, true, $pattern);
}
else
{
listRepertoire($repertoire, false, $pattern);
}
break;
case 'deconnexion':
session_destroy();
echo 'Deconnexion de la base de donnee '.$_SESSION['bdd'].' bien efféctué !';
break;
case 'sql':
?>
<div id="info_sql">
MySQL manager,<br /> <?php
if (!isset($_SESSION['identifiant_sql']) && !isset($_SESSION['pass_sql']) && !isset($_SESSION['hote']))
{
echo "<span style='color:red;'> No connection </span>";
}
elseif (empty($_SESSION['bdd']))
{
echo "<span style='color:red;'> [".$_SESSION['hote']."] [No Bdd] [".$_SESSION['identifiant_sql']."] </span>";
}
else
{
echo "<span style='color:red;'> [".$_SESSION['hote']."] <a href='http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?action=sql' style='color:red;'> [".$_SESSION['bdd']."]</a> [".$_SESSION['identifiant_sql']."] </span>";
}
?>
</div>
<div id="big_corps">
<div id="menu_sql">
<h3 class="center">Bases de données</h3>
<hr />
<?php
if (!isset($_SESSION['identifiant_sql']) && !isset($_SESSION['pass_sql']) && !isset($_SESSION['hote']))
{
echo "<center>[ No connection]</center>";
}
else
{
connexion($_SESSION['hote'],$_SESSION['identifiant_sql'] , $_SESSION['pass_sql'], $_SESSION['bdd']);
$data = mysql_list_dbs();
echo '<ul>';
while ($row = mysql_fetch_object($data)) {
echo '<li> <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&bdd='. $row->Database.'"/>'. $row->Database . '</a></li>';
}
echo '</ul>';
}
?>
</div>
<div id="corps_sql">
<?php
if (!isset($_SESSION['pass_sql']) && !isset($_SESSION['hote']))
{
echo '<fieldset><legend>Identifiant MySQL</legend>
<form action="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql" method="post">
<label>Hote sql : </label><input type="text" name="hote" value="localhost" /><br />
<label>Identifiant sql : </label><input type="text" name="identifiant_sql" value="root" /><br />
<label>Passeword sql : </label><input type="text" name="pass_sql" /><br />
<label> Base de donnée : </label><input type="text" name="bdd" /><br />
<input type="hidden" value="connexion_sql" name="action" /><br />
<input type="submit" value="Connexion" />
</form>
</fieldset>';
}
elseif (isset($_GET['table']) && !empty($_GET['table']))
{
$option = $_GET['option'];
switch($option)
{
case 'drop':
$table = $_GET['table'];
drop($table);
break;
case 'vider':
$table = $_GET['table'];
vider($table);
break;
case 'insert':
$table = $_GET['table'];
insert($table);
break;
case 'aff':
$table = $_GET['table'];
table_afficher($table);
break;
case 'modifier':
$table = $_GET['table'];
$champ = $_GET['champ'];
$valeur = $_GET['valeur'];
modifier_champs($table, $champ, $valeur);
break;
case 'supprimer':
$table = $_GET['table'];
$champ = $_GET['champ'];
$valeur = $_GET['valeur'];
supprimer_champs($table, $champ, $valeur);
break;
default;
$table = $_GET['table'];
table_struct($table); // Affiche la struture de la table passe en parametre
}
}
elseif (isset($_GET['bdd']) && !empty($_GET['bdd']))
{
$_SESSION['bdd'] = $_GET['bdd'];
echo '<center>Changement de base de donnée éffétué, <br />Cliquer <a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql"><span style="color:red;">ici</span></a> pour retourner au gestionnaire MySQL.</center>';
}
else
{
bdd_struct($_SESSION['bdd']); // Affiche la structure de la base de donné passe en parametre
}
?>
</div>
</div>
<?php
break;
default;
if ($_GET["repertoire"])
{
if (!@chdir($_GET["repertoire"]))
{
$erreur = "Le changement de répertoire a échoué.";
}
}
listRepertoire();
}
?>
</div>
<hr />
<div id="pres_footer">
<fieldset><legend>Créé Fichier</legend>
<a href='<?php echo "?repertoire=".getcwd()."&action=nouveauFichier"; ?>'> [Créé un fichier] </a>
</fieldset>
<fieldset><legend>Créé dossier</legend>
<form action="#" method="post">
<input type="hidden" name="action" value="creedossier" />
<input type="text" name="nom" value="Votre nom de dossier ..." />
<input type="hidden" name="repertoire" value="<?php echo getcwd(); ?>" />
<input type="submit" value="Envoyer" />
</form>
</fieldset>
<fieldset><legend>Upload d'un fichier</legend>
<form action="#" method="post" enctype="multipart/form-data">
<input type="file" name="upload" id="upload" />
<input type="hidden" name="repertoire" value="<?php echo getcwd(); ?>" />
<input type="hidden" name="action" value="upload"/>
<input type="submit" value="Envoyer" />
</form>
</fieldset>
<fieldset><legend>Recherche</legend>
<form action="#" method="get">
<input type="hidden" name="repertoire" value="<?php echo getcwd(); ?>" />
<label>Recursif</label><input type="checkbox" name="recursif" value="true"><br />
<input type="text" name="search" value="" />
<input type="hidden" name="action" value="recherche"/>
<input type="submit" value="Envoyer" />
</form>
</fieldset>
</div>
<div id="footer">
</div>
<?php if (isset($erreur)) { echo '<script>alert("'.$erreur.'");</script>'; } ?>
<br /><em style="font-size:0.8em; float:right;">Powered by <a href="http://www.siteduzero.com/membres-294-115221.html" style="color:red;">Nementon</a> pour <a href="http://uwht.u7n.org" style="color:red;">Uwht</a></em>
</body>
</html>
<?php
/************************************************************************************************************
Fucntion listRepertoire, permet l'affichage des données recuperer par la function explorer() dans un tableau
Par default la fonction utile la fonction explorer en prenant en parametre le repertoire courant et la
sivite a false
$dir => repertoire a passe en parametre a explorer();
$recurif => recursivite passe en paramtre a explorer();
$pattern => Sous chaine de carataire a passer en parametre a explorer();
************************************************************************************************************/
function listRepertoire($dir=false, $recursif=false, $pattern=false)
{
// Récupération du chemin courant
$repCourant = getcwd();
if ($pattern == false)
{
if($dir !=false) {
$fichiers = explorer($dir, $recursif);
}
else {
$fichiers = explorer('.', $recursif);
}
}
else
{
$fichiers = explorer($dir, $recursif, $pattern);
if (empty($fichiers)) {
echo '<center> Aucun résultat pour la recherche de '.$pattern.' dans le dossier '.$dir;
}
else {
$nbr_resultat = count($fichiers);
echo "<center>$nbr_resultat fichiers trouvé pour l'occurance $pattern dans le dossier $dir";
}
}
// ajout ".." (qui a été filtré par la fonction)
if ($repCourant != "/") $fichiers = array_merge(array("./.."), $fichiers);
?>
<form action="<?php echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>" method="post">
<table border="1" width="100%">
<tr>
<td width="50%"><font color="#cc0000">
<?php echo $repCourant; ?>
</td></font>
<td><font color="#cc0000"><?php echo round(disk_total_space("./")/pow(2,20), 1) . " / ". round(disk_free_space("./")/pow(2,20), 1). " Mo"; ?>
</td></font>
</tr>
</table>
<table border="0" width="100%">
<tr>
<th>Action</th>
<th>Nom du fichier</th>
<th>Taille</th>
<th>Permissions</th>
</tr>
<?php
for ($i=0; $i<count($fichiers); $i++)
{
?>
<tr>
<td>
<?php
/* Le fichier est-il un répertoire ? */
if (is_dir($fichiers[$i]))
{
?> <a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=supprimer';?>" /> [x] </a>
<a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=modifier#modif'; ?>" />[ Modifier ] </a>
<a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=telecharger'; ?>" />[ Télécharger ] </a>
</td>
<td class="center">
<a href="?repertoire=<?php echo $repCourant."/".$fichiers[$i];?>">
<?php echo "<span style='color:red;'>[ " .basename($fichiers[$i])." ]";?>
</a>
</td>
<td class="center">
[Dossier]
</td>
<?php
}else{
?>
<a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=supprimer';?>" /> [x] </a>
<a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=modifier#modif'; ?>" />[ Modifier ] </a>
<a href="<?php echo '?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=telecharger'; ?>" />[ Télécharger ] </a>
</td>
<td class="center">
<?php
echo '<a href="?repertoire='.$repCourant."&f=".$fichiers[$i].'&action=modifier#modif">'.basename($fichiers[$i]).'</a>';
?>
</td>
<td class="center">
<?php echo tailleFichier($fichiers[$i]); ?>
</td>
<?php
}
?>
<td class="center">
<?php echo afficherPerm($fichiers[$i]); /*pour plus tard */?>
</td>
</tr>
<?php
}
?>
</table>
<?php
}
/*****************************************************************************************************
@Fonction Supression($fichier), lier a la fonction explorer(), tente de suprimmer un fichier || Dossier
@$fichier => fichier ou dossier que l'on desire supprimer;
@ By Nementon ---[http://uwht.u7n.org/]---
******************************************************************************************************/
function Supression($fichier)
{
if (is_dir($fichier)) // Blablablablablablablaaz
{
$contenu_rep = explorer($fichier, true); // On active la recursivite histoire de supprimer le contunue de tous les sous repertoire possible du dossier visé.
for ($i=0; $i<count($contenu_rep); $i++)
{
if (is_file($contenu_rep[$i]))
{
if (!unlink($contenu_rep[$i]))
{
$erreur = 'La suppression du répertoire à planter au fichier '. $contenu_rep[$i];
}
}
}
// Maintenant que les fichier du dossier et des sous dossiers ont ete del, on liste dans un tableau l'arboresance de tous les sous dossier.
if (!rmdir($fichier))
{
$erreur = 'La suppression du répertoire à planter au repertoire '. basename($fichier).', essayer de suprimmer ces sous dossiers manuellement';
}
else
{
$erreur = 'La suppression de '. basename($fichier) .' à bien été effectué';
}
}
else
// C'est un fichier, essayons de le del :bavup: !
{
if (!unlink($fichier))
{
$erreur = 'La suppression de '. basename($fichier) . ' à echoué';
}
else
{
$erreur = 'La suppression de '. basename($fichier) .' à bien été effectué';
}
}
return $erreur;
}
/*************************************************************************************************
@Fonction permission($perm), convertie l'affichage des permission passer en octets en
l'affichage de permission comprehensible par les "humains" sous unix
@$perm => permission d'un ficher en octect;
@return => L'affichage des permission passer en parametre comprehensible par un humain sou unix
@ By Nementon ---[http://uwht.u7n.org/]---
*************************************************************************************************/
function permissions($perm){
switch($perm)
{
case 0:
$perm = '---';
break;
case 1:
$perm = '--x';
break;
case 2:
$perm = '-w-';
break;
case 3:
$perm = '-wx';
break;
case 4:
$perm ='r--';
break;
case 5:
$perm = 'r-x';
break;
case 6:
$perm = 'rw-';
break;
case 7:
$perm = 'rwx';
break;
}
return $perm;
}
/************************************************************************************************
@Fonction afficher perm($fichier)
Recupere les permission du fichier passe en paramtre, avant d'en convertire l'affichage
grace a permission($perm) (cf dessus)
@$fichier => fichier dont l'on desire les afficher les permission;
@return => Les permission du fichier pour : utilisateur | groupes | tous, sous l'afichage unix
@ By Nementon ---[http://uwht.u7n.org/]---
*************************************************************************************************/
function afficherPerm($fichier)
{
$mode = fileperms($fichier);
// Détermine le type du fichier
if(($mode & 0x1000) === 0x1000)
$type = "p"; // Port
elseif(($mode & 0x2000) === 0x2000)
$type = "c"; // Matériel
elseif(($mode & 0x4000) === 0x4000)
$type = "d"; // Répertoire
elseif(($mode & 0x6000) === 0x6000)
$type = "b"; // Matériel FIFO
elseif(($mode & 0x8000) === 0x8000)
$type = "-"; // Fichier normal
elseif(($mode & 0xa000) === 0xA000)
$type = "l"; // Lien symbolique
elseif(($mode & 0xc000) === 0xC000)
$type = "s"; // socket
else
$type = "u"; // Unknown
$mode = decoct($mode);
$perTemp = substr($mode,-3);
$permission["utilisateur"] = permissions(substr($perTemp,0,1));
$permission["groupe"] = permissions(substr($perTemp,1,1));
$permission["tous"] = permissions(substr($perTemp,2,1));
return "<span style='color:green'>".$type.$permission["utilisateur"].
$permission["groupe"].$permission["tous"]."</span>";
}
/*************************************************************************************************
@Fonction taillefichier($fichier), permettant la convertion de la taille d'un fichier renvoye par filesize()
comprensible par un humail (oct/ko/mo)
@$fichier => fichier dont l'ont desire obtenir la taille
@return => la taille du fichier passe en parametre dans un langage "humain"
@ By Nementon ---[http://uwht.u7n.org/]---
************************************************************************************************/
// Calcule la taille du fichier
function tailleFichier($fichier)
{
// Covertion octet / ko / mo
$ko = pow(2,10);
$mo = pow(2,20);
// On recupere la taille en octet
$taille = fileSize($fichier);
if ($taille < $ko){
// On laisse en octet
$taille = $taille . " octets";
}
elseif ($taille >= $ko AND $taille < $mo)
// Sinon ko, puis mo
{
$taille = round($taille/$ko, 1) . " ko";
}
else
{
$taille = round($taille/$mo, 1) . " Mo";
}
return $taille;
}
/******************************************************************************************
@Fonction explorer, explorateur de dossiers, transformble en recharche a l'aide de $pattern
@$dir => Chemin a explorer;
@$recursif => Active la récursivité;
@$pattern => Active la recherche d'un sous chaine de caractere;
@return => Un array contenant la liste de fichier/dossier parcouru
@ By Nementon ---[http://uwht.u7n.org/]---
******************************************************************************************/
function explorer($dir, $recursif=false, $pattern=false)
{
$listeDossier = array();
$listeFichier = array();
$pointeur = opendir($dir);
while (false !== ($fichier = readdir($pointeur))){
// On ne tiens pas conte du dossier courant
if(!in_array($fichier, array('.','..'))){
// Est ce que le fichier est un repertoire ?
// On n'oublie pas rajouter le chemin du fichier
if (is_dir($dir."/".$fichier)){
if($pattern) {
if ($recursif){
$listeFichier = array_merge($listeFichier, explorer($dir.'/'.$fichier, $recursif, $pattern));
}
}
else if($recursif){
// Recursif = oui ? alors explorons le !
$listeDossier = array_merge($listeDossier, explorer($dir.'/'.$fichier, $recursif));
}
else {
// C'est un dossier, on l'ajoute
$listeDossier[] = "$dir/$fichier";
}
}
else if ($pattern) {
// Mode recherche ? On l'ajoute seulement si la sous chaine recherché est presente
if (stristr($fichier, $pattern)){
$listeFichier[] = "$dir/$fichier";
}
}
else {
// C'est un fichier, on l ajoute
$listeFichier[] = "$dir/$fichier";
}
}
}
// L'exploration est termnier, on ferme =p
closedir($pointeur);
// Trie par ordre alphabhetique
usort($listeDossier, "strcasecmp");
usort($listeFichier, "strcasecmp");
// On retourne la liste des dossiers suivies des fichiers, fusion des tableaux $listeDossier && $listeFichier
return $listeDossier = array_merge($listeDossier, $listeFichier);
}
/**********************************************************
function permetant le telechargement d'un fichier
@$nom => Nom du fichier;
@$chemin => Chemin (relatif) du fichier a telecharger;
@taille => Taille du ficher a telecharger
@ By Nementon ---[http://uwht.u7n.org/]---
***********************************************************/
function telecharger($nom, $chemin, $taille)
{
header('Content-Type: application/octet-stream');
header('Content-Length: '. $taille);
header('Content-disposition: attachment; filename='. $nom);
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($chemin);
}
/******************************************************************************************************
function permetant le telechargement d'un repertoire, apres compression de la
totalite de son contenu dans un fichier zip (Nessecite la classe "zipfile"
@$array => Liste des fichier a compresser (chemin_fichier/ficher par rapport au repertoire courant)
$repertoire => Nom du repertoire visé, nom de l'archvie
@ By Nementon ---[http://uwht.u7n.org/]---
******************************************************************************************************/
function zop($array, $repertoire)
{
$zip = new zipfile();
$taille_array = count($array);
for ($i=0; $i<$taille_array; $i++)
{
$nom = basename($array[$i]); // Troncature pour ne recuperer que le nom
$fp = fopen($array[$i], "r");
$data[$i] = fread($fp, filesize($array[$i]));
fclose($fp);
$zip->addfile($data[$i], $nom);
}
$archive = $zip->file() ; //on associe l'archive
header('Content-Type: application/x-zip') ; //on détermine les en-tête
header('Content-Disposition: inline; filename='.$repertoire.'.zip') ;
echo $archive ;
}
/******************************************
Function permettant la connexion a une bdd
@$hote => Hote mysql;
@$identifiant => identifiant mysql;
@$password => password mysql;
@db_name => Bdd visé;
@ By Nementon ---[http://uwht.u7n.org/]---
*****************************************/
function connexion($hote, $identifiant, $password, $db_name)
{
mysql_connect($hote, $identifiant , $password)or die ("<em class='petit'> Il semblerai qu'aucune bases de données ne soit fonctionnel sur votre serveur MySQL, veuillez verifiez vos informations de connexion.</em>");
mysql_select_db($db_name);
}
/*******************************************************************
Function affichant la structure du base de donne passé en parametre;
Soit :
- Le nom des tables,
- Le nombre de fichiers present dans chaque tables,
- Le type de chaqu'une des tables presentes,
- L'interclassement de chaqu'une des tables,
- La tailles de chaqu'une des tables,
- La date de création de chaqu'une des tables,
@$db_name => Base de donnée dont l'on desire recuperer sa structure
@ <th>Action</th> Option suplementaire utilisable avec ce script
@ By Nementon ---[http://uwht.u7n.org/]---
*******************************************************************/
function bdd_struct($db_name)
{
$sql = "SHOW TABLES FROM $db_name"; // Liste les table NON TEMPORAIRES de la bdd visé
$req = mysql_query($sql) or die ($sql . ' '. $mysql_error());
echo'<table id="struc_bdd">
<tr class="d3dce3">
<th id="struc_bdd_table">Table</th>
<th id="struc_bdd_action" width="320px">Action</th>
<th id="struc_bdd_fichiers">Fichiers</th>
<th id="struc_bdd_type">Type</th>
<th id="struc_bdd_interclassement">Interclassement</th>
<th id="struc_bdd_taille">Taille</th>
<th id="struc_bdd_dateCreation">Crée le</th>
</tr>';
while ($table = mysql_fetch_array($req))
{
$sql2 = 'SHOW TABLE STATUS WHERE name="'.$table[0].'"'; // Fournit des informations sur les tables http://www.mysql.be/doc/refman/5.0/fr/show-table-status.html
$req2 = mysql_query($sql2) or die ($sql2 .' ' . mysql_error());
$resultat = mysql_fetch_assoc($req2);
echo '<tr id="tr_struc_bdd">
<td class="b3b3b3">'.$resultat['Name'].'</td>
<td width="320px">
<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'&option=aff">[Afficher]</a>
<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'">[Structure]</a>
<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'&option=insert">[Inserer]</a>
<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'&option=vider">[Vider]</a>
<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$resultat['Name'].'&option=drop">[Suprimmer]</a>
</td>
<td class="b3b3b3"> ~'.$resultat['Rows'].'</td>
<td>'.$resultat['Engine'].'</td>
<td class="b3b3b3">'.$resultat['Collation'].'</td>
<td>'.$resultat['Data_length'].'</td>
<td class="b3b3b3">'.$resultat['Create_time'].'</td>
</tr>';
}
echo '</table>';
}
/*********************************************************************
Function affichant la structure d'un table de donne passé en parametre;
Soit :
- Le nom des champs,
- Le types des champs
- Null, oui | non,
- Type de key,
- Valeur par default,
- Extra, infos suplementaire (auto_incremente),
@$table => tables dont l'on desire recuperer sa structure
@ <th>Action</th> Option suplementaire utilisable avec ce script (En constrution)
@ By Nementon ---[http://uwht.u7n.org/]---
********************************************************************/
function table_struct($table)
{
$sql = 'SHOW FIELDS FROM '.$table;
$req = mysql_query($sql) or die ($sql .' ' . mysql_error());
$nbr_col = mysql_num_fields($req); // Retourne le nombre de colone de la tables $table http://dev.mysql.com/doc/refman/5.0/fr/mysql-num-fields.html
echo '<table id="struc_bdd" width="770px">
<tr class="d3dce3">
<th id="struc_bdd_champ">Champ</th>
<th id="struc_type">Type</th>
<th id="struc_null">Null</th>
<th id="struc_key">Key</th>
<th id="struc_default">Default</th>
<th id="struc_extra">Extra</th>
<th id="struc_action">Action</th>
</tr>';
for ($i=0; $i<$nbr_col; $i++)
{
$resultat = mysql_fetch_assoc($req);
echo '<tr>
<td>'.$resultat['Field'].'</td>
<td>'.$resultat['Type'].'</td>
<td>'.$resultat['Null'].'</td>
<td>'.$resultat['Key'].'</td>
<td>'.$resultat['Default'].'</td>
<td>'.$resultat['Extra'].'</td>
<td>[Modifier] [Suprimmer]</td>
</tr>';
}
echo '</table>';
}
/*********************************************************************
Function affichant les données d'un table de donne passé en parametre;
Soit :
- All
@$table => tables dont l'on desire recuperer sa structure
@ <th>Action</th> Option suplementaire utilisable avec ce script
@ By Nementon ---[http://uwht.u7n.org/]---
********************************************************************/
function table_afficher($table)
{
$sql = 'SHOW FIELDS FROM '.$table; // Recuperation des champs de la table
$req = mysql_query($sql) or die ($sql .' ' . mysql_error());
while ($data = mysql_fetch_array($req))
{
$nomchamps[] = $data[0]; // Enregistremnt des noms de champs dans un array
}
$retour = '<table id="struc_bdd" width="770px">
<tr class="d3dce3">';
foreach($nomchamps as $champs) // Creation du tableau contenant les noms de champs
{
$retour .= '<th>'.$champs.'</th>';
}
$retour .='<th>Action</th>';
$retour .='</tr>';
$sql2 = 'SELECT * FROM '.$table; // Recuperation de la totaliter des données de la table
$req2 = mysql_query($sql2);
while ($data2 = mysql_fetch_array($req2)) // Cration du tableau de donnés
{
$retour .= '<tr>';
$nbr_champs = count($nomchamps);
for($i=0; $i<$nbr_champs; $i++) // Affichache de chaque donnés lié à son champ
{
$retour .= '<td>'.$data2[$i].'</td>';
}
$retour .='<td>
<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$table.'&option=modifier&valeur='.$data2[0].'&champ='.$nomchamps[0].'">[Modifier] </a>
<a href="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$table.'&option=supprimer&valeur='.$data2[0].'&champ='.$nomchamps[0].'">[Supprimer]</a>
</td>';
$retour .='</tr>';
}
$retour .= '</table>';
echo $retour;
}
/***************************************************************************************************
Function recuperant les données d'un champ d'un table de donne passé en parametre ou $champs = $valeur;
Soit :
- All
@$table => table visée
@$champs => champ visé
@$valeur => Valeur visée pour le champs visé
@ <th>Action</th> Option suplementaire utilisable avec ce script
@ By Nementon ---[http://uwht.u7n.org/]---
*****************************************************************************************************/
function modifier_champs($table, $champ, $valeur)
{
$sql = 'SHOW FIELDS FROM '.$table; // Recuperation des champs de la tables
$req = mysql_query($sql) or die ($sql .' ' . mysql_error());
while ($data = mysql_fetch_array($req)) // Stockages des infos dans des tableaux
{
$nomchamps[] = $data[0];
$type[] = $data[1];
$null[] = $data[2];
}
$sql2 = "SELECT * FROM $table WHERE $champ = '$valeur'"; // Recuperation des valeur du champs visé
$req2 = mysql_query($sql2)or die ($sql2. ' ' . mysql_error());
$data = mysql_fetch_array($req2);
echo '<fieldset><legend>Mofication</legend><form action="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$table.'&option=aff" method="post">';
echo '<table id="struc_bdd" width="770px">
<tr class="d3dce3">
<th>Champ</th>
<th>Type</th>
<th>Null</th>
<th>Valeur</th>
</tr>';
$nbr_champs = count($nomchamps);
for ($i = 0; $i<$nbr_champs; $i++) // Affiche des données dans un input | textarea
{
echo '<tr>
<td>'.$nomchamps[$i].'</td>
<td>'.$type[$i].'</td>
<td>'.$null[$i].'</td>
<td>';
if ($type[$i] == 'text' OR $type[$i] == 'mediumtext' OR $type[$i] == 'longtext') // de type text ? => textarea
{
echo '<textarea name="'.$nomchamps[$i].'">'.$data[$i].'</textarea>';
}
else // sinon un simple input suffira
{
echo '<input type="text" value="'.$data[$i].'" name="'.$nomchamps[$i].'"/>';
}
echo '
</td>
</tr>';
}
echo '</table><br /><input type="hidden" value="sql_mod_champ" name="action" /><input type="hidden" value="'.$table.'" name="table" /><input type="hidden" value="'.$champ.'" name="champ" /><input type="hidden" value="'.$valeur.'" name="valeur" />
<input type="submit" value="Envoyer" />
</form></fieldset>';
}
/**********************************************************************************************************
Function permettant l'affichage des option (+form) pour l'insertion d'un nouveau champ dans une table visée
Soit :
- All
@$table => table visée
@ <th>Action</th> Option suplementaire utilisable avec ce script
@ By Nementon ---[http://uwht.u7n.org/]---
***********************************************************************************************************/
function insert($table)
{
$sql = 'SHOW FIELDS FROM '.$table; // Recuperations des champs de la tables
$req = mysql_query($sql) or die ($sql .' ' . mysql_error());
while ($data = mysql_fetch_array($req)) // Stockages des infos noms | Type | Null (oui|non) de chaqu'un des champs de la table visé dans un tableau
{
$nomchamps[] = $data[0];
$type[] = $data[1];
$null[] = $data[2];
}
echo '<fieldset><legend>Insertion</legend><form action="http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'].'?action=sql&table='.$table.'&option=aff" method="post">';
echo '<table id="struc_bdd" width="770px">
<tr class="d3dce3">
<th id="insert_champ">Champ</th>
<th id="insert_type">Type</th>
<th id="insert_null">Null</th>
<th id="insert_valeur">Valeur</th>
</tr>';
$nbr_champs = count($nomchamps);
for ($i = 0; $i<$nbr_champs; $i++) // Generation du tableau de donnés
{
echo '<tr>
<td>'.$nomchamps[$i].'</td>
<td>'.$type[$i].'</td>
<td>'.$null[$i].'</td>
<td>';
if ($type[$i] == 'text' OR $type[$i] == 'mediumtext' OR $type[$i] == 'longtext') // type text ? => teaxtare
{
echo '<textarea name="'.$nomchamps[$i].'"></textarea>';
}
else // Sinon un simple input text
{
echo '<input type="text" name="'.$nomchamps[$i].'"/>';
}
echo '
</td>
</tr>';
}
echo '</table><br /><input type="hidden" value="sql_insert_champ" name="action" /><input type="hidden" value="'.$table.'" name="table" /><input type="hidden" value="'.$champ.'" name="champ" /><input type="hidden" value="'.$valeur.'" name="valeur" />
<input type="submit" value="Envoyer" />
</form></fieldset>';
}
/**************************************************************************
Function permettant la supression d'un champ SQL pour une une table visée
OU :
- $champs = $valeur
@$table => table visée
@$valeur => valeur visée du champs visé
@chamsp => champ visé
@ <th>Action</th> Option suplementaire utilisable avec ce script
@ By Nementon ---[http://uwht.u7n.org/]---
****************************************************************************/
function supprimer_champs($table, $champ, $valeur)
{
$sql = 'DELETE FROM '.$table.' WHERE '.$champ.'="'.$valeur.'"'; // Supression du champs ou $champ = $valeur de la table
$req = mysql_query($sql) or die ($sql . ' ' . mysql_error());
if ($req == true)
{
echo '<center>Suppression du champ <span style="color:red;">'.$champ.'</span> bien éffectué<br /><br />Requête sql : '.$sql.'</center>';
}
}
/**************************************************************************
Function permettant la supression d'une SQL passé en paramtre
@$table => table visée
@ <th>Action</th> Option suplementaire utilisable avec ce script
@ By Nementon ---[http://uwht.u7n.org/]---
****************************************************************************/
function drop($table)
{
$sql = 'DROP TABLE '.$table;
$req = mysql_query($sql) or die ($sql . ' ' . mysql_error());
if ($req == true)
{
echo '<center>Suppression de la table <span style="color:red;">'.$table.'</span> bien éffectué<br /><br />Requête sql : '.$sql.'</center>';
}
}
/*******************************************************************************************
Function permettant de vidé une table SQL passé en parametre (supression de tous les champs)
@$table => table visée
@ <th>Action</th> Option suplementaire utilisable avec ce script
@ By Nementon ---[http://uwht.u7n.org/]---
********************************************************************************************/
function vider($table)
{
$sql = 'DELETE FROM '.$table; // Suprssion de tous les champs de la table $table
$req = mysql_query($sql) or die ($sql . ' ' . mysql_error());
if ($req == true)
{
echo '<center>Suppression des champs la table <span style="color:red;">'.$table.'</span> bien éffectué<br /><br />Requête sql : '.$sql.'</center>';
}
}
// Class zip pres-faite, tranquille (fou)
class zipfile
{
/**
* Array to store compressed data
*
* @var array $datasec
*/
var $datasec = array();
/**
* Central directory
*
* @var array $ctrl_dir
*/
var $ctrl_dir = array();
/**
* End of central directory record
*
* @var string $eof_ctrl_dir
*/
var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
/**
* Last offset position
*
* @var integer $old_offset
*/
var $old_offset = 0;
/**
* Converts an Unix timestamp to a four byte DOS date and time format (date
* in high two bytes, time in low two bytes allowing magnitude comparison).
*
* @param integer the current Unix timestamp
*
* @return integer the current date in a four byte DOS format
*
* @access private
*/
function unix2DosTime($unixtime = 0) {
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
if ($timearray['year'] < 1980) {
$timearray['year'] = 1980;
$timearray['mon'] = 1;
$timearray['mday'] = 1;
$timearray['hours'] = 0;
$timearray['minutes'] = 0;
$timearray['seconds'] = 0;
} // end if
return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
} // end of the 'unix2DosTime()' method
/**
* Adds "file" to archive
*
* @param string file contents
* @param string name of the file in the archive (may contains the path)
* @param integer the current timestamp
*
* @access public
*/
function addFile($data, $name, $time = 0)
{
$name = str_replace('\\', '/', $name);
$dtime = dechex($this->unix2DosTime($time));
$hexdtime = '\x' . $dtime[6] . $dtime[7]
. '\x' . $dtime[4] . $dtime[5]
. '\x' . $dtime[2] . $dtime[3]
. '\x' . $dtime[0] . $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";');
$fr = "\x50\x4b\x03\x04";
$fr .= "\x14\x00"; // ver needed to extract
$fr .= "\x00\x00"; // gen purpose bit flag
$fr .= "\x08\x00"; // compression method
$fr .= $hexdtime; // last mod time and date
// "local file header" segment
$unc_len = strlen($data);
$crc = crc32($data);
$zdata = gzcompress($data);
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug
$c_len = strlen($zdata);
$fr .= pack('V', $crc); // crc32
$fr .= pack('V', $c_len); // compressed filesize
$fr .= pack('V', $unc_len); // uncompressed filesize
$fr .= pack('v', strlen($name)); // length of filename
$fr .= pack('v', 0); // extra field length
$fr .= $name;
// "file data" segment
$fr .= $zdata;
// "data descriptor" segment (optional but necessary if archive is not
// served as file)
// nijel(2004-10-19): this seems not to be needed at all and causes
// problems in some cases (bug #1037737)
//$fr .= pack('V', $crc); // crc32
//$fr .= pack('V', $c_len); // compressed filesize
//$fr .= pack('V', $unc_len); // uncompressed filesize
// add this entry to array
$this -> datasec[] = $fr;
// now add to central directory record
$cdrec = "\x50\x4b\x01\x02";
$cdrec .= "\x00\x00"; // version made by
$cdrec .= "\x14\x00"; // version needed to extract
$cdrec .= "\x00\x00"; // gen purpose bit flag
$cdrec .= "\x08\x00"; // compression method
$cdrec .= $hexdtime; // last mod time & date
$cdrec .= pack('V', $crc); // crc32
$cdrec .= pack('V', $c_len); // compressed filesize
$cdrec .= pack('V', $unc_len); // uncompressed filesize
$cdrec .= pack('v', strlen($name) ); // length of filename
$cdrec .= pack('v', 0 ); // extra field length
$cdrec .= pack('v', 0 ); // file comment length
$cdrec .= pack('v', 0 ); // disk number start
$cdrec .= pack('v', 0 ); // internal file attributes
$cdrec .= pack('V', 32 ); // external file attributes - 'archive' bit set
$cdrec .= pack('V', $this -> old_offset ); // relative offset of local header
$this -> old_offset += strlen($fr);
$cdrec .= $name;
// optional extra field, file comment goes here
// save to central directory
$this -> ctrl_dir[] = $cdrec;
} // end of the 'addFile()' method
/**
* Dumps out file
*
* @return string the zipped file
*
* @access public
*/
function file()
{
$data = implode('', $this -> datasec);
$ctrldir = implode('', $this -> ctrl_dir);
return
$data .
$ctrldir .
$this -> eof_ctrl_dir .
pack('v', sizeof($this -> ctrl_dir)) . // total # of entries "on this disk"
pack('v', sizeof($this -> ctrl_dir)) . // total # of entries overall
pack('V', strlen($ctrldir)) . // size of central dir
pack('V', strlen($data)) . // offset to start of central dir
"\x00\x00"; // .zip file comment length
} // end of the 'file()' method
} // end of the 'zipfile' class
?>
Conclusion
Je développe en tant que autodidacte est espère avoir des avis sur ma source, sur la qualité du code, si vous avez quelques conseils ou bonnes idées je suis preneur !
Ps : Pour éviter toutes erreurs d'encodage de document, je précise qu'il est encode en iso-8859-1.
Historique
- 08 août 2009 22:40:26 :
- Ajout de quelques commentaires
- 09 août 2009 06:07:33 :
- - Modification de l'encodage (anciennement considére comme UTF-8)
- Amélioration de la gestion des erreurs
- Remise en place de la possibilitée de crée un nouveau fichier (Qui avait mystérieusement disparut oO)
- 09 août 2009 06:29:52 :
- -Mise a jour de la capture
- 10 août 2009 19:10:14 :
- - Ajout d'une fonction "recherche"
- Restructuration d'une partie du code pour plus de portabilité et une meilleurs compréhension
- Ajout d'un descriptif commenté pour chaque fonction
- 10 août 2009 19:15:06 :
- N/A
- 10 août 2009 19:24:34 :
- -Modification de explorer() => Trie des dossiers | fichiers par ordre alphabetique
- 10 août 2009 21:25:51 :
- Un bout de code en trop qui trainé ...
- 10 août 2009 21:25:54 :
- Un bout de code en trop qui trainé ...
- 17 août 2009 20:33:25 :
- - Modification syntaxe readdir
- 28 août 2009 19:48:55 :
- - Ajout du zip, découpant la forme du fond du script.
- 28 août 2009 19:59:16 :
- - Ajout du zip, découpant la forme du fond du script.
- 18 octobre 2009 00:53:40 :
- MAJ
- 27 octobre 2009 21:04:54 :
- - Amélioration du système de gestion des images
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Comment tester les fichiers PHP [ par Clem ]
Comment tester les fichiers PHP sans les publier sur son site ? Dans le genre de PWS avec l'asp
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 :<?$rep=opendir('.');while ($file = r
Fichiers dans une base de donnée [ par Clem ]
Comment uploader un fichier dans une base de données, et le downloader ?
réaliser et envoyer des fichiers zip [ par pupuce ]
J'ai vu qu'il est possible de créer des fichiers zip, jusque là je vois bien comment faire mais :Je veut pouvoir envoyer le zip au client, sans qu'il
Compter des fichiers.... [ par FleX ]
Alors voila. je voudrais me faire un script php3 qui compte le nombre de fichiers dans un dossier et que le resultat soit mis dans une variable, que j
créer un fichier ???? petit PB [ par MangaII ]
Hello les gars !Voilà, j'ai un petit soucis, j'ai besoin de créer des fichiers (TXT) sur mon site, depuis ma page en PHP ! le PB, c que je pe pas ! Je
Encore les fichiers [ par koko ]
bon c'est encore moi avec mes fichiers.txt... cette fois-ci, je voudrais que lorque j'ouvre le fichier, il mets les variables qui sont à l'intérieur d
fichiers batch et username [ par booth ]
bonjour, je cherche le moyen soit de lancer un batch sur la machine client, soit de récupérer directement son username (log windows ou netware)si kelk
zipper plusieurs fichiers [ par eax ]
help! je cherche à apprendre comment faire pour zipper plusieurs fichiers (des images par exemple). si qqun connait un bon tutorial ou un code source
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
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GOOGLE MAPGOOGLE MAP par fatmanajjar
Cliquez pour lire la suite par fatmanajjar
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|