AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein php: speedlimit und maskierter link
Thema durchsuchen
Ansicht
Themen-Optionen

php: speedlimit und maskierter link

Ein Thema von Jan · begonnen am 29. Sep 2005 · letzter Beitrag vom 3. Okt 2005
Antwort Antwort
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#1

php: speedlimit und maskierter link

  Alt 29. Sep 2005, 23:24
Hallo DPler!

Es stellt sich mir folgendes Problem:

Ich soll einen Downloadbereich schreiben, der folgende features besitzt:

1. Der Download soll in 3 Stufen in der Geschwindikeit drosselbar sein.

2. Der Link darf nicht benutzbar sein, ohne dass ein script vorher evaluiert ob du angemeldet bist oder nicht. (zum Schutz vor Direktverlinkung und zum Anmeldezwang) Daher darf der Direkte Link zu der Datei nicht erkennbar sein.

Ich habe versucht das problem durch 3 ftp accounts zu lösen und ein php skript, welches die Dateien von dem ftp-server an den user streamt, allerdings kriege ich das nicht hin.
Das öffnen des FTP servers kann ich und das schicken an den user, aber beides kombinieren, dazu fehlt mir der filestream vom ftp.

Kann mir da irgendjemand bei helfen?

Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: php: speedlimit und maskierter link

  Alt 30. Sep 2005, 08:33
Moin Jan,

Zitat von Jan:
2. Der Link darf nicht benutzbar sein, ohne dass ein script vorher evaluiert ob du angemeldet bist oder nicht. (zum Schutz vor Direktverlinkung und zum Anmeldezwang) Daher darf der Direkte Link zu der Datei nicht erkennbar sein.
hier kann ich dir nur die Loesung empfehlen, die auch ich verwende:
Du machst einen ordner "downloads" oder "files", in dem die Dateien landen. Das Verzeichnis wird mit einer .htaccess-Datei vor Zugriffen geschuetzt, somit kommt ohne php-Script schonmal keiner dran.
Im Script ueberpruefst du dann die Zugriffsrechte, setzt korrekte Header und schickst die Datei mit readfile() raus (wichtig: keinen "Location: Filename" machen). Fuer php gelten die .htaccess-Limits naemlich nicht

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: php: speedlimit und maskierter link

  Alt 30. Sep 2005, 13:33
Hallo alcaeus,
soweit war ich schon gediehen, allerdings bekomme ich auf die art und weise kein Speedlimit hin.
Aber ich denke ich habe da einen Lösungsansatz mit sleep und print mal sehen ob i ch das hinkriege.
Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#4

Re: php: speedlimit und maskierter link

  Alt 30. Sep 2005, 14:12
die downloads dürfen nicht direkt erreichbar sein.
dann baust du eine wrapper funktion welche wenn der aufruf richtig ist mit readfile die datei zurückliefert.

http://de3.php.net/manual/de/function.readfile.php

wenn du dann noch traffic shaping machen willst 2 möglichkeiten.

1) über linux iptables durch bestimmte ports routen.
2) readfile durch einen eigenen fopen konstrukt ersetzten und immer blöcke von 1k ausgeben mit warteschleife.
achtung - phpprogramme haben eine maximale ausführungszeit und outputbuffering darf nicht aktiviert sein.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#5

Re: php: speedlimit und maskierter link

  Alt 30. Sep 2005, 14:28
hab mal ne ref-lösung für dich geschrieben:

Code:
<?php
$filename = "benhur2-livecd-2.0.18.iso";
header("Content-Transfer-Encoding: binary");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=test.txt;");
header("Content-Length: ".@filesize($filename));

// timelimit aus!
set_time_limit(0);

// 1 kb pro sekunde

$handle = fopen ($filename, "r");
while (!feof($handle)) {
// hier das 1 kb
   $buffer = fgets($handle, 1024);
   echo $buffer;
// buffering umgehen
   ob_flush();
// hier die sekunde
   sleep(1);
}
fclose ($handle);

?>
genaueres shaping gekommst du mit dem usleep befehl hin - dieser ist aber nicht unter windows verfügbar!
wenn du das limit auf 0 setzt laeuft das script bis ende!
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: php: speedlimit und maskierter link

  Alt 30. Sep 2005, 16:11
Schöne Volleyvorlage!

Eine Anmerkung: bei Content-Disposition sollte man den Dateinamen in doppelte Anführungszeichen packen (falls mal Leer- oder Sonderzeichen drin sind).

Etwa so:
Code:
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: php: speedlimit und maskierter link

  Alt 30. Sep 2005, 22:50
Hallo generic!
Subba, genau so muss das!
Dankeschön!
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#8

Re: php: speedlimit und maskierter link

  Alt 3. Okt 2005, 00:56
das script hat aber noch einen kleinen nachteil. der ist mir gerade noch aufgefallen.
das script laeuft natuerlich dann so lange bis der download komplett waere!

d.h. auch wenn der browser oder downloader geschlossen wird dann laeuft das script weiter!
so zumindest auf einen server passiert auf welchen ich das getestet habe.
das war ein iis6 (win2003-web) und php als isapi installiert.

ach ja, der server lief dann auch mit 100% cpu last. ggf. funktioniert das sleep unter windows nicht sauber.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: php: speedlimit und maskierter link

  Alt 3. Okt 2005, 01:13
Hallo generic!
Ich nutze das ganze unter linux mit usleep. Da geht das ganze sehr gut.
Danke für den Hinweis allerdings!
Bin mal weiter php webcrawler basteln!
Gruß
Jan!
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz