Gestionnaire de fichiers | mysql php 5.x {nementon php manager v0.5}

Soyez le premier à donner votre avis sur cette source.

Vue 10 540 fois - Téléchargée 1 304 fois

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.html

Source / Exemple :


<?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).'&nbsp ('.tailleFichier($fichier).') &nbsp'.afficherPerm($fichier);  ?><br /> 
						Repertoire : <?php echo $repertoire.'&nbsp '. 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">
									&nbsp &nbsp <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 '&nbsp<span style="color:red;">['.basename($fichier).']</span> &nbsp'.afficherPerm($fichier);  ?><br /> 
					Chemin : <?php echo $repertoire.'&nbsp '. 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">
								&nbsp &nbsp <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.'&nbsp '. 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 />
							&nbsp &nbsp <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 />
									&nbsp &nbsp <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.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

lebiopsy
Messages postés
2
Date d'inscription
vendredi 5 mars 2010
Statut
Membre
Dernière intervention
1 avril 2010
-
...
Bonsoir!

Je découvre le script! Bon...tant pis pour sa date de publication....

Bien sûr, le script gagnerait à être "découpé" pour une meilleure lisibilité et une meilleure maintenance....mais ce n'est là que l'avis d'un fouineur amateur!
Sinon, je pense que pour un autodidacte qui fait des scripts comme ça, y'a rien à dire que des bravos et des merci!
Ce script constitue un excellent exercice de réflexion et d'apprentissage...à adapter selon les besoins!
En effet, je trouve "la gestion des fichiers, une partie intéressante. Cependant, j'aimerai savoir s'il est possible de ne pas afficher les dossiers et répertoires du site.

Ainsi, peux-t-on n'afficher que l'arborescence des dossiers et fichiers créés par l'utilisateur et cacher les dossiers et repertoires du site?

Merci de m'orienter et très bonne continuation.
cs_Nementon
Messages postés
21
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
25 mai 2010
-
Ps : je viens de me rendre compte que mes liens associer aux image son erroné, en effet j'avais c/c la partie du code pour les dossiers, au clique il essaye donc de changer de dossier, pas de modifier le fichier image, a rectifier =p
cs_Nementon
Messages postés
21
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
25 mai 2010
-
Voila les modification que je te propose :

Petite modification dans la fonction explorer :

function explorer($dir, $recursif= false, $pattern=false)
{
$listeDossier = array();
$listeFichier = array();
$listeImage = 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 {
if (is_image($fichier)) {
$listeImage[] = "$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($listeImage, "strcasecmp");
usort($listeDossier, "strcasecmp");
usort($listeFichier, "strcasecmp");
// On retourne la liste des dossiers suivies des fichiers, fusion des tableaux $listeDossier && $listeFichier
return $listeDossier = array_merge($listeImage, array_merge($listeDossier, $listeFichier));
}

et petite modification dans la fonction listRepertoire :

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">

<?php echo $repCourant; ?>,
<?php echo round(disk_total_space("./")/pow(2,20), 1) . " / ". round(disk_free_space("./")/pow(2,20), 1). " Mo"; ?>,

Action |
Nom du fichier |
Taille |
Permissions |

<?php
for ($i =0; $i<count($fichiers); $i++)
{
?>
----

<?php
/* Le fichier est-il un répertoire ? */
if (is_image($fichiers[$i]))
{
?>
" /> [x]
" />[ Modifier ]
" />[ Télécharger ] ,
">
" alt="60" width="60" />
,
[Image],

<?php
}
else if (is_dir($fichiers[$i]))
{

?> \" /> [x]
\" />[ Modifier ]
\" />[ Télécharger ]
</td>
">
<?php echo "[ " .basename($fichiers[$i])." ]";?>
,
[Dossier],

<?php
}else{

?>
\" /> [x]
\" />[ Modifier ]
\" />[ Télécharger ]
</td>
<?php

echo ''.basename($fichiers[$i]).'';

?>,
<?php echo tailleFichier($fichiers[$i]); ?>,
<?php
}
?>
<?php echo afficherPerm($fichiers[$i]); /*pour plus tard */?>,

<?php
}
?>

<?php
}

En gros, je rajoute un array listeImage dans la fonction explorer que je fusionne ensuite avec les array listeDossier et listeFichier ce qui nous donne une "arborescence"

-Image
-Dossier
-Fichier

Et je rajoute une structure de contrôle dans la fonction listRepertoire, pour gérer l'affichage de mes images

(Merci en tout cas, c'est une excellente qui idee, que je vais continuer a retravailler =p)
cs_Nementon
Messages postés
21
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
25 mai 2010
-
Bonjours,

Je ne suis pas sur d'avoir compris ce que tu désir faire, veut tu pouvoir afficher une image (Au lieu de son texte "encodé" (effectivement difficile de trouver le bon mot), lorsque dans la parti "Gestionnaire de fichier" tu clique sur son lien pour le modifier ?

Si oui, voila ce que je te propose :

Tout d'abord cree une fonction disons is_image() pour vérifier si le fichier passer en paramètre est une image :

function is_image($data){
$fichier = substr($data, -3);
if ($fichier == "gif" ||
$fichier == "jpg" ||
$fichier == "png" ||
$fichier == "jpeg" ||
$fichier == "PNG" ||
$fichier == "GIF" ||
$fichier == "JPG") {

return true;

}
else {
return false;
}
}

Pour ensuite de modifier la partie adéquate, verifier si fichier est une image, si oui l'afficher, si non, afficher le textarea :

<fieldset id="modif"><legend> Modification d'un fichier </legend>
<form method ="post" action="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; ?>">
" name="repertoire" />

" name="nom" />
<?php if (is_image($fichier)) { // Si le fichier est une image, on l'affiche
echo '<center></center>';
}
else {
?> <textarea name="contenu" style="width:100%; height:250px;"><?php if (isset($erreur)) { echo $erreur; } else {
// Sinon on affiche le contenu du potentiellement texte
echo htmlentities($contenu);
} ?> </textarea>
<?php }
?>

</form>
</fieldset>

Ensuite, si c'est dans le gestionnaire lui meme, que tu veut faire apparaitre les image, je pense la qu'il faut modifier la fonction explorer, pour rajouter un array contenant toutes les images (ceci toujours grâce a l'aide de la fonction is_image()) (Bon je me donne un moment histoire de me replonger dans le code est je post cela, dis moi si je me trompe totalement :p)
flyfly0908
Messages postés
1
Date d'inscription
lundi 6 juillet 2009
Statut
Membre
Dernière intervention
21 octobre 2009
-
J'aime beaucoup ce code mais je voulais tout de même comprendre un problème : si j'upload une image (disons .jpg) l'image va etre affiché dans la zone de texte et donc n'est pas lisible car elle se retrouve "cryptée" (oui je ne voit pas plus adapté).
J'ai pensé qu'ajouter une condition au niveau de l'affichage du fichier (afin de déterminer si le fichier est une image (lecture de l'extension) me permettrai d'afficher les fichiers .jpg ou .bmp autre part que dans la case de modification de texte.
mais... je n'ai pas réussi donc si tu a la solution... :
j'avais pensé rajouter ceci

<?php
//affichage de l'entête du tableau
echo
"
Image,
Nom de l'image,

\";

//nom du répertoire contenant les images à afficher
$nom_repertoire = './';

//ouvre le repertoire
$pointeur = opendir($nom_repertoire);
$i = 0;

//stocke les noms de fichiers images dans un tableau
while ($fichier = readdir($pointeur)) {
if (substr($fichier, -3) == \"gif\" ||
substr($fichier, -3) == \"jpg\" ||
substr($fichier, -3) == \"png\" ||
substr($fichier, -4) == \"jpeg\" ||
substr($fichier, -3) == \"PNG\" ||
substr($fichier, -3) == \"GIF\" ||
substr($fichier, -3) == \"JPG\")
{
$tab_image[$i] = $fichier;
$i++;
}
}

//on ferme le répertoire
closedir($pointeur);

//on trie le tableau par ordre alphabétique
array_multisort($tab_image, SORT_ASC);

//affichage des images (en 60 * 60 ici)
for ($j=0;$j<=$i-1;$j++)
{
$image = '';

// affichage bas du tableau
echo
'
----

'.$image.',
'.$tab_image[$j].',

';
}
echo '
';

?>

dans le cas présent les images sont en 60 par 60 mais c'est modifiable.
quelqu'un pourrait il me montrer comment inserer proprement mon code et celui de Nementon ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.