[php] Anti deeplink systeem met kuren

Pagina: 1
Acties:
  • 360 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 19-09 21:49

BierPul

2 koffie graag

Topicstarter
Ik ben bezig een kwakkie videos online te zetten.

Ik wil dat alleen direct vanaf de site deze video's aangesproken kunnen worden.

Ik had dus bedacht dat ik bij start een SESSION start met daarin een key en daarop mooi kon valideren. Wat dat betreft niks aan de hand.

Het probleem is dat als ik het bestand wat de video terug zou moeten geven aanspreek ik geen video krijg :(

Ik heb de video zelf buiten de web root geplaatst en haal die als volgt op

PHP:
1
2
3
4
5
6
7
8
if(validKey($_SESSION['key'])) {
        Header("Content-type: video/x-ms-wmv");
        Header("Cache-Control: no-cache, must-revalidate");
        $fn=fopen("/www/aaasites/videos/even_stil.wmv","r");
        fpassthru($fn);
    } else {
        die("Geen geldige sleutel....");
    }


Ik roep dan in mn embed code voor Mediaplayer het PHP bestand in maar krijg geen output terug :(

Ja man


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 18:02
Je wilt binaire data doorzenden, dus probeer mode "rb" eens ipv "r".

www.php.net/fopen

Verbouwing


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Wat krijg je dan terug? Niet gewoon je die() melding? Je mist namelijk een session_start aanroep.

Acties:
  • 0 Henk 'm!

Verwijderd

Klopt je bestandsnaam wel?

Moet dat niet /var/www/... zijn?

Overigens klopt die passhtru ook niet. Passhtru is bedoeld om de output van een commando door te geven. Je kunt passthru bij mijn weten niet gebruiken zoals jij nu doet.

is niet waar want er staat niet 'passthru' maar 'fpassthru'. Negeer deze man met poep in z'n ogen dus maar :)

PHP:
1
2
3
4
5
6
7
Header("Content-type: video/x-ms-wmv"); 
Header("Cache-Control: no-cache, must-revalidate"); 
$fn=fopen("/www/aaasites/videos/even_stil.wmv","r"); 
while ( !feof( $fn ) )
  { $result += fgets($fn,1);
  }
echo $result


Mits je pad juist is, moet bovenstaande werken.

[ Voor 119% gewijzigd door Verwijderd op 28-06-2005 00:18 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op dinsdag 28 juni 2005 @ 00:14:
Overigens klopt die passhtru ook niet. Passhtru is bedoeld om de output van een commando door te geven. Je kunt passthru bij mijn weten niet gebruiken zoals jij nu doet.
jawel hoor:
http://nl2.php.net/manual/en/function.fpassthru.php

alleen, wellicht moet die embedded player de "content-length" hebben van te voren

[ Voor 12% gewijzigd door Erkens op 28-06-2005 00:18 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Aargh.. even over de f heen gekeken.. excuses, mea culpa :)
alleen, wellicht moet die embedded player de "content-length" hebben van te voren
Als je IE en mediaspeler gebruikt, is dit inderdaad het geval.

PHP:
1
2
3
4
5
6
7
8
Header("Content-type: video/x-ms-wmv");  
Header("Cache-Control: no-cache, must-revalidate");  
$fn=fopen("/www/aaasites/videos/even_stil.wmv","r");  
while ( !feof( $fn ) ) 
  { $result += fgets($fn,1); 
  } 
header("Content-length:" . sizeof($result));
echo $result

[ Voor 101% gewijzigd door Verwijderd op 28-06-2005 00:21 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op dinsdag 28 juni 2005 @ 00:18:
Aargh.. even over de f heen gekeken.. excuses, mea culpa :)


[...]


Als je IE en mediaspeler gebruikt, is dit inderdaad het geval.

PHP:
1
2
3
4
5
6
7
8
Header("Content-type: video/x-ms-wmv");  
Header("Cache-Control: no-cache, must-revalidate");  
$fn=fopen("/www/aaasites/videos/even_stil.wmv","r");  
while ( !feof( $fn ) ) 
  { $result += fgets($fn,1); 
  } 
header("Content-length:" . sizeof($result));
echo $result
alleen even opletten dat je niet de file gaat optellen :)
dus .= gebruiken ipv +=
* Erkens struikelt ook geregeld over dat punt met php, dat krijg je als je veel met andere talen bezig bent 8)7

edit:
hoewel je natuurlijk ook gewoon filesize() kan gebruiken ;)

[ Voor 10% gewijzigd door Erkens op 28-06-2005 00:35 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Zeg, kap eens met dat gelijk hebben ja :)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op dinsdag 28 juni 2005 @ 00:38:
Zeg, kap eens met dat gelijk hebben ja :)
offtopic:
sorry, zal het niet meer doen :+

Acties:
  • 0 Henk 'm!

Verwijderd

Paar kleine opmerkingen..
- waarom zou je eerst alle data in een buffer stoppen en dan ineens versturen
- het is erg ranzig om fgets te gebruiken op een binary file, fread is daar beter voor omdat die niet stopt bij een newline

PHP:
1
2
3
4
5
6
7
8
9
10
<?
Header("Content-type: video/x-ms-wmv");  
Header("Cache-Control: no-cache, must-revalidate");  
$fn=fopen("/www/aaasites/videos/even_stil.wmv","r");  
$stats=fstat($fn);
header("Content-length:" . $stats["size"]);
while ( !feof( $fn ) ) 
  print fread($fn,4096);
fclose($fn);
?>


en voor Mithrandir.. aan het path te zien gaat het om een niet-windows server, dus dan is er geen verschil tussen r en rb.

Acties:
  • 0 Henk 'm!

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
waarom een no-cache voor statische videoinformatie? Verspil je graag bandbreedte?

Acties:
  • 0 Henk 'm!

Verwijderd

HunterPro schreef op dinsdag 28 juni 2005 @ 02:34:
waarom een no-cache voor statische videoinformatie? Verspil je graag bandbreedte?
Zeker weten dat het niet in een cache van een proxy komt, gok ik?

Acties:
  • 0 Henk 'm!

  • PanMan
  • Registratie: November 1999
  • Laatst online: 18-09 22:50

PanMan

Spun!

Overigens kan je, als je gewoon de hele file wilt doorsturen, ook eenvoudig readfile() gebruiken, ipv de f... functies...

Where a calculator on the ENIAC is equipped with 18,000 vacuum tubes and weighs 30 tons, computers in the future may have only 1,000 vacuum tubes and weigh only 1.5 tons.
– Popular Mechanics, March 1949


Acties:
  • 0 Henk 'm!

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
Verwijderd schreef op dinsdag 28 juni 2005 @ 09:38:
[...]


Zeker weten dat het niet in een cache van een proxy komt, gok ik?
ja, en waar is een proxy voor? :)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

HunterPro schreef op dinsdag 28 juni 2005 @ 14:37:
[...]

ja, en waar is een proxy voor? :)
om data te cachen ja, maar soms wil je data niet cachen, bijvoorbeeld als het achter een login staat

Acties:
  • 0 Henk 'm!

  • BreeeZe
  • Registratie: Februari 2000
  • Laatst online: 19-09 13:42

BreeeZe

Devt

Waarom gebruik je geen .htaccess :? of draai je niet op apache :?

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

BreeeZe schreef op dinsdag 28 juni 2005 @ 14:53:
Waarom gebruik je geen .htaccess :? of draai je niet op apache :?
Omdat je met .htaccess geen sessie's kan controleren?

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • BreeeZe
  • Registratie: Februari 2000
  • Laatst online: 19-09 13:42

BreeeZe

Devt

LuCarD schreef op dinsdag 28 juni 2005 @ 14:54:
[...]

Omdat je met .htaccess geen sessie's kan controleren?
True, maar ik begrijp niet uit de TS dat het persee nodig is, alleen dat hij het als trukje gebruikt :?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Als je met .htaccess werkt, dan werk je automatisch met de referer.
Iedereen weet/hoort te weten dat de referer niet altijd wordt doorgestuurd, waardoor je niet altijd zeker bent of er sprake is van deeplinking of niet.
Door gebruik te maken van een sessie kan je dit makkelijker controleren. Je kan zelfs ervoor zorgen dat je enkel dat plaatje/filmpje kan zien zodra je die ene pagina ook binnen een bepaalde tijd had bekeken etc. Je bent dus veel flexibeler en hebt een grotere controle over de data.

Acties:
  • 0 Henk 'm!

  • BreeeZe
  • Registratie: Februari 2000
  • Laatst online: 19-09 13:42

BreeeZe

Devt

Erkens schreef op dinsdag 28 juni 2005 @ 15:02:
Als je met .htaccess werkt, dan werk je automatisch met de referer.
Iedereen weet/hoort te weten dat de referer niet altijd wordt doorgestuurd, waardoor je niet altijd zeker bent of er sprake is van deeplinking of niet.
Door gebruik te maken van een sessie kan je dit makkelijker controleren. Je kan zelfs ervoor zorgen dat je enkel dat plaatje/filmpje kan zien zodra je die ene pagina ook binnen een bepaalde tijd had bekeken etc. Je bent dus veel flexibeler en hebt een grotere controle over de data.
Thanx voor de uitleg, weer wat nuttigs geleerd :)

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

BreeeZe schreef op dinsdag 28 juni 2005 @ 15:05:
[...]


Thanx voor de uitleg, weer wat nuttigs geleerd :)
Daarnaast zou je een referrer ook kunnen vervalsen, het word tenslotte door de client verstuurt.

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

Verwijderd

/me vraagt zich af of het probleem van TS al is opgelost? En wat het probleem was?

Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 19-09 21:49

BierPul

2 koffie graag

Topicstarter
Jep mn probleem lijkt inderdaad opgelost.

De video werdt gewoon niet geladen :( en nu wel alleen lijkt het dat Firefox dienst weigert :(

Ik ga bovenstaanden even goed doorlezen (was even niet in de mogelijkheid te reageren ;) )

to be continued :)

Ja man


Acties:
  • 0 Henk 'm!

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Zorg wel dat je je max execution limit omhoog gooit voor mensen met een trage verbinding of bij grote filmpjes.

Anders houdt de stream mooi op na een aantal seconden pompen ;) (Standaard 30 secs meen ik)

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Wat is er overigens mis met readfile() ?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf


Acties:
  • 0 Henk 'm!

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
PHP:
1
passthru("cat /www/aaasites/videos/even_stil.wmv");


?

Acties:
  • 0 Henk 'm!

Verwijderd

Graveheart schreef op donderdag 30 juni 2005 @ 11:08:
PHP:
1
passthru("cat /www/aaasites/videos/even_stil.wmv");


?
De fpassthru uit de TS is dan netter, aangezien je code dan niet vast zit aan een OS.
Pagina: 1