Aller au contenu

[résolu] Ftp : Questions et sécurité


dj2d

Messages recommandés

Salut à tous !

je poste ce message car je suis complètement perdu ..

Je vends des ebooks sur internet,

Envoyer le fichier par mail à chacun de mes clients et long, et aussi ch**nt..

Je voudrais donc le mettre sur ftp, mais de sorte à ce que seul mon client puisse l'utiliser, et le télécharger mais pas plus d'une fois .

Je n'ai rien trouvé de similaire sur internet, c'est à désespérer :(

Comment puis-je faire? Un mot de passe qui soit généré automatiquement et qui se périme? Dans ce cas, comment savoir si mon client a bien téléchargé le fichier? Ou moi même qui créé le mot de passe, c'est pas génant..

Un lien qui se périme aussi au bout d'un certain temps?

D'avance merci si vous m'éclairez !

Ps : Je ne suis pas très calé en php/js ou autres, si vous pouvez détailler :) (Suis resté sur le basique html lol :))

Lien vers le commentaire
Partager sur d’autres sites

Tu génères en automatique un compte ftp qui n'a accès qu'au fichier à télécharger, et tu lui mets un quota de la taille du fichier. Faut que tu suportes le Resume par contre, sinon c'est risqué ^^

Après, comment ... ca dépend de ton serveur ftp, de si tu veux les créer à la main les comptes, etc :)

Lien vers le commentaire
Partager sur d’autres sites

Tu génères en automatique un compte ftp qui n'a accès qu'au fichier à télécharger, et tu lui mets un quota de la taille du fichier. Faut que tu suportes le Resume par contre, sinon c'est risqué ^^

Après, comment ... ca dépend de ton serveur ftp, de si tu veux les créer à la main les comptes, etc :)

Merci de la réponse :)

On m'a parlé aussi de scripts php pour créer un lien unique par personne, j'envoi le lien à mon client, il le télécharge et le lien de sert plus.

Quelqu'un saurait m'expliquer comment procéder ?

En tous cas merci :chinois:

Lien vers le commentaire
Partager sur d’autres sites

Tu te sers de ta bd, en inserant dans une table le fichier voulu, avec l'identifiant ou en auto incrémentation, ou en le générant toi même. Cet identifiant te sert a créer ton lien.

Et dans ta page qui s'occupe du téléchargement, tu vérifies que ton identifiant existe, si il existe tu le supprimes ou tu le déclares périmé, et tu envoies le fichier.

Lien vers le commentaire
Partager sur d’autres sites

Tu te sers de ta bd, en inserant dans une table le fichier voulu, avec l'identifiant ou en auto incrémentation, ou en le générant toi même. Cet identifiant te sert a créer ton lien.

Et dans ta page qui s'occupe du téléchargement, tu vérifies que ton identifiant existe, si il existe tu le supprimes ou tu le déclares périmé, et tu envoies le fichier.

Merci, j'ai compris le principe, mais en application, saurais-tu me montrer (Si ça ne te déranges pas bien sûr, sinon laisse :ouioui:)

Merki encore :chinois:

Lien vers le commentaire
Partager sur d’autres sites

exemple sans verif d'erreurs, d'injection sql, tout ca par contre :chinois:

j'ai créer 2 tables

CREATE TABLE `test_dj2d_link` (
 `id` int(11) NOT NULL auto_increment,
 `fichier` int(11) NOT NULL,
 `client` int(11) NOT NULL,
 `perime` tinyint(1) NOT NULL default '0',
 PRIMARY KEY  (`id`)
);

CREATE TABLE `test_dj2d_fichier` (
 `id` int(11) NOT NULL auto_increment,
 `filename` text NOT NULL,
 `chemin` text NOT NULL,
 PRIMARY KEY  (`id`)
);

la table fichier contient en fait le nom du fichier que tu veux voir apparaitre lors du telechargement, et chemin est le chemin vers le fichier, pour le serveur.

dans la table link, fichier est l'identifiant de la ligne correspondante de mon autre table, client est l'id de ton client (si tu as une table clients bien sur ^^)

Dans matable fichier, j'ai un fichier bidon

INSERT INTO `test_dj2d_fichier` VALUES (1, 'oh_my_god', 'logo.gif');

qui a l'identifiant 1

Si un client veux le telecharger, pour lui afficher le lien tu fais un petit

<?php
$host="localhost";
$user="root";
$pass="";
$base="temp";

$connect=mysql_connect($host,$user,$pass);
mysql_select_db($base, $connect);

$id_du_fichier = 1;
$id_de_mon_client = 1234;


$sql = "INSERT INTO test_dj2d_link(fichier,client) VALUES (" . $id_du_fichier . "," . $id_de_mon_client . ")";
$res = mysql_query($sql) or die('erreur sql<br>'.$sql.'<br>'.mysql_error());

echo "http://www.barbatruc.zzz/telechargement.php?file=" . mysql_insert_id();
?>

Et dans mon fichier telechargement.php j'ai

<?php

$host="localhost";
$user="root";
$pass="";
$base="temp";



$connect=mysql_connect($host,$user,$pass);
mysql_select_db($base, $connect);

$sql = "UPDATE test_dj2d_link SET perime = 1 WHERE perime = 0 AND id = " . $_GET["file"] . " LIMIT 1";
$res = mysql_query($sql) or die('erreur sql<br>'.$sql.'<br>'.mysql_error());

if( mysql_affected_rows() == 1 )
{
	$sql = "SELECT filename, chemin FROM test_dj2d_link AS t1, test_dj2d_fichier AS t2 WHERE t1.fichier = t2.id AND t1.id = " . $_GET["file"] . " LIMIT 1";
	$res = mysql_query($sql) or die('erreur sql<br>'.$sql.'<br>'.mysql_error());

	if( mysql_num_rows($res) == 1 )
	{
		$row = mysql_fetch_row($res);
		header("Content-disposition: attachment; filename=" . $row[0] );
		header("Content-type: application/octet-stream" );

		readfile($row[1]);
		exit;

	} else {
		// Le fichier associé a cet id n existe pas dans la bd
	}
} else {
	// Le fichier a déjà été téléchargé
}

?>

Barbazutt, il y a eu un pépin !

Apres avoir creer le lien pour telecharger, si je vais, dans mon cas, sur http://www.barbatruc.zzz/telechargement.php?file=1, j'aurai un téléchargement du fichier "oh_my_god", qui n'est autre que le fichier logo.gif de mon serveur. Et si j'y retourne, j'ai "Barbazutt, il y a eu un pépin !" qui s'affiche.

Voilà, un petit exemple, vraiment petit, pour te donner une idée :ouioui:

Lien vers le commentaire
Partager sur d’autres sites

Ha..?

Sinon, pour les fénéants, et débutants, y'a pas des scripts dans le style java, qui permet de faire ça?

A la limite si le client ne finit pas de DL, il peut me recontacter pour avoir un nouveau lien.

Merci de ta précision en tous cas

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...