CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[php-sql] gestion de téléchargement

vivlahorde
vivlahorde
Niveau 10
13 novembre 2007 à 18:35:14

:salut:

J´aimerai mettre sur mon site un script anti-leech,pour eviter que des personnes mette les liens sur les blogs/forums. En fait il faudrait que les fichiers soit téléchargeable uniquement depuis le site.

Sachant qu´un simple htacces ou captcha n´irai pas. (c´est un site pour la psp,et cette console ne vois pas les htacces ou autres).

Donc j´ai rechercher sur le web un script anti leech,et finalement on ma dis d´utiliser un systeme d´id. Avec une page dl.php (par exemple) et d´utiliser ce code php:

==================================================
========

define(´CFG_SYSTEM_FILENAME´, $file); // $file etant le Nom du fichier pour le système
define(´CFG_URL_FILENAME´, $imagesource); // $imagesource etant l´adresse relative du fichier
define(´CFG_SEND_FILENAME´, CFG_SYSTEM_FILENAME);

//
// Constantes à ne pas modifier
//
define(´CFG_FILESIZE´, filesize(CFG_URL_FILENAME));
define(´CFG_FILE_MD5´, md5_file(CFG_SEND_FILENAME));
define(´CFG_DATE_FORMAT´, ´D, d M Y H:i:s´);

//
// Quelques éléments nécessaires
//
error_reporting(0);
ini_set(´zlib.output_compression´, 0);

/*

  • Les en têtes nécessaires
  • /

//
// Gestion du cache
//
header(´Pragma: public´);
header(´Last-Modified: ´.gmdate(CFG_DATE_FORMAT).´ GMT´);
header(´Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0´);

//
// Informations sur le contenu à envoyer
//
header(´Content-Tranfer-Encoding: none´);
header(´Content-Length: ´.CFG_FILESIZE);
header(´Content-MD5: ´.base64_encode(CFG_FILE_MD5));
header(´Content-Type: application/octetstream; name="´.CFG_URL_FILENAME.´"´);
header(´Content-Disposition: attachement; filename="´.CFG_SEND_FILENAME.´"´);

//
// Informations sur la réponse HTTP elle-même
//
header(´Date: ´.gmdate(CFG_DATE_FORMAT, time()).´ GMT´);
header(´Expires: ´.gmdate(CFG_DATE_FORMAT, time()+1).´ GMT´);
header(´Last-Modified: ´.gmdate(CFG_DATE_FORMAT, time()).´ GMT´);

/*

  • Envoi du fichier
  • /

readfile(CFG_URL_FILENAME);

==================================================
===

:d) Je ne fait pas encore de php,mais j´ai compris l´essentiel du code (sauf début,voir plus bas),par contre ce que je ne comprend pas,c´est ce qu´il faudra faire sur la base de donnée....

En fait il faudrait que je creer une table dans ma base de donnée avec par exemple deux champs: "id" et "lien". Et que je rajoute un attribut à chaque fois que je rajoutte un fichier en téléchargement!!!

Et sinon je ne comprend pas trop le début du code:

define(´CFG_SYSTEM_FILENAME´, $file); // $file etant le Nom du fichier pour le système
define(´CFG_URL_FILENAME´, $imagesource); // $imagesource etant l´adresse relative du fichier

file je peux laisser par défault à la limite.
par contre pour image source je met quoi? Parce que je n´ai pas trop compris le truc en fait. Vous pouvez m´expliquer :svp:

:merci:

Pseudo supprimé
Pseudo supprimé 13 novembre 2007 à 21:06:26

Tu ne pourrais pas te contenter d´utiliser le referee de la requête HTTP vers tes fichiers ?

deepblue
deepblue
Niveau 16
13 novembre 2007 à 21:32:25

Certains antivirus bloquent le referer (j´ai eu des problèmes sur mon site à cause de ça).

deepblue
deepblue
Niveau 16
14 novembre 2007 à 13:03:54

Tu peux déjà utiliser un htaccess qui bloquera les acces exterieurs pour certains types de fichiers. Je suis en train de chercher une solution en php dans la même idée que ton script mais bloquerai les acces externes.

vivlahorde
vivlahorde
Niveau 10
14 novembre 2007 à 13:37:24

En fait je ne peux pas utiliser de htacess car la psp ne les vois pas,elle ne peux pas acceder aux pages ayant un htacess.

et je ne peux pas creer une page .php pour chaques fichiers à télécharger vu qu´il y en a des centaines...

deepblue
deepblue
Niveau 16
14 novembre 2007 à 14:50:10

J´ai eu solution, a voir si c´est fonctionnelle avec le temps :

Infos : fichier présent sur le site geneweb.fr.

1-
http://www.geneweb.fr/aide-jv/prog/telecharger.php?iddir=0&file=fichier.html

Normalement, tu n´auras qu´une page blanche.

2- http://series-sources.com/simon/header.php

Au clic, tu devrais aussi avoir une page blanche (jusque là tout va bien).

3- http://www.geneweb.fr/aide-jv/prog/
Tu peux télécharger le fichier : passage obligatoire depuis l´index

Sources :
http://www.geneweb.fr/aide-jv/prog/php.php

CCL : pour télécharger le fichier, on est obligé de passer par une page de ton site (la c´est index.php) qui va créer une variable de session valable 1min qui aura pour effet d´attester que l´utilisateur arrive depuis ton site. Tout liens depuis l´exterieur seront donc inutilisable.

dnob700
dnob700
Niveau 10
14 novembre 2007 à 15:31:35

"En fait je ne peux pas utiliser de htacess car la psp ne les vois pas,elle ne peux pas acceder aux pages ayant un htacess. "

Un fichier .htaccess est géré entièrement au niveau du serveur et le client n´a pas besoin d´en entendre parler. PSP ou pas PSP, ça ne devrait rien changer.

vivlahorde
vivlahorde
Niveau 10
14 novembre 2007 à 18:33:03

merci pour le code je vais voir s´il marche correctement et si je peux m´en servir.

Par contre,lorsqu´on navigue avec la psp on ne peux pas acceder a une page htacces,je ne sais pas ce que ca fait puisque je n´ai pas le wifi donc je ne peux pas me conneceter au web avec la psp mais en tout cas on m´a confirmer que la psp ne pouvais pas le faire.
Et c´est valable pour les captcha apparement (puisqu´impossible de télécharger un fichier depuis les hebergeur de fichiers en ligne comme dl.free.fr,megaupload,rapidshare etc...)

vivlahorde
vivlahorde
Niveau 10
14 novembre 2007 à 19:04:03

le code ne marche pas,c´est dommage...

meme quand je vais a cette adresse:
http://www.geneweb.fr/aide-jv/prog/

je ne peux pas telecharge rle fichier,et j´ai mis le script sur mon site (en le modifiant bien évidemment) et ca me fait pareil

deepblue
deepblue
Niveau 16
14 novembre 2007 à 21:05:42

Tu as les cookies d´activés ?

vivlahorde
vivlahorde
Niveau 10
14 novembre 2007 à 22:03:22

ba oui

chez toi ca marche?

vivlahorde
vivlahorde
Niveau 10
14 novembre 2007 à 22:06:17

en fait j´ai compris,ce script ne marche que sous ie... moi je suis sous firefox c´est pour ca

deepblue
deepblue
Niveau 16
14 novembre 2007 à 22:09:06

...c´est indépendant du navigateur et ça fonctionne aussi sur ff...

vivlahorde
vivlahorde
Niveau 10
15 novembre 2007 à 07:24:20

je dois avoir un pb avec mon navigateur alors
c´est pas la première fois que j´ai des soucis comme ca,enfin bon le script a l´air vraiment bien,par contre est-ce qu´il marche avec des fichiers heberger sur un ftp? (et le script étant sur un autre site web)

deepblue
deepblue
Niveau 16
15 novembre 2007 à 08:14:11

les pages index.php, telecharger.php et readfile.php doit etre sur le meme domaine (c´est logique car ils gêrent un cookie commun). Le fichier à dl pourrait se trouver sur un server distant mais tu dois avoir php5 sur ton hébergement, cf les fonctions :
http://fr2.php.net/manualal/fr/function.file-exists.php
http://fr2.php.net/manual/fr/function.filesize.php
$filename = realpath($filename); doit alors etre supprimé du script.

Ce ne sont que des hypothèses, a toi de tester :ok:

vivlahorde
vivlahorde
Niveau 10
15 novembre 2007 à 19:15:21

tu pourrai pas me contacter par msn :svp:

erazor7c6@hotmail.fr

:merci:

ou sinon ca serait cool de me dire quel ligne modifié dans les trois fichiers,car j´ai l´erreur:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/144/sda/1/1/************/telecharger.php:9) in /mnt/144/sda/1/1/************/telecharger.php on line 11

la lgine 11 c´est: session_start();

deepblue
deepblue
Niveau 16
15 novembre 2007 à 19:38:37

session_start(), tout comme header(), ou meme setcookie(), doit etre utilisé avant tout code html ! Un simple saut de ligne gênere cette erreur :

ok :
"<?php
session_start();
?> "

ok :
"<?php session_start(); ?> "

pas ok :
"
<?php
session_start();
?> "

vivlahorde
vivlahorde
Niveau 10
15 novembre 2007 à 20:20:54

ca ne marche toujours pas,voici le code php de ma page index.php :d)

<?php
session_cache_expire(1);
session_start();

$_SESSION[´site´] = time();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
<html>
<head>
<title>Page de telechargements</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
Lancement du téléchargement :<br>

<p><a
href="telecharger.php?iddir=0&file=fichier.htm
l">Telecharger le fichier</a> // je précise que j´ai bien mis le bon dossier,et je l´ai défini dans télécharger,et le fichier "fichier.html" est dispo sur le serveur dans le dossier 0 comme indiqué
</body>
</html>

vivlahorde
vivlahorde
Niveau 10
15 novembre 2007 à 20:29:56

je précise que j´ai aussi cette erreur la:

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/144/sda/1/1/***********/sessions) in Unknown on line 0

Et aussi,à chaque fois il me dis qu´il y a une erreur sur la ligne de "session_start();" ,et pourtant je le met en début de page comme ceci:

<?php
session_cache_expire(1);
session_start();
$_SESSION[´site´] = time(60);
?>

vivlahorde
vivlahorde
Niveau 10
15 novembre 2007 à 20:44:22

:desole: pour le triple post :rouge:

mais en fait j´ai trouver,le problème viens de l´hebergeur free qui n´accepte apparement pas le session start? bizzare quand même...

j´ai essayer sur un autre serveur et ca passe sans problème :gni:

:d) Par contre,mes fichiers à télécharger sont stocker sur une dedibox (serveur accessible via ftp,pas encore de serveur emulé http en place) ET donc comment dois-je faire?

en fait j´ai essayer sur un autre de mes ftp (free) de mettre un dossier "0". Dans ce dossier j´ai mis un fichier "fichier.html"

comment dois-je renseigner mon champs dans le fichier "telecharger.php"

(PS: je précise que les trois fichier .php sont sur un autre serveur que les fichier a dl)

:d)

$dossiers[0] = ´
http://*********/0/fichier.html/&acute;;

et ca ne marche pas,pourquoi?

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment