[RESOLU] masquer l'URL

Petit nouveau ! | 7 Messages

13 oct. 2015, 15:05

Bonjour, Mes abonnés, après login et mdp, peuvent télécharger des fichiers sous forme de elearning, le problème c'est qu'ils reçoivent l'url complète qui peur être stockées ou cédées, gros soucis. Je voudrais que l'url deviennent :www.monsite.be/download.php?id=12 ou xx.
J'utilise pour cela:
<?php 
if(!empty($_GET["id"])){
try
{
	$db = new PDO('mysql:host=mysql.monsite.be;dbname=abihhbe','william','csxxxxx');
	$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
	$msg='ERREUR PDO dans' .$e->getFile(). 'L.' .$e->getLine(). ':' .$e->getMessage();
	die($msg);
}
$sql = 'SELECT contenu FROM elearning WHERE id='.$_GET["id"];
$req = $db->query($sql);
if($d = $req->fetch(PDO::FETCH_OBJ)){
if($d ){
        header("Content-type: application/force-download");
        header("Content-Length: ".filesize($d->contenu));
        header("Content-Disposition: attachment; filename=".basename($d->contenu));
        header("Cache-Control: no-cache, must-revalidate");
		readfile($d->contenu);
}		
    }
	}
	?>
ça fonctionne mais le fichier est stocké dans les téléchargements de l'abonné sous forme de file:///C:/Users/jean/Downloads/monfichier.html ce qui n'est pas le but.
Je voudrais donc que le serveur envoie le fichier mais que l'url reste http://www.monsite.be/download.php?id=15
J'espère avoir été clair. quelqu'un peut-il m'aider?
D'avance merci
William539

Mammouth du PHP | 737 Messages

13 oct. 2015, 23:11

Bonsoir,

J'veux bien vous aider mais j'ai pas tout compris à vrai dire.

Mega
;)
Dyslexics are teople poo

Petit nouveau ! | 7 Messages

14 oct. 2015, 09:22

Déjà merci de votre réponse rapide. Je vous laisse mon email pour des renseignements complémentaire, je comprends que ma demande est assez confuse. Le but est de dissimuler le vrai url pour celui qui le reçoit!
Bien à vous
[email protected] :?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8471 Messages

14 oct. 2015, 09:46

Bonjour,

Pourquoi ne pas fournir les renseignements complémentaires ici ?
C'est le principe même d'un forum et son principal avantage où on peut être plusieurs à intervenir pour trouver une solution. :-)

De ce que je comprends, l'url est bonne mais c'est le nom du fichier qui est incorrecte une fois téléchargé c'est ça ?
Quand tout le reste a échoué, lisez le mode d'emploi...

claude539
Invité n'ayant pas de compte PHPfrance

14 oct. 2015, 21:45

bonsoir, pas de problème à rester sur le forum que je consulte régulièrement. Je reprends ma demande d'aide autrement.
L'accès aux elearnings, cours de formation, est protégé par login et mdp. je clique sur un lien et la page demandée s'affiche avec l'url visible dans la barre d'adresse. on copie cette adresse et on la communique à qui veut ce qui est dommageable. Il faudrait donc que la page s'affiche mais que l'url ne soit pas réutilisable du genre http://www.monsite.be/download.php?id=15.
Avec ma façon de procédé expliquée avant, l'adresse url n'est pas copiable mais le résultat n'est pas satisfaisant car le fichier est chargé chez l'utilisateur dans les téléchargements et donc réutilisable. Me suis-je bien expliqué? une aide est nécessaire.
Pour accéder à la bdd ou sont stockés les url de fichier, j'utilise un formulaire à cases à cocher, bouton radio, qui appelle download.php qui lui sélectionne le fichier suivant le n° id du formulaire, pas de soucis jusque là.
Bien à Vous

Mammouth du PHP | 1341 Messages

14 oct. 2015, 22:05

il n'y a aucun moyen d'empecher quelqu'un qui demande une url par son navigateur, et sauver la ressource ensuite.
ce qui peut être emebetant, c'est si quelqu'un qui a fait la démarche pour avoir accès à une ressource, obtent une url et partage cette url avec d'autres, et ces autres personnes peuvent accèder à la ressource. il faut donc verifier dans download.php que la personne a les droits nécessaires, mais ensuite; on n'a plus le controle de ce qui est fait.

Mammouth du PHP | 737 Messages

15 oct. 2015, 09:56

Bonjour,

C'est pour éviter que les membres se partagent les docs, c'est bien ça ? C'est vrai que l'idéal c'est la gestion par droits.
Maintenant pourquoi ne pas gérer la chose avec une sorte de clef de validation ? ou mieux de gérer cela sans id en GET mais en POST
Du coup on appelle le fichier de download seul.
J'avais fait quelque chose de la sorte et ça marchait bien en méthode POST.

Mega
;)
Dyslexics are teople poo

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8471 Messages

15 oct. 2015, 11:31

le résultat n'est pas satisfaisant car le fichier est chargé chez l'utilisateur dans les téléchargements et donc réutilisable.
De quels fichiers est-il question ?
- De tes pages HTML (avec CSS, images, js...) ?
- Ou de fichier type PDF ?

Si il s'agit de fichiers PDF, il y a 2 solutions :
- Mettre des DRM, mais ça va te couter cher et c'est une galère pour tes clients/utilisateurs
- Faire du tatouage/watermarking, c'est à dire pour chaque PDF envoyé tu ajoute dans le document des infos sur l'utilisateur (nom/prénom/email) pour limiter le fait qu'il le partage largement.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

15 oct. 2015, 14:26

à Megadeth: pourrais-je en savoir plus sur la solution avec POST? J'avais essayé de remplacé GET par POST dans le deux fichiers (html et php, mais ça n'a pas marché.

à Arthur: il s'agit de fichier HTML avec CSS images, js; c'est en fait des genres de videos faites avec Captivate6

Mammouth du PHP | 737 Messages

15 oct. 2015, 14:56

Re,

L'idée c'est de remplacer :
http://www.monsite.be/download.php?id=15
par
http://www.monsite.be/download.php

Si aucune variable n'est postée, on a un message d'erreur sinon la variable id est postée, elle a la valeur 15 et je peux traiter cette donnée.

Dans le formulaire il faut changer la method GET par POST ou la définir si ce n'était pas le cas.
Dans la page de download on récupère l'id posté.
Il faut effectivement changer les GET en POST mais pas que, ça dépend du code, si on peut avoir le code ;)

Mega
;)
Dyslexics are teople poo

Petit nouveau ! | 7 Messages

15 oct. 2015, 18:39

à Mega
En fait c'est un formulaire tout simple en HTML pour tester tel que:
<body>
<h1>LISTE DES ELEARNINGS</h1>

<form name="monformulaire" method="get" action="download02.php" >

<input type="radio" name="id" value="1">La bactérie<BR /><BR />
<input type="radio" name="id" value="2">La Grippe<BR /><BR />
<input type="radio" name="id" value="3">La Gale<BR /><BR />
<input type="radio" name="id" value="4">Hygiène corporelle<BR /><BR />
<input type="radio" name="id" value="5">Les précautions standards<BR /><BR />
<input type="submit" value="Envoyer">
</form>
</body>
Le formulaire en php est déjà sur le forum

BàV

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 oct. 2015, 20:30

Si ton soucis, c'est que l'utilisateur télécharge le document, je pense qu'il faut que tu revois le principe même du web.
Quand tu navigues sur internet (par exemple, sur cette page), elle est d'abord téléchargée sur ton poste, puis affichée sur ton poste.
Du coup, si tu cherches, tu la retrouveras.

Après, si tu proposes toi même le téléchargement d'une ressource de ton site (comme le montre ton premier code), tu ne pourras pas contrôler ce que l'utilisateur en fait.
Les seules solutions sont celles proposées par @rthur : les DRM pour bloquer l'ouverture du fichier téléchargé, ou le watermarking pour le responsabiliser sur la diffusion de ce contenu téléchargé.

Mais l'information importante à retenir, c'est que s'il peux l'ouvrir à un instant T, il l'a déjà téléchargé localement.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer