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

Soyez le premier à donner votre avis sur cette source.

Vue 10 465 fois - Téléchargée 1 298 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

jjDai
Messages postés
291
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
13 mars 2015
-
Interressant, , et bien commenté, mais j'aurais quelques remarque:
- Séparé les styles dans un fichier CSS permettrait faciliter le code, voir le html aussi (via un template).
- Personnellement je met un "<?php" au début un "?>" à la fin de mon fichier et le reste est construit et envoyer par via templates, au pire par des "echo". Si je dois ajouter un "?> blabla<?php" pour insérer du html c'est qu'il y un problème, car ça rend la lecture très dificile (mais ça n'engage que moi).

- Important : la fonction télécharger ne fonctionne pas correctement, le fichier Zip ne restitue pas l'arborescence des répertoires, je pense qu'il faut donner le nom relatif du fichier (dossierRacine/dossier/../nom fuFichier) au moment de la constitution du fichier.
JJDAI
astro53
Messages postés
48
Date d'inscription
jeudi 18 octobre 2007
Statut
Membre
Dernière intervention
5 août 2009
-
Salut Nementon,

Je suis moi meme autodidacte mais je n ai pas beaucoup de temps pour apprendre et developpez.
J ai lu ton script en grande partie qui est tres interessant. Je reprendrais les memes paroles que JJDAI dans le fait que la page devrait etre separee au niveaux js css et meme pour les functions et class php.
Pour le template je n ai rien a dire a toi de voir...
Aussi meme si ca te parait inutile je vois que beaucoup de function non aucun commentaire ou sont trop peu expliquer. Alors je te conseillerais de rajouter des commentaires meme pour les functions drop ou delete.
Sur ce Merci pour le lien sur le tutoriel, ca m interesse beaucoup...J'ai encore beaucoup a apprendre...
A bientot
Astro
cs_Nementon
Messages postés
21
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
25 mai 2010
-
Bonjours, merci pour vos commentaires, je prend note, effectivement la fonction telecharger() pour des dossier a quelques petits ratés, je pense plutot que le probleme viens de ma fonction explorer() (utiliser pour recuperer la liste des fichiers a zipper) qui n'est pas asser devellopée, je vais donc la retravaillé =p
J'en profiterai pour rajouter aussi quelques commentaires dans le code sources, qui peuvent manquer comme Astro53 la bien remarqué.
Je refléchirai a la l'utilisation d'un template et l'exportation des fichier css/js, mais je pense que je resterai sur ma structure de base, bien qu'il est clair que les css/js "surchage" le code, je vise pour but finale de ce script, un outils de gestion légé a gardé sous la main, pour depanner si l'occasion se présente, d'ou l'envit d'une forte et simple portabilité se resument en un script.

D'ailleurs en y pensant, une fois que tous mes objectifs fixés pour le moment seront atteints, je rajouterai bien un petit web ftp en plus :p
cs_aKheNathOn
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012
-
Bonjour Nementon,

En tant qu'autodidacte tu te débrouilles très bien, tu as documenté ton code, les fonctions sont bien découpées, le hic c'est que tout est dans un seul fichier.

J'adhère au principe si c'est un fichier redistribuable, pas besoin de 200 fichiers à distribuer et placer sur le serveur, mais la source doit obligatoirement être faite de plusieurs fichiers chaque fichier ayant spécifiquement une fonction, sinon c'est un peu compliqué à faire évoluer, et même à relire.
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
12 -
Salut,

Comme à mon habitude, je n'ai pas regardé la source en détails. Par contre, comme il s'agit d'une Nième source qui liste des fichiers et des répertoires, j'ai voulu savoir comment tu parcourais les fichiers.
Et grosse déception, tu fais encore du PHP3 avec readdir() et opendir().
Je ne peux que te recommander, surtout pour une source que tu revandiqques être PHP5, d'utiliser les itérateurs et les filtres qui te permettront d'obtenir du code encore plus concis, clair et facile à maintenir.
Je vais même oser citer en exemple ma source qui fait ça, je pense, très proprement : ta source apporte des fonctionnalités très intéressantes (de ce que j'ai vu dans le descriptif ^^ ), c'est pourquoi je pense qu'en utilisant ma source comme base pour le listing, tu t'épargnerais une couche du travail ;)
=> http://www.phpcs.com/codes/LISTING-REPERTOIRE-AVEC-FILTRES_45125.aspx

En plus, ta syntaxe de readdir() n'est pas correcte : je t'invite à consulter la documentation de PHP pour voir comment utiliser correctement cette fonction.

Bonne continuation !

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.