begin process at 2012 05 27 20:46:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PASSE

UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PASSE


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :ftp, upload, fichier, passe, login Niveau :Débutant Date de création :19/10/2011 Date de mise à jour :25/10/2011 10:40:57 Vu :3 297

Auteur : raizzo

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

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

  • <?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
  • }
  • ?>
<?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.


 Historique

25 octobre 2011 10:40:57 :
Mise à jour du code. Ajout de l'authentification par cookies. Ajout d'un bouton de déconnexion.

 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151
TROUVER LES DOUBLONS DANS UNE LISTE DE FICHIERS par soobook

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture A-ANNONCES VERSION PHP 5 par cod57
GESTION FTP (CLASSE) par shevabam
Source avec Zip Source avec une capture UPLOADER DE FICHIER PHP - AVEC GESTION DES FICHIERS par DiabloBros
Source avec Zip Source avec une capture GESTION DE DOCUMENTS par awaclid
Source avec Zip Source avec une capture UTILISATION DU COMPOSANT MULTIPOWUPLOAD par crazygogo

Commentaires et avis

Commentaire de cod57 le 21/10/2011 15:30:25

bonjour

le fait de devoir se connecter à chaque envoi ... tu devrais songer à faire évoluer ça. Tu affiches l'ip mais elle n'est pas 'enregistré'.

++

Commentaire de raizzo le 21/10/2011 16:35:26

Oui je vais le modifier avec la mise ne place de Cookies de connexion.

Commentaire de TychoBrahe le 22/10/2011 02:18:20

Salut,

Quelques points qui me choquent un peu :

"Attention le mot de passe et le login doivent être chiffré en MD5."
Hachés, pas chiffrés. Mais au moins tu n'as pas dit crypté, c'est un bon début et mérite donc de l'indulgence. Quelques infos à ce sujet : [url=http://blog.uraniborg.net/post/Chiffrement%2C-hachage-et-compagnie-%3A-disambiguation]Chiffrement, hachage et compagnie : disambiguation[/url].

"FTP Service"
Désolé, mais tu fais du HTTP et non du FTP.

$login = (isset($_POST["login"])) ? $_POST["login"] : "";
Useless au possible, à supprimer, et pareil pour son collègue.

get_magic_quotes_gpc(), addslashes()
Idem, strictement aucun intérêt ici.

Sinon, la comparaison login/password en dur c'est vraiment pas cool m'enfin bon...



$dossier = 'chemin_du_dossier';
$fichier = basename($_FILES['fichier']['name']);
move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)

/!\ ATTENTION /!\
Faille de sécurité monstrueuse ! Ya pas a dire, quand on ne connais pas bien tous les risques, il ne faut surtout jamais faire de script d'upload soi même, c'est quelque chose d'extrèmement sensible. Là avec ton truc j'upload n'importe quoi n'importe où, y compris des fichiers malicieux et dans des répertoires différentes du répertoire cible. Juste 3 conseils vite fait :
1. Ne jamais laisser l'utilisateur choisir le nom du fichier, tu dois le générer toi même (merci uniqid() par exemple). Ainsi on évite les fichiers dans les mauvais répertoires (../toto.lol), la collision de noms et autres trucs.
2. Ne jamais donner accès aux fichiers uploadés. Et oui, même si le nom est auto-généré, certains serveurs ont de jolies failles (certaines versions de nginx par exemple) qui permettent de quand même interpréter n'importe quoi comme du php ou autre. Si on veux publier les fichiers uploadés, il est donc obligatoire de compléter ce script avec un script permettant d'accéder aux fichiers (prudence également sur ce nouveau script, c'est également très sensible niveau sécurité).
3. Ce n'est pas le cas ici, mais toute tentative de vérification du type de fichier, que ce soit par extension ou type mime, est vouée à l'échec. Il est donc totalement inutile d'essayer, il est préférable d'admettre son impuissance et traiter tous les fichiers comme potentiellement malicieux.


Bref, conclusion finale :
En lui même le code est pas trop mal pour un débutant (ya bien pire), mais le sujet est bien trop complexe et demande une véritable attention. Du coup ton code est une faille de sécurité avec un potentiel destructeur monumental, ilne faut donc surtout pas l'utiliser. Amis débutants, ne faites jamais de scripts d'upload et ne prenez jamais le premier trouvé sur internet ! (ni le second d'ailleurs... ni aucun autre qui ne soit pas écrit par un pro et que vous ne savez pas parfaitement utiliser et adapter en fonction des cas).

Commentaire de TychoBrahe le 22/10/2011 02:21:36

Oops, j'ai oublié un autre point important.

if ($login != "098f6bcd4621d373cade4e832627b4f6")
[...]
if ($pass != "098f6bcd4621d373cade4e832627b4f6")

Alors ça, jamais, jamais et jamais ! Il ne faut surtout pas utiliser les opérateurs == et != pour comparer deux chaînes de caractères, surtout dans un cas comme celui là. La raison ? Un cast qui peut être dévastateur et induit ici une faille de sécurité. Plus d'info sur la dernière partie de ce billet :
http://blog.uraniborg.net/post/Quelques-%C3%A9tranget%C3%A9s-de-PHP

Commentaire de cod57 le 22/10/2011 10:39:35

bonjour
@En lui même le code est pas trop mal pour un débutant (ya bien pire)...
@TychoBrahe d'accord avec toi en espérant qu'il poste un code plus sécurisé


tu devrais séparé le code, quelques idéees :

1/Un formulaireadmin.html saisir login + password <form action='traitement.php' method="post"> ...

2/tu vérifies dans traitement.php les identifiants
(depuis une base ou un fichier caché dans un répertoire protégé par .htaccess)

si ok tu crées une variable $_SESSION['client']=true
si true===$_SESSION['client'] tu affiches le formulaire d'upload
echo $form;

sinon retour à formulaireadmin.html par la fonction header()
header('Location: formulaireadmin.html');exit;

il faut aussi faire une fonction de déconnection est un bouton se déconnecter dans traitement.php (et ou) par un système de cookies une déconnection automatique au bout de x secondes

4/$form pointe vers upload.php
qui contient la function upload avec tout les trucs habituels de securité

en vrac + ceux que j'oublie
protection acces de $form sur upload par token ou captcha
nettoyage du 'name' par un un filtre (preg_replace)
verification du mine
verification de l'extension du fichier envoyé + tableau des extensions autorisées
verification du repertoire et du déplacement is_uploaded()
verification de l'existence du fichier (file_exists)dans le dit repertoire (contre les doublons)
deplacement vers une arborescence inferieur ...
exemple :
./titi/toto/traitement.php
./titi/toto/upload.php
tu deplaces les fichiers vers ./images/
...
stockage eventuelle dans mysql infos
date heure : membre : depuis ip : déplace fichier vers : x

si l'upload
$_POST=$_GET=$_FILES=array();
header('Location: merci.html');exit;
tu affiches les fichiers avec de l'url rewriting
et un bouton retour vers traitement.php

sinon
header('Location: byebye.php');exit;

byebye.php
<?php
session_start();
$_POST=$_GET=$_FILES=array();
unset_session();
destroy_session();
header('Location: http://monsite.fr/formulaireadmin.html');exit;
?>

++


Commentaire de emilia123 le 24/10/2011 08:31:04

Bonjour,

@TychoBrahe : pourquoi indiques tu :
---------------------------------------
$login = (isset($_POST["login"])) ? $_POST["login"] : "";
Useless au possible, à supprimer, et pareil pour son collègue.
---------------------------------------
Inutile? si ca n'est pas fait et que le serveur est configuré pour afficher les warning, ca affichera un joli petit message d'avertissement... c'est pas top pour l'internaute.

Comme le propose COD57, il serait intéressant de découper le script en plusieurs parties :
1) identification avec mise en session et redirection vers upload si OK,
2) upload si l'identification est OK

Concernant le script actuel, il y a un petit pb avec les "echo" d'erreur (ligne 18, 26, 38 et 42).
Dans l'état actuel, ils sont affichés avant le début du code HTML, ce qui n'est pas correct.
Il faudrait enregistrer le message dans une variable et l'afficher ensuite dans le formulaire.
Pense aussi à ne pas utiliser de javascript et d'"alert" pour ce genre de message. Un joli petit cadre au dessus du formulaire fait beaucoup plus propre (et pro) qu'une vilaine alerte javascript.

Bon courage pour la suite.

EM.

Commentaire de raizzo le 24/10/2011 15:08:24

Merci à tous pour vos commentaire d'aide.
Je vais modifier le code pour qu'il soit plus correct.

Commentaire de TychoBrahe le 24/10/2011 15:24:10

@emilia123 :
"Inutile? si ca n'est pas fait et que le serveur est configuré pour afficher les warning, ca affichera un joli petit message d'avertissement... c'est pas top pour l'internaute."
Tu as tort. Juste après ceci, il test à nouveau ces variables à l'aide de [url=http://fr.php.net/manual/fr/function.empty.php]empty()[/url]. Comme tu peux le constater dans la documentation, empty() considère une variable non déclarée comme vide et du coup n'affiche aucun avertissement, pas même une notice. Tu peux tester si tu doutes de ce comportement. Bref, vu que empty() remplis le rôle de isset() en plus de tester autre chose, il est parfaitement inutile de faire ce isset().

Un autre argument que j'ai contre cette affectation (même après test) est plus d'ordre sémantique. Le fait que la valeur se trouve dans la variable $_POST (ou $_GET) est porteur de sens : on sais que cette donnée est fournie par l'utilisateur. En utilisant une variable perso on perd cette signification et il faut se souvenir soi même de cette provenance. Vu qu'il ne faut *jamais* se fier à une donnée fournie par l'utilisateur, je trouve dangereux ce genre de choses qui peut faire oublier au développeur la potentielle dangerosité de que contient la variable.

Commentaire de emilia123 le 24/10/2011 16:38:15

@TychoBrahe : ok je comprend maintenant ce que tu voulais dire par "inutile", mais du coup ta réponse était incomplète :)

J'avais compris que c'était uniquement le "isset" qui était inutile et donc à supprimer (vu que tout le reste du code utilise $login et $pass).

Si on ne supprimait que le isset en laissant l'assignation qui est en place, on aurait un warning pour css lignes si il n'y avait pas de login/pass à traiter.

Mais en effet si on supprime complètement l'assignation et qu'on remplace partout dans le code les variables d'origine, le "empty" suffit.

EM.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

upload [ par nairolf_88 ] bonjour &#224; tous je suis entrain de developper un script d'upload par ftp en php dont voici le code : ---BOF--- &lt;? if(isset($_POST["upload"]) UPLOAD taille illimité [ par batmanu ] Bonjour,je cherche &#224; faire un uploader en php.Un formulaire de base en html qui poste au fichier php proprement dit.Je veux uploader sur mon serv FTP - Accès en UPLOAD & DOWNLOAD [ par NutsGuy ] Voila, je voudrais ouvrir un document provenant d'un FTP et&nbsp;lister son contenu sur un page php. Sur la source fournie, il n'y a que la partie con upload gro fichier [ par MisterJAD ] Bonjour à tous,j'ai besoin d'uploader via php et non via un logiciel ftp, des gros fichiers (max 10mo) sur le serveur.... mais meme lorsque je faitini Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Time out [ par ekinoks ] Salut !alors voila j'est un petit problemme. pour ne pas avoir de time out je pencé que de se conecté et se deconecté plusiseur foi sur des duré de mo upload ftp [ par iHoss ] J'ai un problème d'upload ftp :la connexion se fait comme prévue mais le fichier n'est pas uploadé.Ceci est le code : &lt;?$fichier = $_FILES['userfil Question sur l'upload en FTP (urgent) [ par fonetiklilian ] Bonjour à tous... J'ai un site hebergé chez lycos. Je n'ai donc pas accès au php.ini. J'ai un peu de mal avec toutes les sources que je trouve, car


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales