Uploader des fichier dansun dossier, sécurisé avec mot de passe

Contenu du snippet

Petit script PHP sans aucune prétention qui permet d'uploader des fichier de tout type dans un dossier donné.
Vous pouvez modifier le mot de passe et le login (par défaut "test" pour les deux).
Attention le mot de passe et le login doivent être Hashé en MD5.

Source / Exemple :


<?php
/* Petit FTP sécurisé en php sans base de donnée par le site raizzo.fr*/
			///////////////////////
			///  Configuration  ///
			///////////////////////
			//Dans les variables login et pass, entrer la valeur Hashé en md5 du login et du pass que vous voulez mettre (par default md5 de TEST)
			//Dans la variable dossier, entrer le chemin ou vous souhaitez que vos fichier soit uploadé. (par default /)
			$utilisateur = "098f6bcd4621d373cade4e832627b4f6";
			$mdp = "098f6bcd4621d373cade4e832627b4f6";
			$dossier = "";
			//le logo du site doit être nomé logo.png et ce trouver a la racine du FTP
			//fin de la configuration

// Récupération des données posté en POST
$login = (isset($_POST["login"])) ? $_POST["login"] : "";
$pass = (isset($_POST["pass"])) ? $_POST["pass"] : "";
$deconnexion = (isset($_POST["deconnexion"])) ? $_POST["deconnexion"] : "";
// Récupération des données des cookies
$login_cookie = (isset($_COOKIE["login"])) ? $_COOKIE["login"] : "";
$pass_cookie = (isset($_COOKIE["pass"])) ? $_COOKIE["pass"] : "";
//si la déconnexion existe on déconnect
if (!empty($deconnexion))
{
setcookie("login","", time()-60*60*24*30); //suppression des cookies
setcookie("pass","", time()-60*60*24*30);
header('Location: index.php'); //puis redirection vers l'index
}
//si les données en POST existes
if (!empty($login) && !empty($pass)) 
{
	// Sécurise le login fourni, que magic_quotes_gpc soit sur on ou off
	if( !get_magic_quotes_gpc() )
	{
		$login = addslashes($login);
		$pass = addslashes($pass);
	}
	$login = md5($login); //on Hash le login
	$pass = md5($pass); //on Hash le pass
	setcookie("login", $login, time()+60*60*24*30);
	setcookie("pass", $pass, time()+60*60*24*30);
	header('Location: index.php'); //puis redirection vers l'index
}
// Sinon on regarde si les cookies d'authentification sont présents
elseif (!empty($login_cookie) && !empty($pass_cookie))
{
	// Sécurise le login et le pass fourni, que magic_quotes_gpc soit sur on ou off
	if( !get_magic_quotes_gpc() )
	{
		$login_cookie = addslashes($login_cookie);
		$pass_cookie = addslashes($pass_cookie);
	}
	if ($login_cookie != $utilisateur || $pass_cookie != $mdp) // vérification du login et du pass si mauvais, on affiche la page suivante:
	{	
		echo 
		'
		<html>
		<head>
		<title>FTP Service ERREUR!</title> 
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<script type="text/javascript">
		function verif_form() 
		{
			if (document.forms.identification.login.value == "") 
			{
				alert("Veuillez rentrer votre Nom.");
				return(false);
			} 	
			else if (document.forms.identification.pass.value == "")
			{
				alert("Veuillez rentrer votre mot de passe.");
				return(false);
			} 
			else 
			{
			return(true);
			}
		}
		</script>
		</head>
		<body bgcolor="#EADD31">
		<div align="left" style="position:absolute ">
		<img src="logo.png" border="" />
		</div>
		<br />
		<br />
		<br />
		<br />
		<table width="75%" cellpadding="4" cellspacing="1" border="1" align="center">
		  <tr>
			<td class="row1"><table border="0" cellpadding="3" cellspacing="1" width="100%">
				  <tr>
					<td colspan="2" align="center">
					<br />
					<div align="center">
					<b><font face="Verdana" size="3" color="#F51000"><u>Bienvenue sur le Service FTP du site</u></font></b>
					<br />
					<br />
					Problème de connexion: Utilisateur ou mot de passe inconnu
					<br />
					<br />
					<form name="identification" action="index.php" method="post" enctype="multipart/form-data" onSubmit="return verif_form()">
					Utilisateur<br />
					<input type="text" name="login" size="16"><br /><br />
					Mot de passe<br />
					<input type="text" name="pass" size="16"><br /><br />
					<input type="submit" name="envoyer" value="Connexion">
					</form> 
					</div>
					<br />
					</td>
				  </tr>
			</td>
		  </tr>
		</table>
		</body>
		</html>
		';
	}		
	else
	{
		// Si tout est bon, on affiche le formulaire d'upload et on autorise à commencer l'upload
		echo '
		<html>
		<head>
		<title>FTP Service</title> 
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		</head>
		<body bgcolor="#EADD31">
		<div align="left" style="position:absolute ">
		<img src="logo.png" border="" />
		</div>
		<br />
		<br />
		<br />
		<br />
		<table width="75%" cellpadding="4" cellspacing="1" border="1" align="center">
		  <tr>
			<td class="row1"><table border="0" cellpadding="3" cellspacing="1" width="100%">
				  <tr>
					<td colspan="2" align="center">
					<br />
					<div align="center">
					<b><font face="Verdana" size="3" color="#F51000"><u>Connexion autorisée, envoi du fichier</u></font></b>
					<br />
					<br />
					<form name="upload" action="index.php" method="post" enctype="multipart/form-data" onSubmit="return verif_form()">
					<input type="file" name="fichier"><br />
					<input type="submit" name="envoyer" value="Envoyer le fichier">
					</form>
					<form name="deconnexion" action="index.php" method="post" enctype="multipart/form-data" onSubmit="return verif_form()">
					<input type="submit" name="deconnexion" value="Déconnexion">
					</form>
					</div>
					<br />
					</td>
				  </tr>
			</td>
		  </tr>
		</table>
		</body>
		</html>
		';
		if(isset($_FILES['fichier']))
		{ 
			$fichier = basename($_FILES['fichier']['name']); // Commencement de l'upload
			//Si la fonction renvoie TRUE, c'est que ça a fonctionné
			if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) 
			{
				echo "<SCRIPT language=javascript>alert('Upload effectué avec succès')</SCRIPT>";  //affiche si l'upload a marché
			}
			else 
			{
				echo "<SCRIPT language=javascript>alert('Echec de l\'upload !')</SCRIPT>"; //Si erreur dans l'upload on l'affiche
			}
		}
	}
}
//sinon formulaire d'identification classique du départ
else
{
?>
<html>
<head>
<title>FTP Service</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function verif_form() {
	if (document.forms.identification.login.value == '') {
		alert("Veuillez rentrer votre Nom.");
		return(false);
	} else if (document.forms.identification.pass.value == '') {
		alert("Veuillez rentrer votre mot de passe.");
		return(false);
	} else {
	return(true);
	}
}
</script>
</head>
<body bgcolor="#EADD31">
<div align="left" style="position:absolute ">
<img src="logo.png" border="" />
</div>
<br />
<br />
<br />
<br />
<table width="75%" cellpadding="4" cellspacing="1" border="1" align="center">
  <tr>
	<td class="row1"><table border="0" cellpadding="3" cellspacing="1" width="100%">
		  <tr>
			<td colspan="2" align="center">
			<br />
			<div align='center'>
			<b><font face="Verdana" size="3" color="#F51000"><u>Bienvenue sur le Service FTP du site</u></font></b>
			<br />
			<?php //on retoune sur PHP pour ne pas que le client puissent voir le code suivant:
			echo "votre IP est enregistré: "; 
			$ip = $_SERVER["REMOTE_ADDR"];
			echo $ip; //bleuf aucune IP est sauvegardé, mais possibilité de le faire
			?>
			<br />
			<br />
			<br />
			<form name="identification" action="index.php" method="post" enctype="multipart/form-data" onSubmit="return verif_form()">
			Utilisateur<br />
			<input type="text" name="login" size="16"><br /><br />
			Mot de passe<br />
			<input type="text" name="pass" size="16"><br /><br />
			<input type="submit" name="envoyer" value="Connexion">
			</form> 
			</div>
			<br />
			</td>
		  </tr>
	</td>
  </tr>
</table>
</body>
</html>
<?php
}
?>

Conclusion :


Version 0.2 du script, toutes les remarques des commentaires si-dessous sont prisent en compte, pour faire avancé la source.

A voir également

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.