Tout d'abord UN GRAND SALUT A LA COMMUNAUTE DEVELOPPEZ.COM
voila je travaille en ce moment sur un script php qui offre les fonctionnalités suivantes:
+Téléchargement de fichiers depuis votre serveur web
+Protection des chemins réels de fichiers.
+Le système est anti-spam avec support captcha.
+Quota basée sur le nombre de fichiers téléchargés,nombre de téléchargement simultanés,NOMBRE DE BYTES TELECHARGES.
+Possibilité de bannir une IP.
+Possibilité de suspendre le téléchargement pour un temps particulier.
+Fonction de reprise de téléchargement.
et bien d'autres fonctionnalités
mais il'ya une fonctionnalité que j'aimerai intégrer celle de:
+Protection anti-spam de la fonction reprise.
je m'explique,si vous voulez implémenter cette fonctionnalité,vous devez faire accepter votre serveur web les requêtes RANGE qui détermine le bloc de données du fichier qui est demandé ceci va laisser la voie libre au utilisateurs de demander n'importe quel RANGE même le range zéro (ie un nouveau téléchargement du même fichier) c-à-d consommer de ressources serveur en vain.Le problème persiste au niveau de la même IP.Ma solution consiste à sauvegarder le nombre de bytes que l'utilisateur a recu dans une base de données et de le comparer avec le RANGE demandé dans la prochaine reprise de téléchargement en utilisant un code du genre:
ET BAS IL SE TROMPE CAR ON ARRIVE TOUJOURS AVEC UNE ADDITION SUR LA TABLE !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 /********************************************************************* *IMPLEMANTING THE ANTI-SPAM-RESUME FEATURE. *********************************************************************/ if($range["start"]!=($dbtikt["down_range"])){//IF4446 //IF THE CLIENT DIDN'T REQUESTED THE CORRECT RANGE. exit(); //WE REFUSE THIS RANGE. }//IF4446 /********************************************************************/ Quelqu'un me dirai c'est facile,il suffit d'initialiser un compteur à zero,et de le faire augmenter par la taille du packet envoyée en utilisant un code du genre: /********************************************************************/ $length=0; //LENGTH OF SENDED DATA. while(!feof($dbfilehandle) && !connection_aborted()){//WHILE4403 //LOOP THROUGHT FILE. ob_start(); //TURN ON OUTPUT BUFFER. print(fread($dbfilehandle,$downpacket)); //ALLOCATE DATA INTO OUTPUT BUFFER. ob_end_flush(); //SEND DATA TO THE CLIENT AND TURN OFF OUTPUT BUFFER. if($downspeed>0){//IF4443 //THE SPEED IS GREATER THAN ZERO. usleep($downdelay); //DELAY TIME BETWEEN PACKETS. }//IF4443 $length+=$downpacket; //THE TOTAL BYTES SENT. }//WHILE4403 /********************************************************************/
$length est plus grande que le prochain range demandé.
C'EST INCROYABLE !!!mais il doit y avoir une explication.
CONCLUSION:je charche un code fiable qui me permet de calculer le NOMBRE DE BYTES TELECHARGES PAR L'UTILISATEUR
Je vous remercie d'avance.
Partager